SpyBara
Go Premium

Documentation 2026-05-02 18:14 UTC to 2026-05-04 22:58 UTC

98 files changed +46,451 −0. View all changes and history on the product overview
2026
Sun 31 06:39 Sat 30 06:23 Fri 29 06:38 Thu 28 06:37 Wed 27 06:42 Tue 26 06:33 Sun 24 06:25 Sat 23 06:18 Fri 22 06:33 Thu 21 06:36 Wed 20 06:35 Tue 19 06:34 Mon 18 23:59 Sun 17 01:01 Fri 15 22:58 Thu 14 17:02 Wed 13 23:01 Tue 12 22:57 Mon 11 23:00 Sun 10 23:03 Sat 9 04:57 Fri 8 22:00 Thu 7 22:59 Tue 5 23:00 Mon 4 22:58 Sat 2 18:14 Fri 1 18:19

admin-setup.md +132 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code für Ihre Organisation einrichten

6 

7> Eine Entscheidungskarte für Administratoren, die Claude Code bereitstellen, mit Abdeckung von API-Anbietern, verwalteten Einstellungen, Richtliniendurchsetzung, Nutzungsüberwachung und Datenbehandlung.

8 

9Claude Code erzwingt Organisationsrichtlinien durch verwaltete Einstellungen, die Vorrang vor lokalen Entwicklerkonfigurationen haben. Sie stellen diese Einstellungen über die Claude-Administratorkonsole, Ihr Mobile-Device-Management-System (MDM) oder eine Datei auf der Festplatte bereit. Die Einstellungen steuern, auf welche Tools, Befehle, Server und Netzwerkziele Claude zugreifen kann.

10 

11Diese Seite führt Sie durch die Bereitstellungsentscheidungen in der richtigen Reihenfolge. Jede Zeile verlinkt auf den Abschnitt unten und auf die Referenzseite für diesen Bereich.

12 

13<Note>

14 SSO, SCIM-Bereitstellung und Sitzplatzzuweisung werden auf Claude-Kontoebene konfiguriert. Siehe das [Claude Enterprise Administrator Guide](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide) und [Sitzplatzzuweisung](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan) für diese Schritte.

15</Note>

16 

17| Entscheidung | Was Sie wählen | Referenz |

18| :---------------------------------------------------------------------------------------- | :-------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ |

19| [API-Anbieter wählen](#choose-your-api-provider) | Wo Claude Code sich authentifiziert und wie es abgerechnet wird | [Authentifizierung](/de/authentication), [Bedrock](/de/amazon-bedrock), [Vertex AI](/de/google-vertex-ai), [Foundry](/de/microsoft-foundry) |

20| [Entscheiden Sie, wie Einstellungen Geräte erreichen](#decide-how-settings-reach-devices) | Wie verwaltete Richtlinien Entwicklermaschinen erreichen | [Server-verwaltete Einstellungen](/de/server-managed-settings), [Einstellungsdateien](/de/settings#settings-files) |

21| [Entscheiden Sie, was durchgesetzt werden soll](#decide-what-to-enforce) | Welche Tools, Befehle und Integrationen zulässig sind | [Berechtigungen](/de/permissions), [Sandboxing](/de/sandboxing) |

22| [Nutzungssichtbarkeit einrichten](#set-up-usage-visibility) | Wie Sie Ausgaben und Akzeptanz verfolgen | [Analytik](/de/analytics), [Überwachung](/de/monitoring-usage), [Kosten](/de/costs) |

23| [Datenbehandlung überprüfen](#review-data-handling) | Datenspeicherung und Compliance-Position | [Datennutzung](/de/data-usage), [Sicherheit](/de/security) |

24 

25## API-Anbieter wählen

26 

27Claude Code verbindet sich mit Claude über einen von mehreren API-Anbietern. Ihre Wahl beeinflusst die Abrechnung, die Authentifizierung und welche Compliance-Position Sie erben.

28 

29| Anbieter | Wählen Sie dies, wenn |

30| :---------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |

31| Claude für Teams / Enterprise | Sie möchten Claude Code und claude.ai unter einem Pro-Sitz-Abonnement ohne Infrastruktur zum Ausführen. Dies ist die Standardempfehlung. |

32| Claude Console | Sie sind API-first oder möchten Pay-as-you-go-Abrechnung |

33| Amazon Bedrock | Sie möchten vorhandene AWS-Compliance-Kontrollen und Abrechnung erben |

34| Google Vertex AI | Sie möchten vorhandene GCP-Compliance-Kontrollen und Abrechnung erben |

35| Microsoft Foundry | Sie möchten vorhandene Azure-Compliance-Kontrollen und Abrechnung erben |

36 

37Für den vollständigen Anbietervergleich mit Authentifizierung, Regionen und Funktionsparität siehe [Übersicht zur Enterprise-Bereitstellung](/de/third-party-integrations). Die Auth-Einrichtung für jeden Anbieter finden Sie unter [Authentifizierung](/de/authentication).

38 

39Proxy- und Firewall-Anforderungen in [Netzwerkkonfiguration](/de/network-config) gelten unabhängig vom Anbieter. Wenn Sie einen einzelnen Endpunkt vor mehreren Anbietern oder zentralisierte Anforderungsprotokollierung möchten, siehe [LLM-Gateway](/de/llm-gateway).

40 

41## Entscheiden Sie, wie Einstellungen Geräte erreichen

42 

43Verwaltete Einstellungen definieren Richtlinien, die Vorrang vor lokalen Entwicklerkonfigurationen haben. Claude Code sucht an vier Stellen danach und verwendet die erste, die es auf einem bestimmten Gerät findet.

44 

45| Mechanismus | Lieferung | Priorität | Plattformen |

46| :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- | :------------- |

47| Server-verwaltet | Claude.ai-Administratorkonsole | Höchste | Alle |

48| plist / Registry-Richtlinie | macOS: `com.anthropic.claudecode` plist<br />Windows: `HKLM\SOFTWARE\Policies\ClaudeCode` | Hoch | macOS, Windows |

49| Dateibasiert verwaltet | macOS: `/Library/Application Support/ClaudeCode/managed-settings.json`<br />Linux und WSL: `/etc/claude-code/managed-settings.json`<br />Windows: `C:\Program Files\ClaudeCode\managed-settings.json` | Mittel | Alle |

50| Windows-Benutzer-Registry | `HKCU\SOFTWARE\Policies\ClaudeCode` | Niedrigste | Nur Windows |

51 

52Server-verwaltete Einstellungen erreichen Geräte zum Authentifizierungszeitpunkt und werden während aktiver Sitzungen stündlich aktualisiert, ohne dass eine Endpunkt-Infrastruktur erforderlich ist. Sie erfordern einen Claude für Teams oder Enterprise-Plan, daher benötigen Bereitstellungen auf anderen Anbietern stattdessen einen der dateibasierten oder Betriebssystem-Mechanismen.

53 

54Wenn Ihre Organisation mehrere Anbieter mischt, konfigurieren Sie [server-verwaltete Einstellungen](/de/server-managed-settings) für Claude.ai-Benutzer plus ein [dateibasiertes oder plist/Registry-Fallback](/de/settings#settings-files), damit andere Benutzer immer noch verwaltete Richtlinien erhalten.

55 

56Die plist- und HKLM-Registry-Speicherorte funktionieren mit jedem Anbieter und widerstehen Manipulationen, da sie Administratorrechte zum Schreiben erfordern. Die Windows-Benutzer-Registry unter HKCU ist ohne Erhöhung beschreibbar, daher sollten Sie sie eher als praktischen Standard als als Durchsetzungskanal behandeln.

57 

58Standardmäßig liest WSL nur den Linux-Dateipfad unter `/etc/claude-code`. Um Ihre Windows-Registry und `C:\Program Files\ClaudeCode`-Richtlinie auf WSL auf demselben Computer zu erweitern, setzen Sie [`wslInheritsWindowsSettings: true`](/de/settings#available-settings) in einer dieser nur für Administratoren zugänglichen Windows-Quellen.

59 

60Welcher Mechanismus Sie auch wählen, verwaltete Werte haben Vorrang vor Benutzer- und Projekteinstellungen. Array-Einstellungen wie `permissions.allow` und `permissions.deny` führen Einträge aus allen Quellen zusammen, sodass Entwickler verwaltete Listen erweitern, aber nicht daraus entfernen können.

61 

62Siehe [Server-verwaltete Einstellungen](/de/server-managed-settings) und [Einstellungsdateien und Priorität](/de/settings#settings-files).

63 

64## Entscheiden Sie, was durchgesetzt werden soll

65 

66Verwaltete Einstellungen können Tools sperren, Sandbox-Ausführung, MCP-Server und Plugin-Quellen einschränken und steuern, welche Hooks ausgeführt werden. Jede Zeile ist eine Kontrollfläche mit den Einstellungsschlüsseln, die sie antreiben.

67 

68| Kontrolle | Was es tut | Wichtige Einstellungen |

69| :--------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------- |

70| [Berechtigungsregeln](/de/permissions) | Bestimmte Tools und Befehle zulassen, fragen oder ablehnen | `permissions.allow`, `permissions.deny` |

71| [Berechtigungssperre](/de/permissions#managed-only-settings) | Nur verwaltete Berechtigungsregeln gelten; deaktivieren Sie `--dangerously-skip-permissions` | `allowManagedPermissionRulesOnly`, `permissions.disableBypassPermissionsMode` |

72| [Sandboxing](/de/sandboxing) | Isolierung auf Betriebssystemebene des Dateisystems und Netzwerks mit Domain-Allowlists | `sandbox.enabled`, `sandbox.network.allowedDomains` |

73| [Verwaltete Richtlinie CLAUDE.md](/de/memory#deploy-organization-wide-claude-md) | Organisationsweite Anweisungen, die in jeder Sitzung geladen werden, können nicht ausgeschlossen werden | Datei im verwalteten Richtlinienpfad |

74| [MCP-Server-Kontrolle](/de/mcp#managed-mcp-configuration) | Einschränken, welche MCP-Server Benutzer hinzufügen oder verbinden können | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly` |

75| [Plugin-Marketplace-Kontrolle](/de/plugin-marketplaces#managed-marketplace-restrictions) | Einschränken, von welchen Marketplace-Quellen Benutzer hinzufügen und installieren können | `strictKnownMarketplaces`, `blockedMarketplaces` |

76| [Hook-Einschränkungen](/de/settings#hook-configuration) | Nur verwaltete Hooks werden geladen; HTTP-Hook-URLs einschränken | `allowManagedHooksOnly`, `allowedHttpHookUrls` |

77| [Versionsuntergrenze](/de/settings) | Verhindern Sie, dass Auto-Update unter ein organisationsweites Minimum installiert wird | `minimumVersion` |

78 

79Berechtigungsregeln und Sandboxing decken verschiedene Ebenen ab. Das Ablehnen von WebFetch blockiert Claudes Fetch-Tool, aber wenn Bash zulässig ist, können `curl` und `wget` immer noch jede URL erreichen. Sandboxing schließt diese Lücke mit einer auf Betriebssystemebene durchgesetzten Netzwerk-Domain-Allowlist.

80 

81Für das Bedrohungsmodell, das diese Kontrollen verteidigen, siehe [Sicherheit](/de/security).

82 

83## Nutzungssichtbarkeit einrichten

84 

85Wählen Sie die Überwachung basierend auf dem, was Sie melden müssen.

86 

87| Fähigkeit | Was Sie erhalten | Verfügbarkeit | Wo Sie anfangen |

88| :------------------ | :----------------------------------------------------- | :------------ | :------------------------------------------ |

89| Nutzungsüberwachung | OpenTelemetry-Export von Sitzungen, Tools und Tokens | Alle Anbieter | [Nutzungsüberwachung](/de/monitoring-usage) |

90| Analytik-Dashboard | Pro-Benutzer-Metriken, Beitragsverfolgung, Leaderboard | Nur Anthropic | [Analytik](/de/analytics) |

91| Kostenverfolgung | Ausgabenlimits, Ratenlimits und Nutzungszuordnung | Nur Anthropic | [Kosten](/de/costs) |

92 

93Cloud-Anbieter stellen Ausgaben über AWS Cost Explorer, GCP Billing oder Azure Cost Management bereit. Claude für Teams und Enterprise-Pläne enthalten ein Nutzungs-Dashboard unter [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code).

94 

95## Datenbehandlung überprüfen

96 

97Bei Team-, Enterprise-, Claude API- und Cloud-Provider-Plänen trainiert Anthropic keine Modelle auf Ihrem Code oder Ihren Prompts. Ihr API-Anbieter bestimmt die Aufbewahrung und Compliance-Position.

98 

99| Thema | Was Sie wissen sollten | Wo Sie anfangen |

100| :------------------------ | :------------------------------------------------------------------------------------------- | :--------------------------------------------- |

101| Datennutzungsrichtlinie | Was Anthropic erfasst, wie lange es aufbewahrt wird, was niemals zum Training verwendet wird | [Datennutzung](/de/data-usage) |

102| Zero Data Retention (ZDR) | Nichts wird nach Abschluss der Anfrage gespeichert. Verfügbar auf Claude für Enterprise | [Zero Data Retention](/de/zero-data-retention) |

103| Sicherheitsarchitektur | Netzwerkmodell, Verschlüsselung, Authentifizierung, Audit-Trail | [Sicherheit](/de/security) |

104 

105Wenn Sie Anfrage-Level-Audit-Protokollierung benötigen oder Datenverkehr nach Datensensibilität weiterleiten möchten, platzieren Sie ein [LLM-Gateway](/de/llm-gateway) zwischen Entwicklern und Ihrem Anbieter. Für behördliche Anforderungen und Zertifizierungen siehe [Rechtliche Angelegenheiten und Compliance](/de/legal-and-compliance).

106 

107## Überprüfen und Onboarding

108 

109Nach der Konfiguration verwalteter Einstellungen lassen Sie einen Entwickler `/status` in Claude Code ausführen. Die Ausgabe enthält eine Zeile, die mit `Enterprise managed settings` beginnt, gefolgt von der Quelle in Klammern, eine von `(remote)`, `(plist)`, `(HKLM)`, `(HKCU)` oder `(file)`. Siehe [Aktive Einstellungen überprüfen](/de/settings#verify-active-settings).

110 

111Teilen Sie diese Ressourcen, um Entwicklern den Einstieg zu erleichtern:

112 

113* [Schnellstart](/de/quickstart): Walkthrough der ersten Sitzung von der Installation bis zur Arbeit mit einem Projekt

114* [Häufige Workflows](/de/common-workflows): Muster für alltägliche Aufgaben wie Code-Review, Refactoring und Debugging

115* [Claude 101](https://anthropic.skilljar.com/claude-101) und [Claude Code in Action](https://anthropic.skilljar.com/claude-code-in-action): Selbstgesteuerte Anthropic Academy-Kurse

116 

117Bei Anmeldeproblemen verweisen Sie Entwickler auf [Authentifizierungs-Fehlerbehebung](/de/troubleshoot-install#login-and-authentication). Die häufigsten Lösungen sind:

118 

119* Führen Sie `/logout` und dann `/login` aus, um Konten zu wechseln

120* Führen Sie `claude update` aus, wenn die Enterprise-Auth-Option fehlt

121* Starten Sie das Terminal nach dem Update neu

122 

123Wenn ein Entwickler „You haven't been added to your organization yet" sieht, ist sein Sitzplatz nicht für Claude Code-Zugriff enthalten und muss in der Administratorkonsole aktualisiert werden.

124 

125## Nächste Schritte

126 

127Mit ausgewähltem Anbieter und Liefermechanismus fahren Sie mit der detaillierten Konfiguration fort:

128 

129* [Server-verwaltete Einstellungen](/de/server-managed-settings): Liefern Sie verwaltete Richtlinien über die Claude-Administratorkonsole

130* [Einstellungsreferenz](/de/settings): Jeder Einstellungsschlüssel, Dateispeicherort und Prioritätsregel

131* [Amazon Bedrock](/de/amazon-bedrock), [Google Vertex AI](/de/google-vertex-ai), [Microsoft Foundry](/de/microsoft-foundry): Anbieter-spezifische Bereitstellung

132* [Claude Enterprise Administrator Guide](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide): SSO, SCIM, Sitzplatzverwaltung und Rollout-Playbook

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code-Funktionen im SDK verwenden

6 

7> Laden Sie Projektanweisungen, Skills, Hooks und andere Claude Code-Funktionen in Ihre SDK-Agenten.

8 

9Das Agent SDK basiert auf der gleichen Grundlage wie Claude Code, was bedeutet, dass Ihre SDK-Agenten Zugriff auf die gleichen dateisystemgestützten Funktionen haben: Projektanweisungen (`CLAUDE.md` und Regeln), Skills, Hooks und mehr.

10 

11Wenn Sie `settingSources` weglassen, liest `query()` die gleichen Dateisystemeinstellungen wie die Claude Code CLI: Benutzer-, Projekt- und lokale Einstellungen, CLAUDE.md-Dateien und `.claude/`-Skills, Agenten und Befehle. Um ohne diese auszuführen, übergeben Sie `settingSources: []`, was den Agenten auf das beschränkt, was Sie programmgesteuert konfigurieren. Verwaltete Richtlinieneinstellungen und die globale `~/.claude.json`-Konfiguration werden unabhängig von dieser Option gelesen. Siehe [Was settingSources nicht kontrolliert](#what-settingsources-does-not-control).

12 

13Für einen konzeptionellen Überblick über das, was jede Funktion tut und wann sie verwendet werden sollte, siehe [Claude Code erweitern](/de/features-overview).

14 

15## Dateisystemeinstellungen mit settingSources kontrollieren

16 

17Die Einstellungsquellen-Option ([`setting_sources`](/de/agent-sdk/python#claude-agent-options) in Python, [`settingSources`](/de/agent-sdk/typescript#setting-source) in TypeScript) kontrolliert, welche dateisystemgestützten Einstellungen das SDK lädt. Übergeben Sie eine explizite Liste, um sich für bestimmte Quellen anzumelden, oder übergeben Sie ein leeres Array, um Benutzer-, Projekt- und lokale Einstellungen zu deaktivieren.

18 

19Dieses Beispiel lädt sowohl Benutzer- als auch Projektebenen-Einstellungen, indem `settingSources` auf `["user", "project"]` gesetzt wird:

20 

21<CodeGroup>

22 ```python Python theme={null}

23 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage

24 

25 async for message in query(

26 prompt="Help me refactor the auth module",

27 options=ClaudeAgentOptions(

28 # "user" loads from ~/.claude/, "project" loads from ./.claude/ in cwd.

29 # Together they give the agent access to CLAUDE.md, skills, hooks, and

30 # permissions from both locations.

31 setting_sources=["user", "project"],

32 allowed_tools=["Read", "Edit", "Bash"],

33 ),

34 ):

35 if isinstance(message, AssistantMessage):

36 for block in message.content:

37 if hasattr(block, "text"):

38 print(block.text)

39 if isinstance(message, ResultMessage) and message.subtype == "success":

40 print(f"\nResult: {message.result}")

41 ```

42 

43 ```typescript TypeScript theme={null}

44 import { query } from "@anthropic-ai/claude-agent-sdk";

45 

46 for await (const message of query({

47 prompt: "Help me refactor the auth module",

48 options: {

49 // "user" loads from ~/.claude/, "project" loads from ./.claude/ in cwd.

50 // Together they give the agent access to CLAUDE.md, skills, hooks, and

51 // permissions from both locations.

52 settingSources: ["user", "project"],

53 allowedTools: ["Read", "Edit", "Bash"]

54 }

55 })) {

56 if (message.type === "assistant") {

57 for (const block of message.message.content) {

58 if (block.type === "text") console.log(block.text);

59 }

60 }

61 if (message.type === "result" && message.subtype === "success") {

62 console.log(`\nResult: ${message.result}`);

63 }

64 }

65 ```

66</CodeGroup>

67 

68Jede Quelle lädt Einstellungen von einem bestimmten Ort, wobei `<cwd>` das Arbeitsverzeichnis ist, das Sie über die `cwd`-Option übergeben (oder das aktuelle Verzeichnis des Prozesses, falls nicht gesetzt). Für die vollständige Typdefinition siehe [`SettingSource`](/de/agent-sdk/typescript#setting-source) (TypeScript) oder [`SettingSource`](/de/agent-sdk/python#setting-source) (Python).

69 

70| Quelle | Was wird geladen | Ort |

71| :---------- | :---------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

72| `"project"` | Projekt-CLAUDE.md, `.claude/rules/*.md`, Projekt-Skills, Projekt-Hooks, Projekt-`settings.json` | `<cwd>/.claude/` und jedes übergeordnete Verzeichnis bis zur Dateisystemwurzel (Stopp, wenn ein `.claude/` gefunden wird oder keine weiteren übergeordneten Verzeichnisse vorhanden sind) |

73| `"user"` | Benutzer-CLAUDE.md, `~/.claude/rules/*.md`, Benutzer-Skills, Benutzereinstellungen | `~/.claude/` |

74| `"local"` | CLAUDE.local.md (gitignoriert), `.claude/settings.local.json` | `<cwd>/` |

75 

76Das Weglassen von `settingSources` entspricht `["user", "project", "local"]`.

77 

78Die `cwd`-Option bestimmt, wo das SDK nach Projekteinstellungen sucht. Wenn weder `cwd` noch eines seiner übergeordneten Verzeichnisse einen `.claude/`-Ordner enthält, werden Funktionen auf Projektebene nicht geladen.

79 

80### Was settingSources nicht kontrolliert

81 

82`settingSources` umfasst Benutzer-, Projekt- und lokale Einstellungen. Einige Eingaben werden unabhängig von ihrem Wert gelesen:

83 

84| Eingabe | Verhalten | Zum Deaktivieren |

85| :-------------------------------------------------------------------- | :---------------------------------------------- | :------------------------------------------------------------------------------------------------------- |

86| Verwaltete Richtlinieneinstellungen | Immer geladen, wenn auf dem Host vorhanden | Entfernen Sie die verwaltete Einstellungsdatei |

87| `~/.claude.json` globale Konfiguration | Immer gelesen | Verschieben Sie mit `CLAUDE_CONFIG_DIR` in `env` |

88| Automatisches Gedächtnis unter `~/.claude/projects/<project>/memory/` | Standardmäßig in die Systemaufforderung geladen | Setzen Sie `autoMemoryEnabled: false` in Einstellungen oder `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` in `env` |

89 

90<Warning>

91 Verlassen Sie sich nicht auf Standard-`query()`-Optionen für Multi-Tenant-Isolation. Da die obigen Eingaben unabhängig von `settingSources` gelesen werden, kann ein SDK-Prozess Host-Level-Konfiguration und Pro-Verzeichnis-Speicher aufgreifen. Für Multi-Tenant-Bereitstellungen führen Sie jeden Mandanten in seinem eigenen Dateisystem aus und setzen Sie `settingSources: []` plus `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` in `env`. Siehe [Sichere Bereitstellung](/de/agent-sdk/secure-deployment).

92</Warning>

93 

94## Projektanweisungen (CLAUDE.md und Regeln)

95 

96`CLAUDE.md`-Dateien und `.claude/rules/*.md`-Dateien geben Ihrem Agenten persistenten Kontext über Ihr Projekt: Codierungskonventionen, Build-Befehle, Architekturentscheidungen und Anweisungen. Wenn `settingSources` `"project"` enthält (wie im obigen Beispiel), lädt das SDK diese Dateien beim Sitzungsstart in den Kontext. Der Agent folgt dann Ihren Projektkonventionen, ohne dass Sie sie in jedem Prompt wiederholen müssen.

97 

98### CLAUDE.md-Ladeorte

99 

100| Ebene | Ort | Wann geladen |

101| :------------------------------------ | :--------------------------------------------------- | :------------------------------------------------------------------------------------------------------------ |

102| Projekt (Wurzel) | `<cwd>/CLAUDE.md` oder `<cwd>/.claude/CLAUDE.md` | `settingSources` enthält `"project"` |

103| Projektregeln | `<cwd>/.claude/rules/*.md` | `settingSources` enthält `"project"` |

104| Projekt (übergeordnete Verzeichnisse) | `CLAUDE.md`-Dateien in Verzeichnissen über `cwd` | `settingSources` enthält `"project"`, geladen beim Sitzungsstart |

105| Projekt (Unterverzeichnisse) | `CLAUDE.md`-Dateien in Unterverzeichnissen von `cwd` | `settingSources` enthält `"project"`, bei Bedarf geladen, wenn der Agent eine Datei in diesem Unterbaum liest |

106| Lokal (gitignoriert) | `<cwd>/CLAUDE.local.md` | `settingSources` enthält `"local"` |

107| Benutzer | `~/.claude/CLAUDE.md` | `settingSources` enthält `"user"` |

108| Benutzerregeln | `~/.claude/rules/*.md` | `settingSources` enthält `"user"` |

109 

110Alle Ebenen sind additiv: Wenn sowohl Projekt- als auch Benutzer-CLAUDE.md-Dateien vorhanden sind, sieht der Agent beide. Es gibt keine harte Vorrangregel zwischen Ebenen; wenn Anweisungen in Konflikt geraten, hängt das Ergebnis davon ab, wie Claude sie interpretiert. Schreiben Sie nicht in Konflikt stehende Regeln, oder geben Sie den Vorrang explizit in der spezifischeren Datei an („Diese Projektanweisungen überschreiben alle in Konflikt stehenden Benutzer-Level-Standardwerte").

111 

112<Tip>

113 Sie können auch Kontext direkt über `systemPrompt` injizieren, ohne CLAUDE.md-Dateien zu verwenden. Siehe [Systemaufforderungen ändern](/de/agent-sdk/modifying-system-prompts). Verwenden Sie CLAUDE.md, wenn Sie den gleichen Kontext zwischen interaktiven Claude Code-Sitzungen und Ihren SDK-Agenten teilen möchten.

114</Tip>

115 

116Informationen zur Strukturierung und Organisation von CLAUDE.md-Inhalten finden Sie unter [Claudes Speicher verwalten](/de/memory).

117 

118## Skills

119 

120Skills sind Markdown-Dateien, die Ihrem Agenten spezialisiertes Wissen und aufrufbare Workflows geben. Im Gegensatz zu `CLAUDE.md` (das jede Sitzung geladen wird) werden Skills bei Bedarf geladen. Der Agent erhält Skill-Beschreibungen beim Start und lädt den vollständigen Inhalt, wenn relevant.

121 

122Skills werden durch `settingSources` vom Dateisystem entdeckt. Mit Standardoptionen werden Benutzer- und Projekt-Skills automatisch geladen. Das `Skill`-Tool ist standardmäßig aktiviert, wenn Sie `allowedTools` nicht angeben. Wenn Sie eine `allowedTools`-Zulassungsliste verwenden, schließen Sie `"Skill"` explizit ein.

123 

124<CodeGroup>

125 ```python Python theme={null}

126 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

127 

128 # Skills in .claude/skills/ are discovered automatically

129 # when settingSources includes "project"

130 async for message in query(

131 prompt="Review this PR using our code review checklist",

132 options=ClaudeAgentOptions(

133 setting_sources=["user", "project"],

134 allowed_tools=["Skill", "Read", "Grep", "Glob"],

135 ),

136 ):

137 if isinstance(message, ResultMessage) and message.subtype == "success":

138 print(message.result)

139 ```

140 

141 ```typescript TypeScript theme={null}

142 import { query } from "@anthropic-ai/claude-agent-sdk";

143 

144 // Skills in .claude/skills/ are discovered automatically

145 // when settingSources includes "project"

146 for await (const message of query({

147 prompt: "Review this PR using our code review checklist",

148 options: {

149 settingSources: ["user", "project"],

150 allowedTools: ["Skill", "Read", "Grep", "Glob"]

151 }

152 })) {

153 if (message.type === "result" && message.subtype === "success") {

154 console.log(message.result);

155 }

156 }

157 ```

158</CodeGroup>

159 

160<Note>

161 Skills müssen als Dateisystem-Artefakte erstellt werden (`.claude/skills/<name>/SKILL.md`). Das SDK hat keine programmgesteuerte API zum Registrieren von Skills. Siehe [Agent Skills im SDK](/de/agent-sdk/skills) für vollständige Details.

162</Note>

163 

164Weitere Informationen zum Erstellen und Verwenden von Skills finden Sie unter [Agent Skills im SDK](/de/agent-sdk/skills).

165 

166## Hooks

167 

168Das SDK unterstützt zwei Möglichkeiten, Hooks zu definieren, und sie laufen nebeneinander:

169 

170* **Dateisystem-Hooks:** Shell-Befehle, die in `settings.json` definiert sind und geladen werden, wenn `settingSources` die relevante Quelle enthält. Dies sind die gleichen Hooks, die Sie für [interaktive Claude Code-Sitzungen](/de/hooks-guide) konfigurieren würden.

171* **Programmgesteuerte Hooks:** Callback-Funktionen, die direkt an `query()` übergeben werden. Diese laufen in Ihrem Anwendungsprozess und können strukturierte Entscheidungen zurückgeben. Siehe [Ausführung mit Hooks kontrollieren](/de/agent-sdk/hooks).

172 

173Beide Typen werden während des gleichen Hook-Lebenszyklus ausgeführt. Wenn Sie bereits Hooks in der `.claude/settings.json` Ihres Projekts haben und Sie `settingSources: ["project"]` setzen, werden diese Hooks automatisch im SDK ohne zusätzliche Konfiguration ausgeführt.

174 

175Hook-Callbacks erhalten die Tool-Eingabe und geben ein Entscheidungs-Dict zurück. Das Zurückgeben von `{}` (ein leeres Dict) bedeutet, dass das Tool fortfahren darf. Das Zurückgeben von `{"decision": "block", "reason": "..."}` verhindert die Ausführung und der Grund wird Claude als Tool-Ergebnis gesendet. Siehe das [Hooks-Handbuch](/de/agent-sdk/hooks) für die vollständige Callback-Signatur und Rückgabetypen.

176 

177<CodeGroup>

178 ```python Python theme={null}

179 from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher, ResultMessage

180 

181 

182 # PreToolUse hook callback. Positional args:

183 # input_data: HookInput dict with tool_name, tool_input, hook_event_name

184 # tool_use_id: str | None, the ID of the tool call being intercepted

185 # context: HookContext, carries session metadata

186 async def audit_bash(input_data, tool_use_id, context):

187 command = input_data.get("tool_input", {}).get("command", "")

188 if "rm -rf" in command:

189 return {"decision": "block", "reason": "Destructive command blocked"}

190 return {} # Empty dict: allow the tool to proceed

191 

192 

193 # Filesystem hooks from .claude/settings.json run automatically

194 # when settingSources loads them. You can also add programmatic hooks:

195 async for message in query(

196 prompt="Refactor the auth module",

197 options=ClaudeAgentOptions(

198 setting_sources=["project"], # Loads hooks from .claude/settings.json

199 hooks={

200 "PreToolUse": [

201 HookMatcher(matcher="Bash", hooks=[audit_bash]),

202 ]

203 },

204 ),

205 ):

206 if isinstance(message, ResultMessage) and message.subtype == "success":

207 print(message.result)

208 ```

209 

210 ```typescript TypeScript theme={null}

211 import { query, type HookInput, type HookJSONOutput } from "@anthropic-ai/claude-agent-sdk";

212 

213 // PreToolUse hook callback. HookInput is a discriminated union on

214 // hook_event_name, so narrowing on it gives TypeScript the right

215 // tool_input shape for this event.

216 const auditBash = async (input: HookInput): Promise<HookJSONOutput> => {

217 if (input.hook_event_name !== "PreToolUse") return {};

218 const toolInput = input.tool_input as { command?: string };

219 if (toolInput.command?.includes("rm -rf")) {

220 return { decision: "block", reason: "Destructive command blocked" };

221 }

222 return {}; // Empty object: allow the tool to proceed

223 };

224 

225 // Filesystem hooks from .claude/settings.json run automatically

226 // when settingSources loads them. You can also add programmatic hooks:

227 for await (const message of query({

228 prompt: "Refactor the auth module",

229 options: {

230 settingSources: ["project"], // Loads hooks from .claude/settings.json

231 hooks: {

232 PreToolUse: [{ matcher: "Bash", hooks: [auditBash] }]

233 }

234 }

235 })) {

236 if (message.type === "result" && message.subtype === "success") {

237 console.log(message.result);

238 }

239 }

240 ```

241</CodeGroup>

242 

243### Wann welcher Hook-Typ verwendet werden sollte

244 

245| Hook-Typ | Am besten für |

246| :--------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

247| **Dateisystem** (`settings.json`) | Gemeinsame Nutzung von Hooks zwischen CLI- und SDK-Sitzungen. Unterstützt `"command"` (Shell-Skripte), `"http"` (POST an einen Endpunkt), `"mcp_tool"` (Aufrufen eines Tools eines verbundenen MCP-Servers), `"prompt"` (LLM wertet einen Prompt aus) und `"agent"` (spawnt einen Verifier-Agenten). Diese werden im Haupt-Agenten und allen Subagenten, die er spawnt, ausgeführt. |

248| **Programmgesteuert** (Callbacks in `query()`) | Anwendungsspezifische Logik; Rückgabe strukturierter Entscheidungen; In-Process-Integration. Auf die Hauptsitzung beschränkt. |

249 

250<Note>

251 Das TypeScript SDK unterstützt zusätzliche Hook-Events über Python hinaus, einschließlich `SessionStart`, `SessionEnd`, `TeammateIdle` und `TaskCompleted`. Siehe das [Hooks-Handbuch](/de/agent-sdk/hooks) für die vollständige Ereigniskompatibilitätstabelle.

252</Note>

253 

254Vollständige Details zu programmgesteuerten Hooks finden Sie unter [Ausführung mit Hooks kontrollieren](/de/agent-sdk/hooks). Für Dateisystem-Hook-Syntax siehe [Hooks](/de/hooks).

255 

256## Wählen Sie die richtige Funktion

257 

258Das Agent SDK gibt Ihnen Zugriff auf mehrere Möglichkeiten, das Verhalten Ihres Agenten zu erweitern. Wenn Sie unsicher sind, welche Sie verwenden sollten, ordnet diese Tabelle häufige Ziele dem richtigen Ansatz zu.

259 

260| Sie möchten... | Verwenden Sie | SDK-Oberfläche |

261| :----------------------------------------------------------------------------------------------------------- | :------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

262| Projektkonventionen festlegen, die Ihr Agent immer befolgt | [CLAUDE.md](/de/memory) | `settingSources: ["project"]` lädt es automatisch |

263| Dem Agenten Referenzmaterial geben, das er bei Bedarf lädt | [Skills](/de/agent-sdk/skills) | `settingSources` + `allowedTools: ["Skill"]` |

264| Einen wiederverwendbaren Workflow ausführen (bereitstellen, überprüfen, freigeben) | [Benutzer-aufrufbare Skills](/de/agent-sdk/skills) | `settingSources` + `allowedTools: ["Skill"]` |

265| Eine isolierte Teilaufgabe an einen frischen Kontext delegieren (Recherche, Überprüfung) | [Subagenten](/de/agent-sdk/subagents) | `agents`-Parameter + `allowedTools: ["Agent"]` |

266| Mehrere Claude Code-Instanzen mit gemeinsamen Aufgabenlisten und direkter Inter-Agent-Messaging koordinieren | [Agent-Teams](/de/agent-teams) | Nicht direkt über SDK-Optionen konfiguriert. Agent-Teams sind eine CLI-Funktion, bei der eine Sitzung als Team-Lead fungiert und die Arbeit über unabhängige Teammates koordiniert |

267| Deterministische Logik auf Tool-Aufrufe ausführen (Audit, Block, Transform) | [Hooks](/de/agent-sdk/hooks) | `hooks`-Parameter mit Callbacks oder Shell-Skripte, die über `settingSources` geladen werden |

268| Claude strukturierten Tool-Zugriff auf einen externen Service geben | [MCP](/de/agent-sdk/mcp) | `mcpServers`-Parameter |

269 

270<Tip>

271 **Subagenten versus Agent-Teams:** Subagenten sind kurzlebig und isoliert: frische Konversation, eine Aufgabe, Zusammenfassung an übergeordnete Instanz zurückgegeben. Agent-Teams koordinieren mehrere unabhängige Claude Code-Instanzen, die eine Aufgabenliste teilen und sich direkt gegenseitig Nachrichten senden. Agent-Teams sind eine CLI-Funktion. Siehe [Was Subagenten erben](/de/agent-sdk/subagents#what-subagents-inherit) und den [Agent-Teams-Vergleich](/de/agent-teams#compare-with-subagents) für Details.

272</Tip>

273 

274Jede Funktion, die Sie aktivieren, trägt zu Ihrem Agent-Kontextfenster bei. Für Pro-Funktion-Kosten und wie diese Funktionen zusammen funktionieren, siehe [Claude Code erweitern](/de/features-overview#understand-context-costs).

275 

276## Verwandte Ressourcen

277 

278* [Claude Code erweitern](/de/features-overview): Konzeptioneller Überblick über alle Erweiterungsfunktionen mit Vergleichstabellen und Kontextkostenanalyse

279* [Skills im SDK](/de/agent-sdk/skills): Vollständiges Handbuch zur programmgesteuerten Verwendung von Skills

280* [Subagenten](/de/agent-sdk/subagents): Definieren und rufen Sie Subagenten für isolierte Teilaufgaben auf

281* [Hooks](/de/agent-sdk/hooks): Abfangen und Kontrollieren des Agent-Verhaltens an wichtigen Ausführungspunkten

282* [Berechtigungen](/de/agent-sdk/permissions): Kontrollieren Sie Tool-Zugriff mit Modi, Regeln und Callbacks

283* [Systemaufforderungen](/de/agent-sdk/modifying-system-prompts): Injizieren Sie Kontext ohne CLAUDE.md-Dateien

agent-sdk/cost-tracking.md +263 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Kosten und Nutzung verfolgen

6 

7> Erfahren Sie, wie Sie die Token-Nutzung verfolgen, Kosten schätzen und Prompt Caching mit dem Claude Agent SDK konfigurieren.

8 

9Das Claude Agent SDK bietet detaillierte Token-Nutzungsinformationen für jede Interaktion mit Claude. Dieser Leitfaden erklärt, wie Sie die Nutzung ordnungsgemäß verfolgen und die Kostenberichterstattung verstehen, besonders bei parallelen Tool-Verwendungen und mehrstufigen Gesprächen.

10 

11Für die vollständige API-Dokumentation siehe die [TypeScript SDK-Referenz](/de/agent-sdk/typescript) und [Python SDK-Referenz](/de/agent-sdk/python).

12 

13<Warning>

14 Die Felder `total_cost_usd` und `costUSD` sind clientseitige Schätzungen, keine verbindlichen Abrechnungsdaten. Das SDK berechnet sie lokal aus einer Preistabelle, die zur Build-Zeit gebündelt wird, daher können sie von dem abweichen, was Sie tatsächlich abgerechnet bekommen, wenn:

15 

16 * sich die Preise ändern

17 * die installierte SDK-Version ein Modell nicht erkennt

18 * Abrechnungsregeln gelten, die der Client nicht modellieren kann

19 

20 Verwenden Sie diese Felder für Entwicklungseinblicke und ungefähre Budgetierung. Für verbindliche Abrechnung verwenden Sie die [Usage and Cost API](https://platform.claude.com/docs/en/build-with-claude/usage-cost-api) oder die Seite „Nutzung" in der [Claude Console](https://platform.claude.com/usage). Berechnen Sie Endbenutzer nicht und treffen Sie keine finanziellen Entscheidungen basierend auf diesen Feldern.

21</Warning>

22 

23## Token-Nutzung verstehen

24 

25Die TypeScript- und Python-SDKs stellen die gleichen Nutzungsdaten mit unterschiedlichen Feldnamen bereit:

26 

27* **TypeScript** bietet Token-Aufschlüsselungen pro Schritt auf jeder Assistenten-Nachricht (`message.message.id`, `message.message.usage`), Kosten pro Modell über `modelUsage` auf der Ergebnis-Nachricht und eine kumulative Summe auf der Ergebnis-Nachricht.

28* **Python** bietet Token-Aufschlüsselungen pro Schritt auf jeder Assistenten-Nachricht (`message.usage`, `message.message_id`), Kosten pro Modell über `model_usage` auf der Ergebnis-Nachricht und die akkumulierte Summe auf der Ergebnis-Nachricht (`total_cost_usd` und `usage` dict).

29 

30Beide SDKs verwenden das gleiche zugrunde liegende Kostenmodell und stellen die gleiche Granularität bereit. Der Unterschied liegt in der Feldbennung und wo die Nutzung pro Schritt verschachtelt ist.

31 

32Die Kostenverfolgung hängt davon ab, zu verstehen, wie das SDK Nutzungsdaten umfasst:

33 

34* **`query()` Aufruf:** eine Invokation der `query()` Funktion des SDK. Ein einzelner Aufruf kann mehrere Schritte beinhalten (Claude antwortet, verwendet Tools, erhält Ergebnisse, antwortet erneut). Jeder Aufruf erzeugt am Ende eine [`result`](/de/agent-sdk/typescript#sdk-result-message) Nachricht.

35* **Schritt:** ein einzelner Request/Response-Zyklus innerhalb eines `query()` Aufrufs. Jeder Schritt erzeugt Assistenten-Nachrichten mit Token-Nutzung.

36* **Sitzung:** eine Serie von `query()` Aufrufen, die durch eine Sitzungs-ID verknüpft sind (mit der `resume` Option). Jeder `query()` Aufruf innerhalb einer Sitzung meldet seine eigenen Kosten unabhängig.

37 

38Das folgende Diagramm zeigt den Nachrichtenstrom aus einem einzelnen `query()` Aufruf, mit Token-Nutzung, die bei jedem Schritt gemeldet wird, und der kumulativen Schätzung am Ende:

39 

40<img src="https://mintcdn.com/claude-code/Dujg43sxTkuhSELI/images/agent-sdk/message-usage-flow.svg?fit=max&auto=format&n=Dujg43sxTkuhSELI&q=85&s=c542f51ff58547ef9c0e57b16d03f33c" alt="Diagramm, das eine Abfrage zeigt, die zwei Schritte von Nachrichten erzeugt. Schritt 1 hat vier Assistenten-Nachrichten, die die gleiche ID und Nutzung teilen (einmal zählen), Schritt 2 hat eine Assistenten-Nachricht mit einer neuen ID, und die endgültige Ergebnis-Nachricht zeigt die geschätzte total_cost_usd." width="760" height="520" data-path="images/agent-sdk/message-usage-flow.svg" />

41 

42<Steps>

43 <Step title="Jeder Schritt erzeugt Assistenten-Nachrichten">

44 Wenn Claude antwortet, sendet es eine oder mehrere Assistenten-Nachrichten. In TypeScript enthält jede Assistenten-Nachricht eine verschachtelte `BetaMessage` (zugänglich über `message.message`) mit einer `id` und einem [`usage`](https://platform.claude.com/docs/en/api/messages) Objekt mit Token-Zählungen (`input_tokens`, `output_tokens`). In Python stellt die `AssistantMessage` Dataclass die gleichen Daten direkt über `message.usage` und `message.message_id` bereit. Wenn Claude mehrere Tools in einer Runde verwendet, teilen alle Nachrichten in dieser Runde die gleiche ID, daher deduplizieren Sie nach ID, um Doppelzählungen zu vermeiden.

45 </Step>

46 

47 <Step title="Die Ergebnis-Nachricht bietet die kumulative Schätzung">

48 Wenn der `query()` Aufruf abgeschlossen ist, gibt das SDK eine Ergebnis-Nachricht mit `total_cost_usd` und kumulativer `usage` aus. Dies ist in TypeScript ([`SDKResultMessage`](/de/agent-sdk/typescript#sdk-result-message)) und Python ([`ResultMessage`](/de/agent-sdk/python#result-message)) verfügbar. Wenn Sie mehrere `query()` Aufrufe tätigen (zum Beispiel in einer mehrstufigen Sitzung), spiegelt jedes Ergebnis nur die Kosten dieses einzelnen Aufrufs wider. Wenn Sie nur die geschätzte Summe benötigen, können Sie die Nutzung pro Schritt ignorieren und diesen einzelnen Wert lesen.

49 </Step>

50</Steps>

51 

52## Gesamtkosten einer Abfrage abrufen

53 

54Die Ergebnis-Nachricht ([TypeScript](/de/agent-sdk/typescript#sdk-result-message), [Python](/de/agent-sdk/python#result-message)) markiert das Ende der Agent-Schleife für einen `query()` Aufruf. Sie enthält `total_cost_usd`, die geschätzte kumulative Kosten über alle Schritte in diesem Aufruf. Dies funktioniert sowohl für erfolgreiche als auch für Fehler-Ergebnisse. Wenn Sie Sitzungen verwenden, um mehrere `query()` Aufrufe zu tätigen, spiegelt jedes Ergebnis nur die Kosten dieses einzelnen Aufrufs wider.

55 

56Die folgenden Beispiele durchlaufen den Nachrichtenstrom aus einem `query()` Aufruf und geben die Gesamtkosten aus, wenn die `result` Nachricht ankommt:

57 

58<CodeGroup>

59 ```typescript TypeScript theme={null}

60 import { query } from "@anthropic-ai/claude-agent-sdk";

61 

62 for await (const message of query({ prompt: "Summarize this project" })) {

63 if (message.type === "result") {

64 console.log(`Total cost: $${message.total_cost_usd}`);

65 }

66 }

67 ```

68 

69 ```python Python theme={null}

70 from claude_agent_sdk import query, ResultMessage

71 import asyncio

72 

73 

74 async def main():

75 async for message in query(prompt="Summarize this project"):

76 if isinstance(message, ResultMessage):

77 print(f"Total cost: ${message.total_cost_usd or 0}")

78 

79 

80 asyncio.run(main())

81 ```

82</CodeGroup>

83 

84## Nutzung pro Schritt und pro Modell verfolgen

85 

86Die Beispiele in diesem Abschnitt verwenden TypeScript-Feldnamen. In Python sind die entsprechenden Felder [`AssistantMessage.usage`](/de/agent-sdk/python#assistant-message) und `AssistantMessage.message_id` für die Nutzung pro Schritt, und [`ResultMessage.model_usage`](/de/agent-sdk/python#result-message) für Aufschlüsselungen pro Modell.

87 

88### Nutzung pro Schritt verfolgen

89 

90Jede Assistenten-Nachricht enthält eine verschachtelte `BetaMessage` (zugänglich über `message.message`) mit einer `id` und einem `usage` Objekt mit Token-Zählungen. Wenn Claude Tools parallel verwendet, teilen mehrere Nachrichten die gleiche `id` mit identischen Nutzungsdaten. Verfolgen Sie, welche IDs Sie bereits gezählt haben, und überspringen Sie Duplikate, um aufgeblähte Summen zu vermeiden.

91 

92<Warning>

93 Parallele Tool-Aufrufe erzeugen mehrere Assistenten-Nachrichten, deren verschachtelte `BetaMessage` die gleiche `id` und identische Nutzung teilt. Deduplizieren Sie immer nach ID, um genaue Token-Zählungen pro Schritt zu erhalten.

94</Warning>

95 

96Das folgende Beispiel akkumuliert Input- und Output-Tokens über alle Schritte, zählt jede eindeutige Nachrichten-ID nur einmal:

97 

98```typescript theme={null}

99import { query } from "@anthropic-ai/claude-agent-sdk";

100 

101const seenIds = new Set<string>();

102let totalInputTokens = 0;

103let totalOutputTokens = 0;

104 

105for await (const message of query({ prompt: "Summarize this project" })) {

106 if (message.type === "assistant") {

107 const msgId = message.message.id;

108 

109 // Parallel tool calls share the same ID, only count once

110 if (!seenIds.has(msgId)) {

111 seenIds.add(msgId);

112 totalInputTokens += message.message.usage.input_tokens;

113 totalOutputTokens += message.message.usage.output_tokens;

114 }

115 }

116}

117 

118console.log(`Steps: ${seenIds.size}`);

119console.log(`Input tokens: ${totalInputTokens}`);

120console.log(`Output tokens: ${totalOutputTokens}`);

121```

122 

123### Nutzung pro Modell aufschlüsseln

124 

125Die Ergebnis-Nachricht enthält [`modelUsage`](/de/agent-sdk/typescript#model-usage), eine Zuordnung von Modellname zu Token-Zählungen und Kosten pro Modell. Dies ist nützlich, wenn Sie mehrere Modelle ausführen (zum Beispiel Haiku für Sub-Agenten und Opus für den Haupt-Agenten) und sehen möchten, wohin die Tokens gehen.

126 

127Das folgende Beispiel führt eine Abfrage aus und gibt die Kosten und Token-Aufschlüsselung für jedes verwendete Modell aus:

128 

129```typescript theme={null}

130import { query } from "@anthropic-ai/claude-agent-sdk";

131 

132for await (const message of query({ prompt: "Summarize this project" })) {

133 if (message.type !== "result") continue;

134 

135 for (const [modelName, usage] of Object.entries(message.modelUsage)) {

136 console.log(`${modelName}: $${usage.costUSD.toFixed(4)}`);

137 console.log(` Input tokens: ${usage.inputTokens}`);

138 console.log(` Output tokens: ${usage.outputTokens}`);

139 console.log(` Cache read: ${usage.cacheReadInputTokens}`);

140 console.log(` Cache creation: ${usage.cacheCreationInputTokens}`);

141 }

142}

143```

144 

145## Kosten über mehrere Aufrufe akkumulieren

146 

147Jeder `query()` Aufruf gibt seinen eigenen `total_cost_usd` zurück. Das SDK bietet keine Sitzungs-Ebenen-Summe, daher müssen Sie, wenn Ihre Anwendung mehrere `query()` Aufrufe tätigt (zum Beispiel in einer mehrstufigen Sitzung oder über verschiedene Benutzer), die Summen selbst akkumulieren.

148 

149Die folgenden Beispiele führen zwei `query()` Aufrufe nacheinander aus, addieren den `total_cost_usd` jedes Aufrufs zu einer laufenden Summe und geben sowohl die Kosten pro Aufruf als auch die kombinierten Kosten aus:

150 

151<CodeGroup>

152 ```typescript TypeScript theme={null}

153 import { query } from "@anthropic-ai/claude-agent-sdk";

154 

155 // Track cumulative cost across multiple query() calls

156 let totalSpend = 0;

157 

158 const prompts = [

159 "Read the files in src/ and summarize the architecture",

160 "List all exported functions in src/auth.ts"

161 ];

162 

163 for (const prompt of prompts) {

164 for await (const message of query({ prompt })) {

165 if (message.type === "result") {

166 totalSpend += message.total_cost_usd;

167 console.log(`This call: $${message.total_cost_usd}`);

168 }

169 }

170 }

171 

172 console.log(`Total spend: $${totalSpend.toFixed(4)}`);

173 ```

174 

175 ```python Python theme={null}

176 from claude_agent_sdk import query, ResultMessage

177 import asyncio

178 

179 

180 async def main():

181 # Track cumulative cost across multiple query() calls

182 total_spend = 0.0

183 

184 prompts = [

185 "Read the files in src/ and summarize the architecture",

186 "List all exported functions in src/auth.ts",

187 ]

188 

189 for prompt in prompts:

190 async for message in query(prompt=prompt):

191 if isinstance(message, ResultMessage):

192 cost = message.total_cost_usd or 0

193 total_spend += cost

194 print(f"This call: ${cost}")

195 

196 print(f"Total spend: ${total_spend:.4f}")

197 

198 

199 asyncio.run(main())

200 ```

201</CodeGroup>

202 

203## Fehler, Caching und Token-Diskrepanzen behandeln

204 

205Für genaue Kostenverfolgung müssen Sie fehlgeschlagene Gespräche, Cache-Token-Preisgestaltung und gelegentliche Berichterstattungsinkonsistenzen berücksichtigen.

206 

207### Output-Token-Diskrepanzen auflösen

208 

209In seltenen Fällen können Sie unterschiedliche `output_tokens` Werte für Nachrichten mit der gleichen ID beobachten. Wenn dies auftritt:

210 

2111. **Verwenden Sie den höchsten Wert:** die letzte Nachricht in einer Gruppe enthält typischerweise die genaue Summe.

2122. **Bevorzugen Sie die Ergebnis-Nachricht:** die `total_cost_usd` in der Ergebnis-Nachricht spiegelt die akkumulierte Schätzung des SDK über alle Schritte wider, daher ist sie zuverlässiger als die Summe der Werte pro Schritt selbst. Es ist immer noch eine Schätzung und kann von Ihrer tatsächlichen Rechnung abweichen.

2133. **Melden Sie Inkonsistenzen:** reichen Sie Probleme im [Claude Code GitHub Repository](https://github.com/anthropics/claude-code/issues) ein.

214 

215### Kosten bei fehlgeschlagenen Gesprächen verfolgen

216 

217Sowohl erfolgreiche als auch Fehler-Ergebnis-Nachrichten enthalten `usage` und `total_cost_usd`. Wenn ein Gespräch in der Mitte fehlschlägt, haben Sie immer noch Tokens bis zum Punkt des Fehlers verbraucht. Lesen Sie Kostendaten immer aus der Ergebnis-Nachricht, unabhängig von ihrem `subtype`.

218 

219### Cache-Tokens verfolgen

220 

221Das Agent SDK verwendet automatisch [Prompt Caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching), um Kosten bei wiederholtem Inhalt zu reduzieren. Sie müssen Caching nicht selbst konfigurieren. Das Nutzungs-Objekt enthält zwei zusätzliche Felder für Cache-Verfolgung:

222 

223* `cache_creation_input_tokens`: Tokens, die zum Erstellen neuer Cache-Einträge verwendet werden (berechnet zu einem höheren Satz als Standard-Input-Tokens).

224* `cache_read_input_tokens`: Tokens, die aus vorhandenen Cache-Einträgen gelesen werden (berechnet zu einem reduzierten Satz).

225 

226Verfolgen Sie diese separat von `input_tokens`, um Cache-Einsparungen zu verstehen. In TypeScript sind diese Felder auf dem [`Usage`](/de/agent-sdk/typescript#usage) Objekt typisiert. In Python erscheinen sie als Schlüssel im [`ResultMessage.usage`](/de/agent-sdk/python#result-message) dict (zum Beispiel, `message.usage.get("cache_read_input_tokens", 0)`).

227 

228### Prompt-Cache-TTL auf eine Stunde verlängern

229 

230Cache-Einträge, die vom SDK geschrieben werden, verwenden standardmäßig eine 5-Minuten-TTL, wenn Sie sich mit einem API-Schlüssel authentifizieren oder auf Amazon Bedrock, Google Cloud Vertex AI oder Microsoft Foundry ausführen. Wenn Ihre Workload viele kurze Sitzungen gegen das gleiche System-Prompt und den gleichen Kontext mit Lücken länger als 5 Minuten zwischen ihnen ausführt, läuft der Cache zwischen Sitzungen ab und jede neue Sitzung zahlt den vollen Input-Preis.

231 

232Um eine 1-Stunden-TTL bei Cache-Schreibvorgängen anzufordern, setzen Sie die [`ENABLE_PROMPT_CACHING_1H`](/de/env-vars) Umgebungsvariable. Sie können sie in Ihrer Shell- oder Container-Umgebung exportieren oder sie durch `options.env` übergeben.

233 

234Das folgende Beispiel aktiviert 1-Stunden-TTL für einen Agenten, der auf Bedrock ausgeführt wird:

235 

236<CodeGroup>

237 ```python Python theme={null}

238 options = ClaudeAgentOptions(

239 env={

240 "CLAUDE_CODE_USE_BEDROCK": "1",

241 "ENABLE_PROMPT_CACHING_1H": "1",

242 },

243 )

244 ```

245 

246 ```typescript TypeScript theme={null}

247 const options = {

248 env: {

249 ...process.env,

250 CLAUDE_CODE_USE_BEDROCK: "1",

251 ENABLE_PROMPT_CACHING_1H: "1",

252 },

253 };

254 ```

255</CodeGroup>

256 

257Cache-Schreibvorgänge mit einer 1-Stunden-TTL werden zu einem höheren Satz als 5-Minuten-Schreibvorgänge berechnet, daher aktiviert dies einen Austausch von höheren Schreibkosten für mehr Cache-Lesevorgänge. Siehe [Prompt Caching Preisgestaltung](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) für Details. Claude-Abonnement-Benutzer erhalten bereits automatisch 1-Stunden-TTL und müssen diese Variable nicht setzen.

258 

259## Verwandte Dokumentation

260 

261* [TypeScript SDK Referenz](/de/agent-sdk/typescript) - Vollständige API-Dokumentation

262* [SDK Übersicht](/de/agent-sdk/overview) - Erste Schritte mit dem SDK

263* [SDK Berechtigungen](/de/agent-sdk/permissions) - Verwaltung von Tool-Berechtigungen

agent-sdk/hooks.md +819 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Agentverhalten mit Hooks abfangen und steuern

6 

7> Fangen Sie Agentverhalten an wichtigen Ausführungspunkten mit Hooks ab und passen Sie es an

8 

9Hooks sind Callback-Funktionen, die Ihren Code als Reaktion auf Agent-Ereignisse ausführen, z. B. wenn ein Tool aufgerufen wird, eine Sitzung startet oder die Ausführung stoppt. Mit Hooks können Sie:

10 

11* **Gefährliche Operationen blockieren**, bevor sie ausgeführt werden, z. B. destruktive Shell-Befehle oder nicht autorisierter Dateizugriff

12* **Alle Tool-Aufrufe protokollieren und überprüfen** für Compliance, Debugging oder Analytik

13* **Eingaben und Ausgaben transformieren**, um Daten zu bereinigen, Anmeldedaten einzufügen oder Dateipfade umzuleiten

14* **Menschliche Genehmigung anfordern** für sensible Aktionen wie Datenbankschreibvorgänge oder API-Aufrufe

15* **Sitzungslebenszyklus verfolgen**, um den Status zu verwalten, Ressourcen freizugeben oder Benachrichtigungen zu senden

16 

17Dieser Leitfaden behandelt die Funktionsweise von Hooks, deren Konfiguration und bietet Beispiele für häufige Muster wie das Blockieren von Tools, das Ändern von Eingaben und das Weiterleiten von Benachrichtigungen.

18 

19## Funktionsweise von Hooks

20 

21<Steps>

22 <Step title="Ein Ereignis wird ausgelöst">

23 Während der Agent-Ausführung passiert etwas und das SDK löst ein Ereignis aus: Ein Tool wird aufgerufen (`PreToolUse`), ein Tool gibt ein Ergebnis zurück (`PostToolUse`), ein Subagent startet oder stoppt, der Agent ist untätig oder die Ausführung ist beendet. Siehe die [vollständige Liste der Ereignisse](#available-hooks).

24 </Step>

25 

26 <Step title="Das SDK sammelt registrierte Hooks">

27 Das SDK prüft auf Hooks, die für diesen Ereignistyp registriert sind. Dies umfasst Callback-Hooks, die Sie in `options.hooks` übergeben, und Shell-Befehls-Hooks aus Einstellungsdateien, wenn der entsprechende [`settingSources`](/de/agent-sdk/typescript#setting-source) oder [`setting_sources`](/de/agent-sdk/python#setting-source) Eintrag aktiviert ist, was für Standard-`query()`-Optionen der Fall ist.

28 </Step>

29 

30 <Step title="Matcher filtern, welche Hooks ausgeführt werden">

31 Wenn ein Hook ein [`matcher`](#matchers) Muster hat (z. B. `"Write|Edit"`), testet das SDK es gegen das Ziel des Ereignisses (z. B. den Tool-Namen). Hooks ohne Matcher werden für jedes Ereignis dieses Typs ausgeführt.

32 </Step>

33 

34 <Step title="Callback-Funktionen werden ausgeführt">

35 Jede übereinstimmende Hook-[Callback-Funktion](#callback-functions) erhält Eingaben über das, was passiert: den Tool-Namen, seine Argumente, die Sitzungs-ID und andere ereignisspezifische Details.

36 </Step>

37 

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.

40 </Step>

41</Steps>

42 

43Das folgende Beispiel bringt diese Schritte zusammen. Es registriert einen `PreToolUse` Hook (Schritt 1) mit einem `"Write|Edit"` Matcher (Schritt 3), sodass der Callback nur für Datei-Schreib-Tools ausgelöst wird. Wenn ausgelöst, erhält der Callback die Eingabe des Tools (Schritt 4), prüft, ob der Dateipfad auf eine `.env`-Datei abzielt, und gibt `permissionDecision: "deny"` zurück, um die Operation zu blockieren (Schritt 5):

44 

45<CodeGroup>

46 ```python Python theme={null}

47 import asyncio

48 from claude_agent_sdk import (

49 AssistantMessage,

50 ClaudeSDKClient,

51 ClaudeAgentOptions,

52 HookMatcher,

53 ResultMessage,

54 )

55 

56 

57 # Define a hook callback that receives tool call details

58 async def protect_env_files(input_data, tool_use_id, context):

59 # Extract the file path from the tool's input arguments

60 file_path = input_data["tool_input"].get("file_path", "")

61 file_name = file_path.split("/")[-1]

62 

63 # Block the operation if targeting a .env file

64 if file_name == ".env":

65 return {

66 "hookSpecificOutput": {

67 "hookEventName": input_data["hook_event_name"],

68 "permissionDecision": "deny",

69 "permissionDecisionReason": "Cannot modify .env files",

70 }

71 }

72 

73 # Return empty object to allow the operation

74 return {}

75 

76 

77 async def main():

78 options = ClaudeAgentOptions(

79 hooks={

80 # Register the hook for PreToolUse events

81 # The matcher filters to only Write and Edit tool calls

82 "PreToolUse": [HookMatcher(matcher="Write|Edit", hooks=[protect_env_files])]

83 }

84 )

85 

86 async with ClaudeSDKClient(options=options) as client:

87 await client.query("Update the database configuration")

88 async for message in client.receive_response():

89 # Filter for assistant and result messages

90 if isinstance(message, (AssistantMessage, ResultMessage)):

91 print(message)

92 

93 

94 asyncio.run(main())

95 ```

96 

97 ```typescript TypeScript theme={null}

98 import { query, HookCallback, PreToolUseHookInput } from "@anthropic-ai/claude-agent-sdk";

99 

100 // Define a hook callback with the HookCallback type

101 const protectEnvFiles: HookCallback = async (input, toolUseID, { signal }) => {

102 // Cast input to the specific hook type for type safety

103 const preInput = input as PreToolUseHookInput;

104 

105 // Cast tool_input to access its properties (typed as unknown in the SDK)

106 const toolInput = preInput.tool_input as Record<string, unknown>;

107 const filePath = toolInput?.file_path as string;

108 const fileName = filePath?.split("/").pop();

109 

110 // Block the operation if targeting a .env file

111 if (fileName === ".env") {

112 return {

113 hookSpecificOutput: {

114 hookEventName: preInput.hook_event_name,

115 permissionDecision: "deny",

116 permissionDecisionReason: "Cannot modify .env files"

117 }

118 };

119 }

120 

121 // Return empty object to allow the operation

122 return {};

123 };

124 

125 for await (const message of query({

126 prompt: "Update the database configuration",

127 options: {

128 hooks: {

129 // Register the hook for PreToolUse events

130 // The matcher filters to only Write and Edit tool calls

131 PreToolUse: [{ matcher: "Write|Edit", hooks: [protectEnvFiles] }]

132 }

133 }

134 })) {

135 // Filter for assistant and result messages

136 if (message.type === "assistant" || message.type === "result") {

137 console.log(message);

138 }

139 }

140 ```

141</CodeGroup>

142 

143## Verfügbare Hooks

144 

145Das SDK bietet Hooks für verschiedene Phasen der Agent-Ausführung. Einige Hooks sind in beiden SDKs verfügbar, während andere nur für TypeScript verfügbar sind.

146 

147| Hook-Ereignis | Python SDK | TypeScript SDK | Was löst es aus | Beispiel-Anwendungsfall |

148| -------------------- | ---------- | -------------- | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |

149| `PreToolUse` | Ja | Ja | Tool-Aufrufanforderung (kann blockiert oder geändert werden) | Gefährliche Shell-Befehle blockieren |

150| `PostToolUse` | Ja | Ja | Tool-Ausführungsergebnis | Alle Dateiänderungen im Audit-Trail protokollieren |

151| `PostToolUseFailure` | Ja | Ja | Tool-Ausführungsfehler | Tool-Fehler behandeln oder protokollieren |

152| `PostToolBatch` | Nein | Ja | Ein vollständiger Batch von Tool-Aufrufen wird aufgelöst, einmal pro Batch vor dem nächsten Modellaufruf | Konventionen einmal für den gesamten Batch einfügen |

153| `UserPromptSubmit` | Ja | Ja | Benutzer-Prompt-Übermittlung | Zusätzlichen Kontext in Prompts einfügen |

154| `Stop` | Ja | Ja | Agent-Ausführung stoppt | Sitzungsstatus vor dem Beenden speichern |

155| `SubagentStart` | Ja | Ja | Subagent-Initialisierung | Parallele Task-Spawning verfolgen |

156| `SubagentStop` | Ja | Ja | Subagent-Fertigstellung | Ergebnisse aus parallelen Tasks aggregieren |

157| `PreCompact` | Ja | Ja | Anforderung zur Gesprächskomprimierung | Vollständiges Transkript vor der Zusammenfassung archivieren |

158| `PermissionRequest` | Ja | Ja | Berechtigungsdialog würde angezeigt | Benutzerdefinierte Berechtigungsbehandlung |

159| `SessionStart` | Nein | Ja | Sitzungsinitialisierung | Protokollierung und Telemetrie initialisieren |

160| `SessionEnd` | Nein | Ja | Sitzungsbeendigung | Temporäre Ressourcen bereinigen |

161| `Notification` | Ja | Ja | Agent-Statusmeldungen | Agent-Status-Updates an Slack oder PagerDuty senden |

162| `Setup` | Nein | Ja | Sitzungssetup/Wartung | Initialisierungsaufgaben ausführen |

163| `TeammateIdle` | Nein | Ja | Teammate wird untätig | Arbeit neu zuweisen oder benachrichtigen |

164| `TaskCompleted` | Nein | Ja | Hintergrund-Task wird abgeschlossen | Ergebnisse aus parallelen Tasks aggregieren |

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

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

167| `WorktreeRemove` | Nein | Ja | Git Worktree entfernt | Workspace-Ressourcen bereinigen |

168 

169## Hooks konfigurieren

170 

171Um einen Hook zu konfigurieren, übergeben Sie ihn im `hooks` Feld Ihrer Agent-Optionen (`ClaudeAgentOptions` in Python, das `options` Objekt in TypeScript):

172 

173<CodeGroup>

174 ```python Python theme={null}

175 options = ClaudeAgentOptions(

176 hooks={"PreToolUse": [HookMatcher(matcher="Bash", hooks=[my_callback])]}

177 )

178 

179 async with ClaudeSDKClient(options=options) as client:

180 await client.query("Your prompt")

181 async for message in client.receive_response():

182 print(message)

183 ```

184 

185 ```typescript TypeScript theme={null}

186 for await (const message of query({

187 prompt: "Your prompt",

188 options: {

189 hooks: {

190 PreToolUse: [{ matcher: "Bash", hooks: [myCallback] }]

191 }

192 }

193 })) {

194 console.log(message);

195 }

196 ```

197</CodeGroup>

198 

199Die `hooks` Option ist ein Wörterbuch (Python) oder Objekt (TypeScript), wobei:

200 

201* **Schlüssel** [Hook-Ereignisnamen](#available-hooks) sind (z. B. `'PreToolUse'`, `'PostToolUse'`, `'Stop'`)

202* **Werte** Arrays von [Matchern](#matchers) sind, die jeweils ein optionales Filtermuster und Ihre [Callback-Funktionen](#callback-functions) enthalten

203 

204### Matcher

205 

206Verwenden Sie Matcher, um zu filtern, wann Ihre Callbacks ausgelöst werden. Das `matcher` Feld ist eine Regex-Zeichenkette, die gegen einen anderen Wert abgeglichen wird, je nach Hook-Ereignistyp. Beispielsweise werden Tool-basierte Hooks gegen den Tool-Namen abgeglichen, während `Notification` Hooks gegen den Benachrichtigungstyp abgeglichen werden. Siehe die [Claude Code Hooks-Referenz](/de/hooks#matcher-patterns) für die vollständige Liste der Matcher-Werte für jeden Ereignistyp.

207 

208| Option | Typ | Standard | Beschreibung |

209| --------- | ---------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

210| `matcher` | `string` | `undefined` | Regex-Muster, das gegen das Filterfeld des Ereignisses abgeglichen wird. Für Tool-Hooks ist dies der Tool-Name. Integrierte Tools umfassen `Bash`, `Read`, `Write`, `Edit`, `Glob`, `Grep`, `WebFetch`, `Agent` und andere (siehe [Tool-Eingabetypen](/de/agent-sdk/typescript#tool-input-types) für die vollständige Liste). MCP-Tools verwenden das Muster `mcp__<server>__<action>`. |

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

212| `timeout` | `number` | `60` | Timeout in Sekunden |

213 

214Verwenden Sie das `matcher` Muster, um nach Möglichkeit spezifische Tools anzusteuern. Ein Matcher mit `'Bash'` wird nur für Bash-Befehle ausgeführt, während das Weglassen des Musters Ihre Callbacks für jedes Vorkommen des Ereignisses ausführt. Beachten Sie, dass Matcher für Tool-basierte Hooks nur nach **Tool-Namen** filtern, nicht nach Dateipfaden oder anderen Argumenten. Um nach Dateipfad zu filtern, prüfen Sie `tool_input.file_path` in Ihrem Callback.

215 

216<Tip>

217 **Tool-Namen entdecken:** Siehe [Tool-Eingabetypen](/de/agent-sdk/typescript#tool-input-types) für die vollständige Liste der integrierten Tool-Namen, oder fügen Sie einen Hook ohne Matcher hinzu, um alle Tool-Aufrufe Ihrer Sitzung zu protokollieren.

218 

219 **MCP-Tool-Benennung:** MCP-Tools beginnen immer mit `mcp__` gefolgt vom Servernamen und der Aktion: `mcp__<server>__<action>`. Wenn Sie beispielsweise einen Server namens `playwright` konfigurieren, werden seine Tools `mcp__playwright__browser_screenshot`, `mcp__playwright__browser_click` usw. benannt. Der Servername kommt aus dem Schlüssel, den Sie in der `mcpServers` Konfiguration verwenden.

220</Tip>

221 

222### Callback-Funktionen

223 

224#### Eingaben

225 

226Jeder Hook-Callback erhält drei Argumente:

227 

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

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

230 * `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 nur auf `PreToolUse`, `PostToolUse` und `PostToolUseFailure` vorhanden.

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

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

233 

234#### Ausgaben

235 

236Ihr Callback gibt ein Objekt mit zwei Kategorien von Feldern zurück:

237 

238* **Top-Level-Felder** steuern das Gespräch: `systemMessage` fügt eine Nachricht in das Gespräch ein, die für das Modell sichtbar ist, und `continue` (`continue_` in Python) bestimmt, ob der Agent nach diesem Hook weiterläuft.

239* **`hookSpecificOutput`** steuert die aktuelle Operation. Die Felder darin hängen vom Hook-Ereignistyp ab. Für `PreToolUse` Hooks ist dies der Ort, an dem Sie `permissionDecision` (`"allow"`, `"deny"` oder `"ask"`), `permissionDecisionReason` und `updatedInput` setzen. Im TypeScript SDK akzeptiert `permissionDecision` auch `"defer"`, um die Abfrage zu beenden und [später fortzufahren](/de/hooks#defer-a-tool-call-for-later); dieser Wert ist im Python SDK nicht verfügbar. Für `PostToolUse` Hooks können Sie `additionalContext` setzen, um Informationen zum Tool-Ergebnis anzuhängen.

240 

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

242 

243<Note>

244 Wenn mehrere Hooks oder Berechtigungsregeln gelten, hat **deny** Vorrang vor **defer**, was Vorrang vor **ask** hat, was Vorrang vor **allow** hat. Wenn ein Hook `deny` zurückgibt, wird die Operation blockiert, unabhängig von anderen Hooks.

245</Note>

246 

247#### Asynchrone Ausgabe

248 

249Standardmäßig wartet der Agent darauf, dass Ihr Hook zurückkommt, bevor er fortfährt. Wenn Ihr Hook einen Nebeneffekt ausführt (Protokollierung, 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:

250 

251<CodeGroup>

252 ```python Python theme={null}

253 async def async_hook(input_data, tool_use_id, context):

254 # Start a background task, then return immediately

255 asyncio.create_task(send_to_logging_service(input_data))

256 return {"async_": True, "asyncTimeout": 30000}

257 ```

258 

259 ```typescript TypeScript theme={null}

260 const asyncHook: HookCallback = async (input, toolUseID, { signal }) => {

261 // Start a background task, then return immediately

262 sendToLoggingService(input).catch(console.error);

263 return { async: true, asyncTimeout: 30000 };

264 };

265 ```

266</CodeGroup>

267 

268| Feld | Typ | Beschreibung |

269| -------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |

270| `async` | `true` | Signalisiert Async-Modus. Der Agent fährt fort, ohne zu warten. In Python verwenden Sie `async_`, um das reservierte Schlüsselwort zu vermeiden. |

271| `asyncTimeout` | `number` | Optionales Timeout in Millisekunden für die Hintergrund-Operation |

272 

273<Note>

274 Asynchrone Ausgaben können nicht blockieren, ändern oder Kontext in die Operation einfügen, da der Agent bereits weitergegangen ist. Verwenden Sie sie nur für Nebeneffekte wie Protokollierung, Metriken oder Benachrichtigungen.

275</Note>

276 

277## Beispiele

278 

279### Tool-Eingabe ändern

280 

281Dieses Beispiel fängt Write-Tool-Aufrufe ab und schreibt das `file_path` Argument um, um `/sandbox` voranzustellen, wodurch alle Datei-Schreibvorgänge in ein Sandbox-Verzeichnis umgeleitet werden. Der Callback gibt `updatedInput` mit dem geänderten Pfad und `permissionDecision: 'allow'` zurück, um die umgeschriebene Operation automatisch zu genehmigen:

282 

283<CodeGroup>

284 ```python Python theme={null}

285 async def redirect_to_sandbox(input_data, tool_use_id, context):

286 if input_data["hook_event_name"] != "PreToolUse":

287 return {}

288 

289 if input_data["tool_name"] == "Write":

290 original_path = input_data["tool_input"].get("file_path", "")

291 return {

292 "hookSpecificOutput": {

293 "hookEventName": input_data["hook_event_name"],

294 "permissionDecision": "allow",

295 "updatedInput": {

296 **input_data["tool_input"],

297 "file_path": f"/sandbox{original_path}",

298 },

299 }

300 }

301 return {}

302 ```

303 

304 ```typescript TypeScript theme={null}

305 const redirectToSandbox: HookCallback = async (input, toolUseID, { signal }) => {

306 if (input.hook_event_name !== "PreToolUse") return {};

307 

308 const preInput = input as PreToolUseHookInput;

309 const toolInput = preInput.tool_input as Record<string, unknown>;

310 if (preInput.tool_name === "Write") {

311 const originalPath = toolInput.file_path as string;

312 return {

313 hookSpecificOutput: {

314 hookEventName: preInput.hook_event_name,

315 permissionDecision: "allow",

316 updatedInput: {

317 ...toolInput,

318 file_path: `/sandbox${originalPath}`

319 }

320 }

321 };

322 }

323 return {};

324 };

325 ```

326</CodeGroup>

327 

328<Note>

329 Wenn Sie `updatedInput` verwenden, müssen Sie auch `permissionDecision: 'allow'` einschließen. Geben Sie immer ein neues Objekt zurück, anstatt das ursprüngliche `tool_input` zu mutieren.

330</Note>

331 

332### Kontext hinzufügen und ein Tool blockieren

333 

334Dieses Beispiel blockiert jeden Versuch, in das `/etc` Verzeichnis zu schreiben, und verwendet zwei Ausgabefelder zusammen: `permissionDecision: 'deny'` stoppt den Tool-Aufruf, während `systemMessage` eine Erinnerung in das Gespräch einfügt, damit der Agent Kontext darüber erhält, warum die Operation blockiert wurde, und vermeidet, sie erneut zu versuchen:

335 

336<CodeGroup>

337 ```python Python theme={null}

338 async def block_etc_writes(input_data, tool_use_id, context):

339 file_path = input_data["tool_input"].get("file_path", "")

340 

341 if file_path.startswith("/etc"):

342 return {

343 # Top-level field: inject guidance into the conversation

344 "systemMessage": "Remember: system directories like /etc are protected.",

345 # hookSpecificOutput: block the operation

346 "hookSpecificOutput": {

347 "hookEventName": input_data["hook_event_name"],

348 "permissionDecision": "deny",

349 "permissionDecisionReason": "Writing to /etc is not allowed",

350 },

351 }

352 return {}

353 ```

354 

355 ```typescript TypeScript theme={null}

356 const blockEtcWrites: HookCallback = async (input, toolUseID, { signal }) => {

357 const preInput = input as PreToolUseHookInput;

358 const toolInput = preInput.tool_input as Record<string, unknown>;

359 const filePath = toolInput?.file_path as string;

360 

361 if (filePath?.startsWith("/etc")) {

362 return {

363 // Top-level field: inject guidance into the conversation

364 systemMessage: "Remember: system directories like /etc are protected.",

365 // hookSpecificOutput: block the operation

366 hookSpecificOutput: {

367 hookEventName: preInput.hook_event_name,

368 permissionDecision: "deny",

369 permissionDecisionReason: "Writing to /etc is not allowed"

370 }

371 };

372 }

373 return {};

374 };

375 ```

376</CodeGroup>

377 

378### Spezifische Tools automatisch genehmigen

379 

380Standardmäßig kann der Agent vor der Verwendung bestimmter Tools um Genehmigung bitten. Dieses Beispiel genehmigt schreibgeschützte Dateisystem-Tools (Read, Glob, Grep) automatisch, indem `permissionDecision: 'allow'` zurückgegeben wird, sodass sie ohne Benutzerbestätigung ausgeführt werden, während alle anderen Tools normalen Berechtigungsprüfungen unterliegen:

381 

382<CodeGroup>

383 ```python Python theme={null}

384 async def auto_approve_read_only(input_data, tool_use_id, context):

385 if input_data["hook_event_name"] != "PreToolUse":

386 return {}

387 

388 read_only_tools = ["Read", "Glob", "Grep"]

389 if input_data["tool_name"] in read_only_tools:

390 return {

391 "hookSpecificOutput": {

392 "hookEventName": input_data["hook_event_name"],

393 "permissionDecision": "allow",

394 "permissionDecisionReason": "Read-only tool auto-approved",

395 }

396 }

397 return {}

398 ```

399 

400 ```typescript TypeScript theme={null}

401 const autoApproveReadOnly: HookCallback = async (input, toolUseID, { signal }) => {

402 if (input.hook_event_name !== "PreToolUse") return {};

403 

404 const preInput = input as PreToolUseHookInput;

405 const readOnlyTools = ["Read", "Glob", "Grep"];

406 if (readOnlyTools.includes(preInput.tool_name)) {

407 return {

408 hookSpecificOutput: {

409 hookEventName: preInput.hook_event_name,

410 permissionDecision: "allow",

411 permissionDecisionReason: "Read-only tool auto-approved"

412 }

413 };

414 }

415 return {};

416 };

417 ```

418</CodeGroup>

419 

420### Mehrere Hooks verketten

421 

422Hooks werden in der Reihenfolge ausgeführt, in der sie im Array erscheinen. Halten Sie jeden Hook auf eine einzelne Verantwortung konzentriert und verketten Sie mehrere Hooks für komplexe Logik:

423 

424<CodeGroup>

425 ```python Python theme={null}

426 options = ClaudeAgentOptions(

427 hooks={

428 "PreToolUse": [

429 HookMatcher(hooks=[rate_limiter]), # First: check rate limits

430 HookMatcher(hooks=[authorization_check]), # Second: verify permissions

431 HookMatcher(hooks=[input_sanitizer]), # Third: sanitize inputs

432 HookMatcher(hooks=[audit_logger]), # Last: log the action

433 ]

434 }

435 )

436 ```

437 

438 ```typescript TypeScript theme={null}

439 const options = {

440 hooks: {

441 PreToolUse: [

442 { hooks: [rateLimiter] }, // First: check rate limits

443 { hooks: [authorizationCheck] }, // Second: verify permissions

444 { hooks: [inputSanitizer] }, // Third: sanitize inputs

445 { hooks: [auditLogger] } // Last: log the action

446 ]

447 }

448 };

449 ```

450</CodeGroup>

451 

452### Mit Regex-Matchern filtern

453 

454Verwenden Sie Regex-Muster, um mehrere Tools abzugleichen. Dieses Beispiel registriert drei Matcher mit unterschiedlichen Bereichen: Der erste löst `file_security_hook` nur für Datei-Änderungs-Tools aus, der zweite löst `mcp_audit_hook` für alle MCP-Tools aus (Tools, deren Namen mit `mcp__` beginnen), und der dritte löst `global_logger` für jeden Tool-Aufruf unabhängig vom Namen aus:

455 

456<CodeGroup>

457 ```python Python theme={null}

458 options = ClaudeAgentOptions(

459 hooks={

460 "PreToolUse": [

461 # Match file modification tools

462 HookMatcher(matcher="Write|Edit|Delete", hooks=[file_security_hook]),

463 # Match all MCP tools

464 HookMatcher(matcher="^mcp__", hooks=[mcp_audit_hook]),

465 # Match everything (no matcher)

466 HookMatcher(hooks=[global_logger]),

467 ]

468 }

469 )

470 ```

471 

472 ```typescript TypeScript theme={null}

473 const options = {

474 hooks: {

475 PreToolUse: [

476 // Match file modification tools

477 { matcher: "Write|Edit|Delete", hooks: [fileSecurityHook] },

478 

479 // Match all MCP tools

480 { matcher: "^mcp__", hooks: [mcpAuditHook] },

481 

482 // Match everything (no matcher)

483 { hooks: [globalLogger] }

484 ]

485 }

486 };

487 ```

488</CodeGroup>

489 

490### Subagent-Aktivität verfolgen

491 

492Verwenden Sie `SubagentStop` Hooks, um zu überwachen, wenn Subagents ihre Arbeit beenden. Siehe den vollständigen Eingabetyp in den [TypeScript](/de/agent-sdk/typescript#hook-input) und [Python](/de/agent-sdk/python#hook-input) SDK-Referenzen. Dieses Beispiel protokolliert eine Zusammenfassung jedes Mal, wenn ein Subagent abgeschlossen wird:

493 

494<CodeGroup>

495 ```python Python theme={null}

496 async def subagent_tracker(input_data, tool_use_id, context):

497 # Log subagent details when it finishes

498 print(f"[SUBAGENT] Completed: {input_data['agent_id']}")

499 print(f" Transcript: {input_data['agent_transcript_path']}")

500 print(f" Tool use ID: {tool_use_id}")

501 print(f" Stop hook active: {input_data.get('stop_hook_active')}")

502 return {}

503 

504 

505 options = ClaudeAgentOptions(

506 hooks={"SubagentStop": [HookMatcher(hooks=[subagent_tracker])]}

507 )

508 ```

509 

510 ```typescript TypeScript theme={null}

511 import { HookCallback, SubagentStopHookInput } from "@anthropic-ai/claude-agent-sdk";

512 

513 const subagentTracker: HookCallback = async (input, toolUseID, { signal }) => {

514 // Cast to SubagentStopHookInput to access subagent-specific fields

515 const subInput = input as SubagentStopHookInput;

516 

517 // Log subagent details when it finishes

518 console.log(`[SUBAGENT] Completed: ${subInput.agent_id}`);

519 console.log(` Transcript: ${subInput.agent_transcript_path}`);

520 console.log(` Tool use ID: ${toolUseID}`);

521 console.log(` Stop hook active: ${subInput.stop_hook_active}`);

522 return {};

523 };

524 

525 const options = {

526 hooks: {

527 SubagentStop: [{ hooks: [subagentTracker] }]

528 }

529 };

530 ```

531</CodeGroup>

532 

533### HTTP-Anfragen von Hooks aus stellen

534 

535Hooks können asynchrone Operationen wie HTTP-Anfragen ausführen. Fangen Sie Fehler in Ihrem Hook ab, anstatt sie zu propagieren, da eine nicht behandelte Ausnahme den Agent unterbrechen kann.

536 

537Dieses Beispiel sendet einen Webhook nach jeder Tool-Fertigstellung und protokolliert, welches Tool ausgeführt wurde und wann. Der Hook fängt Fehler ab, sodass ein fehlgeschlagener Webhook den Agent nicht unterbricht:

538 

539<CodeGroup>

540 ```python Python theme={null}

541 import asyncio

542 import json

543 import urllib.request

544 from datetime import datetime

545 

546 

547 def _send_webhook(tool_name):

548 """Synchronous helper that POSTs tool usage data to an external webhook."""

549 data = json.dumps(

550 {

551 "tool": tool_name,

552 "timestamp": datetime.now().isoformat(),

553 }

554 ).encode()

555 req = urllib.request.Request(

556 "https://api.example.com/webhook",

557 data=data,

558 headers={"Content-Type": "application/json"},

559 method="POST",

560 )

561 urllib.request.urlopen(req)

562 

563 

564 async def webhook_notifier(input_data, tool_use_id, context):

565 # Only fire after a tool completes (PostToolUse), not before

566 if input_data["hook_event_name"] != "PostToolUse":

567 return {}

568 

569 try:

570 # Run the blocking HTTP call in a thread to avoid blocking the event loop

571 await asyncio.to_thread(_send_webhook, input_data["tool_name"])

572 except Exception as e:

573 # Log the error but don't raise. A failed webhook shouldn't stop the agent

574 print(f"Webhook request failed: {e}")

575 

576 return {}

577 ```

578 

579 ```typescript TypeScript theme={null}

580 import { query, HookCallback, PostToolUseHookInput } from "@anthropic-ai/claude-agent-sdk";

581 

582 const webhookNotifier: HookCallback = async (input, toolUseID, { signal }) => {

583 // Only fire after a tool completes (PostToolUse), not before

584 if (input.hook_event_name !== "PostToolUse") return {};

585 

586 try {

587 await fetch("https://api.example.com/webhook", {

588 method: "POST",

589 headers: { "Content-Type": "application/json" },

590 body: JSON.stringify({

591 tool: (input as PostToolUseHookInput).tool_name,

592 timestamp: new Date().toISOString()

593 }),

594 // Pass signal so the request cancels if the hook times out

595 signal

596 });

597 } catch (error) {

598 // Handle cancellation separately from other errors

599 if (error instanceof Error && error.name === "AbortError") {

600 console.log("Webhook request cancelled");

601 }

602 // Don't re-throw. A failed webhook shouldn't stop the agent

603 }

604 

605 return {};

606 };

607 

608 // Register as a PostToolUse hook

609 for await (const message of query({

610 prompt: "Refactor the auth module",

611 options: {

612 hooks: {

613 PostToolUse: [{ hooks: [webhookNotifier] }]

614 }

615 }

616 })) {

617 console.log(message);

618 }

619 ```

620</CodeGroup>

621 

622### Benachrichtigungen an Slack weiterleiten

623 

624Verwenden Sie `Notification` Hooks, um Systembenachrichtigungen vom Agent zu empfangen und sie an externe Dienste weiterzuleiten. Benachrichtigungen werden für bestimmte Ereignistypen ausgelöst: `permission_prompt` (Claude benötigt Genehmigung), `idle_prompt` (Claude wartet auf Eingabe), `auth_success` (Authentifizierung abgeschlossen) und `elicitation_dialog` (Claude fordert den Benutzer auf). Jede Benachrichtigung enthält ein `message` Feld mit einer für Menschen lesbaren Beschreibung und optional einen `title`.

625 

626Dieses Beispiel leitet jede Benachrichtigung an einen Slack-Kanal weiter. Es erfordert eine [Slack Incoming Webhook URL](https://api.slack.com/messaging/webhooks), die Sie erstellen, indem Sie eine App zu Ihrem Slack-Workspace hinzufügen und Incoming Webhooks aktivieren:

627 

628<CodeGroup>

629 ```python Python theme={null}

630 import asyncio

631 import json

632 import urllib.request

633 

634 from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, HookMatcher

635 

636 

637 def _send_slack_notification(message):

638 """Synchronous helper that sends a message to Slack via incoming webhook."""

639 data = json.dumps({"text": f"Agent status: {message}"}).encode()

640 req = urllib.request.Request(

641 "https://hooks.slack.com/services/YOUR/WEBHOOK/URL",

642 data=data,

643 headers={"Content-Type": "application/json"},

644 method="POST",

645 )

646 urllib.request.urlopen(req)

647 

648 

649 async def notification_handler(input_data, tool_use_id, context):

650 try:

651 # Run the blocking HTTP call in a thread to avoid blocking the event loop

652 await asyncio.to_thread(_send_slack_notification, input_data.get("message", ""))

653 except Exception as e:

654 print(f"Failed to send notification: {e}")

655 

656 # Return empty object. Notification hooks don't modify agent behavior

657 return {}

658 

659 

660 async def main():

661 options = ClaudeAgentOptions(

662 hooks={

663 # Register the hook for Notification events (no matcher needed)

664 "Notification": [HookMatcher(hooks=[notification_handler])],

665 },

666 )

667 

668 async with ClaudeSDKClient(options=options) as client:

669 await client.query("Analyze this codebase")

670 async for message in client.receive_response():

671 print(message)

672 

673 

674 asyncio.run(main())

675 ```

676 

677 ```typescript TypeScript theme={null}

678 import { query, HookCallback, NotificationHookInput } from "@anthropic-ai/claude-agent-sdk";

679 

680 // Define a hook callback that sends notifications to Slack

681 const notificationHandler: HookCallback = async (input, toolUseID, { signal }) => {

682 // Cast to NotificationHookInput to access the message field

683 const notification = input as NotificationHookInput;

684 

685 try {

686 // POST the notification message to a Slack incoming webhook

687 await fetch("https://hooks.slack.com/services/YOUR/WEBHOOK/URL", {

688 method: "POST",

689 headers: { "Content-Type": "application/json" },

690 body: JSON.stringify({

691 text: `Agent status: ${notification.message}`

692 }),

693 // Pass signal so the request cancels if the hook times out

694 signal

695 });

696 } catch (error) {

697 if (error instanceof Error && error.name === "AbortError") {

698 console.log("Notification cancelled");

699 } else {

700 console.error("Failed to send notification:", error);

701 }

702 }

703 

704 // Return empty object. Notification hooks don't modify agent behavior

705 return {};

706 };

707 

708 // Register the hook for Notification events (no matcher needed)

709 for await (const message of query({

710 prompt: "Analyze this codebase",

711 options: {

712 hooks: {

713 Notification: [{ hooks: [notificationHandler] }]

714 }

715 }

716 })) {

717 console.log(message);

718 }

719 ```

720</CodeGroup>

721 

722## Häufige Probleme beheben

723 

724### Hook wird nicht ausgelöst

725 

726* Überprüfen Sie, ob der Hook-Ereignisname korrekt und case-sensitiv ist (`PreToolUse`, nicht `preToolUse`)

727* Überprüfen Sie, ob Ihr Matcher-Muster den Tool-Namen genau abgleicht

728* Stellen Sie sicher, dass der Hook unter dem richtigen Ereignistyp in `options.hooks` ist

729* Für Nicht-Tool-Hooks wie `Stop` und `SubagentStop` gleichen Matcher gegen verschiedene Felder ab (siehe [Matcher-Muster](/de/hooks#matcher-patterns))

730* Hooks werden möglicherweise nicht ausgelöst, wenn der Agent das [`max_turns`](/de/agent-sdk/python#claude-agent-options) Limit erreicht, da die Sitzung endet, bevor Hooks ausgeführt werden können

731 

732### Matcher filtert nicht wie erwartet

733 

734Matcher gleichen nur **Tool-Namen** ab, nicht Dateipfade oder andere Argumente. Um nach Dateipfad zu filtern, prüfen Sie `tool_input.file_path` in Ihrem Hook:

735 

736```typescript theme={null}

737const myHook: HookCallback = async (input, toolUseID, { signal }) => {

738 const preInput = input as PreToolUseHookInput;

739 const toolInput = preInput.tool_input as Record<string, unknown>;

740 const filePath = toolInput?.file_path as string;

741 if (!filePath?.endsWith(".md")) return {}; // Skip non-markdown files

742 // Process markdown files...

743 return {};

744};

745```

746 

747### Hook-Timeout

748 

749* Erhöhen Sie den `timeout` Wert in der `HookMatcher` Konfiguration

750* Verwenden Sie das `AbortSignal` aus dem dritten Callback-Argument, um Abbruch elegant in TypeScript zu behandeln

751 

752### Tool wird unerwartet blockiert

753 

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

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

756* Überprüfen Sie, ob Matcher-Muster nicht zu breit sind (ein leerer Matcher gleicht alle Tools ab)

757 

758### Geänderte Eingabe wird nicht angewendet

759 

760* Stellen Sie sicher, dass `updatedInput` in `hookSpecificOutput` ist, nicht auf der obersten Ebene:

761 

762 ```typescript theme={null}

763 return {

764 hookSpecificOutput: {

765 hookEventName: "PreToolUse",

766 permissionDecision: "allow",

767 updatedInput: { command: "new command" }

768 }

769 };

770 ```

771 

772* Sie müssen auch `permissionDecision: 'allow'` zurückgeben, damit die Eingabeänderung wirksam wird

773 

774* Schließen Sie `hookEventName` in `hookSpecificOutput` ein, um zu identifizieren, für welchen Hook-Typ die Ausgabe bestimmt ist

775 

776### Sitzungs-Hooks nicht in Python verfügbar

777 

778`SessionStart` und `SessionEnd` können als SDK-Callback-Hooks in TypeScript registriert werden, sind aber im Python SDK nicht verfügbar (`HookEvent` lässt sie weg). In Python sind sie nur als [Shell-Befehls-Hooks](/de/hooks#hook-events) verfügbar, die in Einstellungsdateien definiert sind (z. B. `.claude/settings.json`). Um Shell-Befehls-Hooks aus Ihrer SDK-Anwendung zu laden, schließen Sie die entsprechende Einstellungsquelle mit [`setting_sources`](/de/agent-sdk/python#setting-source) oder [`settingSources`](/de/agent-sdk/typescript#setting-source) ein:

779 

780<CodeGroup>

781 ```python Python theme={null}

782 options = ClaudeAgentOptions(

783 setting_sources=["project"], # Loads .claude/settings.json including hooks

784 )

785 ```

786 

787 ```typescript TypeScript theme={null}

788 const options = {

789 settingSources: ["project"] // Loads .claude/settings.json including hooks

790 };

791 ```

792</CodeGroup>

793 

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

795 

796### Subagent-Berechtigungsaufforderungen vervielfachen sich

797 

798Beim Spawnen mehrerer Subagents kann jeder einzelne Berechtigungen separat anfordern. Subagents erben nicht automatisch Berechtigungen des übergeordneten Agenten. Um wiederholte Aufforderungen zu vermeiden, verwenden Sie `PreToolUse` Hooks, um spezifische Tools automatisch zu genehmigen, oder konfigurieren Sie Berechtigungsregeln, die für Subagent-Sitzungen gelten.

799 

800### Rekursive Hook-Schleifen mit Subagents

801 

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

803 

804* Überprüfen Sie auf einen Subagent-Indikator in der Hook-Eingabe, bevor Sie spawnen

805* Verwenden Sie eine gemeinsame Variable oder Sitzungsstatus, um zu verfolgen, ob Sie bereits in einem Subagent sind

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

807 

808### systemMessage wird nicht in der Ausgabe angezeigt

809 

810Das `systemMessage` Feld fügt Kontext zum Gespräch hinzu, das das Modell sieht, aber es wird möglicherweise nicht in allen SDK-Ausgabemodi angezeigt. Wenn Sie Hook-Entscheidungen für Ihre Anwendung sichtbar machen müssen, protokollieren Sie sie separat oder verwenden Sie einen dedizierten Ausgabekanal.

811 

812## Verwandte Ressourcen

813 

814* [Claude Code Hooks-Referenz](/de/hooks): vollständige JSON-Eingabe-/Ausgabeschemas, Ereignisdokumentation und Matcher-Muster

815* [Claude Code Hooks-Leitfaden](/de/hooks-guide): Shell-Befehls-Hook-Beispiele und Walkthroughs

816* [TypeScript SDK-Referenz](/de/agent-sdk/typescript): Hook-Typen, Eingabe-/Ausgabedefinitionen und Konfigurationsoptionen

817* [Python SDK-Referenz](/de/agent-sdk/python): Hook-Typen, Eingabe-/Ausgabedefinitionen und Konfigurationsoptionen

818* [Berechtigungen](/de/agent-sdk/permissions): Steuern Sie, was Ihr Agent tun kann

819* [Benutzerdefinierte Tools](/de/agent-sdk/custom-tools): Erstellen Sie Tools, um Agent-Funktionen zu erweitern

agent-sdk/hosting.md +142 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Hosting des Agent SDK

6 

7> Bereitstellung und Hosting des Claude Agent SDK in Produktionsumgebungen

8 

9Das Claude Agent SDK unterscheidet sich von traditionellen zustandslosen LLM-APIs dadurch, dass es den Konversationszustand beibehält und Befehle in einer persistenten Umgebung ausführt. Dieser Leitfaden behandelt die Architektur, Hosting-Überlegungen und Best Practices für die Bereitstellung von SDK-basierten Agenten in der Produktion.

10 

11<Info>

12 Für Sicherheitshärtung über grundlegende Sandboxing hinaus (einschließlich Netzwerkkontrollen, Verwaltung von Anmeldedaten und Isolationsoptionen) siehe [Sichere Bereitstellung](/de/agent-sdk/secure-deployment).

13</Info>

14 

15## Hosting-Anforderungen

16 

17### Container-basiertes Sandboxing

18 

19Aus Sicherheits- und Isolationsgründen sollte das SDK in einer Sandbox-Container-Umgebung ausgeführt werden. Dies bietet Prozessisolation, Ressourcenlimits, Netzwerksteuerung und ephemere Dateisysteme.

20 

21Das SDK unterstützt auch [programmgesteuerte Sandbox-Konfiguration](/de/agent-sdk/typescript#sandbox-settings) für die Befehlsausführung.

22 

23### Systemanforderungen

24 

25Jede SDK-Instanz erfordert:

26 

27* **Laufzeit-Abhängigkeiten**

28 * Python 3.10+ für das Python SDK oder Node.js 18+ für das TypeScript SDK

29 * Beide SDK-Pakete enthalten eine native Claude Code-Binärdatei für die Host-Plattform, daher ist keine separate Claude Code- oder Node.js-Installation für die gestartete CLI erforderlich

30 

31* **Ressourcenzuteilung**

32 * Empfohlen: 1 GiB RAM, 5 GiB Festplatte und 1 CPU (variieren Sie dies je nach Aufgabe nach Bedarf)

33 

34* **Netzwerkzugriff**

35 * Ausgehend HTTPS zu `api.anthropic.com`

36 * Optional: Zugriff auf MCP-Server oder externe Tools

37 

38## Verständnis der SDK-Architektur

39 

40Im Gegensatz zu zustandslosen API-Aufrufen funktioniert das Claude Agent SDK als ein **lang laufender Prozess**, der:

41 

42* **Befehle ausführt** in einer persistenten Shell-Umgebung

43* **Dateivorgänge verwaltet** innerhalb eines Arbeitsverzeichnisses

44* **Tool-Ausführung handhabt** mit Kontext aus vorherigen Interaktionen

45 

46## Sandbox-Anbieter-Optionen

47 

48Mehrere Anbieter spezialisieren sich auf sichere Container-Umgebungen für KI-Code-Ausführung:

49 

50* **[Modal Sandbox](https://modal.com/docs/guide/sandbox)** - [Demo-Implementierung](https://modal.com/docs/examples/claude-slack-gif-creator)

51* **[Cloudflare Sandboxes](https://github.com/cloudflare/sandbox-sdk)**

52* **[Daytona](https://www.daytona.io/)**

53* **[E2B](https://e2b.dev/)**

54* **[Fly Machines](https://fly.io/docs/machines/)**

55* **[Vercel Sandbox](https://vercel.com/docs/functions/sandbox)**

56 

57Für selbst gehostete Optionen (Docker, gVisor, Firecracker) und detaillierte Isolationskonfiguration siehe [Isolationstechnologien](/de/agent-sdk/secure-deployment#isolation-technologies).

58 

59## Produktionsbereitstellungsmuster

60 

61### Muster 1: Ephemere Sitzungen

62 

63Erstellen Sie einen neuen Container für jede Benutzeraufgabe und zerstören Sie ihn nach Abschluss.

64 

65Am besten für einmalige Aufgaben, der Benutzer kann weiterhin mit der KI interagieren, während die Aufgabe abgeschlossen wird, aber nach Abschluss wird der Container zerstört.

66 

67**Beispiele:**

68 

69* Fehleruntersuchung und -behebung: Debuggen und Beheben eines spezifischen Problems mit relevantem Kontext

70* Rechnungsverarbeitung: Extrahieren und Strukturieren von Daten aus Quittungen/Rechnungen für Buchhaltungssysteme

71* Übersetzungsaufgaben: Übersetzen von Dokumenten oder Inhaltschargen zwischen Sprachen

72* Bild-/Videobearbeitung: Anwenden von Transformationen, Optimierungen oder Extrahieren von Metadaten aus Mediendateien

73 

74### Muster 2: Lang laufende Sitzungen

75 

76Behalten Sie persistente Container-Instanzen für lang laufende Aufgaben bei. Oft laufen *mehrere* Claude Agent-Prozesse innerhalb des Containers basierend auf Bedarf.

77 

78Am besten für proaktive Agenten, die ohne Benutzereingabe handeln, Agenten, die Inhalte bereitstellen, oder Agenten, die große Mengen an Nachrichten verarbeiten.

79 

80**Beispiele:**

81 

82* E-Mail-Agent: Überwacht eingehende E-Mails und sortiert, antwortet oder ergreift automatisch Maßnahmen basierend auf dem Inhalt

83* Website-Builder: Hostet benutzerdefinierte Websites pro Benutzer mit Live-Bearbeitungsfunktionen, die über Container-Ports bereitgestellt werden

84* Hochfrequente Chat-Bots: Verarbeitet kontinuierliche Nachrichtenströme von Plattformen wie Slack, wo schnelle Reaktionszeiten entscheidend sind

85 

86### Muster 3: Hybrid-Sitzungen

87 

88Ephemere Container, die mit Verlauf und Zustand hydratisiert werden, möglicherweise aus einer Datenbank oder aus den Sitzungswiederaufnahmefunktionen des SDK.

89 

90Am besten für Container mit intermittierender Benutzerinteraktion, die Arbeit startet und herunterfährt, wenn die Arbeit abgeschlossen ist, aber fortgesetzt werden kann.

91 

92**Beispiele:**

93 

94* Persönlicher Projektmanager: Hilft bei der Verwaltung laufender Projekte mit intermittierenden Check-ins, behält den Kontext von Aufgaben, Entscheidungen und Fortschritt

95* Tiefgehende Recherche: Führt mehrstündige Recherchaufgaben durch, speichert Erkenntnisse und setzt die Untersuchung fort, wenn der Benutzer zurückkehrt

96* Kundenservice-Agent: Verarbeitet Support-Tickets, die mehrere Interaktionen umfassen, lädt Ticket-Verlauf und Kundenkontext

97 

98### Muster 4: Einzelne Container

99 

100Führen Sie mehrere Claude Agent SDK-Prozesse in einem globalen Container aus.

101 

102Am besten für Agenten, die eng zusammenarbeiten müssen. Dies ist wahrscheinlich das am wenigsten beliebte Muster, da Sie verhindern müssen, dass Agenten sich gegenseitig überschreiben.

103 

104**Beispiele:**

105 

106* **Simulationen**: Agenten, die in Simulationen wie Videospielen miteinander interagieren.

107 

108## Häufig gestellte Fragen

109 

110### Wie kommuniziere ich mit meinen Sandboxes?

111 

112Beim Hosting in Containern müssen Sie Ports freigeben, um mit Ihren SDK-Instanzen zu kommunizieren. Ihre Anwendung kann HTTP/WebSocket-Endpunkte für externe Clients freigeben, während das SDK intern im Container ausgeführt wird.

113 

114### Was kostet das Hosting eines Containers?

115 

116Die dominanten Kosten für die Bereitstellung von Agenten sind die Token; Container variieren je nachdem, was Sie bereitstellen, aber die Mindestkosten liegen bei etwa 5 Cent pro Stunde Laufzeit.

117 

118### Wann sollte ich untätige Container herunterfahren und wann sollte ich sie warm halten?

119 

120Dies ist wahrscheinlich anbieterabhängig, verschiedene Sandbox-Anbieter ermöglichen es Ihnen, unterschiedliche Kriterien für Leerlauf-Timeouts festzulegen, nach denen eine Sandbox möglicherweise heruntergefahren wird.

121Sie sollten diesen Timeout basierend darauf abstimmen, wie häufig Sie denken, dass eine Benutzerantwort erfolgen könnte.

122 

123### Wie oft sollte ich die Claude Code CLI aktualisieren?

124 

125Die Claude Code CLI wird mit Semver versioniert, daher werden alle Breaking Changes versioniert.

126 

127### Wie überwache ich die Container-Integrität und die Agent-Leistung?

128 

129Da Container nur Server sind, funktioniert die gleiche Logging-Infrastruktur, die Sie für das Backend verwenden, auch für Container.

130 

131### Wie lange kann eine Agent-Sitzung laufen, bevor sie ausfällt?

132 

133Eine Agent-Sitzung wird nicht ausfallen, aber erwägen Sie, eine 'maxTurns'-Eigenschaft festzulegen, um zu verhindern, dass Claude in einer Schleife stecken bleibt.

134 

135## Nächste Schritte

136 

137* [Sichere Bereitstellung](/de/agent-sdk/secure-deployment) - Netzwerkkontrollen, Verwaltung von Anmeldedaten und Isolationshärtung

138* [TypeScript SDK - Sandbox-Einstellungen](/de/agent-sdk/typescript#sandbox-settings) - Konfigurieren Sie die Sandbox programmgesteuert

139* [Sitzungsleitfaden](/de/agent-sdk/sessions) - Erfahren Sie mehr über Sitzungsverwaltung

140* [Berechtigungen](/de/agent-sdk/permissions) - Konfigurieren Sie Tool-Berechtigungen

141* [Kostenverfolgung](/de/agent-sdk/cost-tracking) - Überwachen Sie die API-Nutzung

142* [MCP-Integration](/de/agent-sdk/mcp) - Erweitern Sie mit benutzerdefinierten Tools

agent-sdk/overview.md +607 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Agent SDK – Übersicht

6 

7> Erstellen Sie produktive KI-Agenten mit Claude Code als Bibliothek

8 

9<Note>

10 Das Claude Code SDK wurde in das Claude Agent SDK umbenannt. Wenn Sie vom alten SDK migrieren, siehe [Migrationsleitfaden](/de/agent-sdk/migration-guide).

11</Note>

12 

13Erstellen Sie KI-Agenten, die autonom Dateien lesen, Befehle ausführen, das Web durchsuchen, Code bearbeiten und vieles mehr. Das Agent SDK bietet Ihnen die gleichen Tools, die Agent-Schleife und das Kontextmanagement, die Claude Code antreiben, programmierbar in Python und TypeScript.

14 

15<Note>

16 Opus 4.7 (`claude-opus-4-7`) erfordert Agent SDK v0.2.111 oder später. Wenn Sie einen `thinking.type.enabled` API-Fehler sehen, siehe [Fehlerbehebung](/de/agent-sdk/quickstart#troubleshooting).

17</Note>

18 

19<CodeGroup>

20 ```python Python theme={null}

21 import asyncio

22 from claude_agent_sdk import query, ClaudeAgentOptions

23 

24 

25 async def main():

26 async for message in query(

27 prompt="Find and fix the bug in auth.py",

28 options=ClaudeAgentOptions(allowed_tools=["Read", "Edit", "Bash"]),

29 ):

30 print(message) # Claude reads the file, finds the bug, edits it

31 

32 

33 asyncio.run(main())

34 ```

35 

36 ```typescript TypeScript theme={null}

37 import { query } from "@anthropic-ai/claude-agent-sdk";

38 

39 for await (const message of query({

40 prompt: "Find and fix the bug in auth.ts",

41 options: { allowedTools: ["Read", "Edit", "Bash"] }

42 })) {

43 console.log(message); // Claude reads the file, finds the bug, edits it

44 }

45 ```

46</CodeGroup>

47 

48Das Agent SDK enthält integrierte Tools zum Lesen von Dateien, Ausführen von Befehlen und Bearbeiten von Code, sodass Ihr Agent sofort arbeiten kann, ohne dass Sie die Tool-Ausführung implementieren müssen. Tauchen Sie in den Schnellstart ein oder erkunden Sie echte Agenten, die mit dem SDK erstellt wurden:

49 

50<CardGroup cols={2}>

51 <Card title="Schnellstart" icon="play" href="/de/agent-sdk/quickstart">

52 Erstellen Sie einen Fehlerbereinigungsagenten in wenigen Minuten

53 </Card>

54 

55 <Card title="Beispielagenten" icon="star" href="https://github.com/anthropics/claude-agent-sdk-demos">

56 E-Mail-Assistent, Forschungsagent und mehr

57 </Card>

58</CardGroup>

59 

60## Erste Schritte

61 

62<Steps>

63 <Step title="Installieren Sie das SDK">

64 <Tabs>

65 <Tab title="TypeScript">

66 ```bash theme={null}

67 npm install @anthropic-ai/claude-agent-sdk

68 ```

69 </Tab>

70 

71 <Tab title="Python">

72 ```bash theme={null}

73 pip install claude-agent-sdk

74 ```

75 </Tab>

76 </Tabs>

77 

78 <Note>

79 Das TypeScript SDK bündelt eine native Claude Code-Binärdatei für Ihre Plattform als optionale Abhängigkeit, sodass Sie Claude Code nicht separat installieren müssen.

80 </Note>

81 </Step>

82 

83 <Step title="Legen Sie Ihren API-Schlüssel fest">

84 Rufen Sie einen API-Schlüssel aus der [Konsole](https://platform.claude.com/) ab und legen Sie ihn als Umgebungsvariable fest:

85 

86 ```bash theme={null}

87 export ANTHROPIC_API_KEY=your-api-key

88 ```

89 

90 Das SDK unterstützt auch Authentifizierung über Drittanbieter-API-Anbieter:

91 

92 * **Amazon Bedrock**: Setzen Sie die Umgebungsvariable `CLAUDE_CODE_USE_BEDROCK=1` und konfigurieren Sie AWS-Anmeldedaten

93 * **Google Vertex AI**: Setzen Sie die Umgebungsvariable `CLAUDE_CODE_USE_VERTEX=1` und konfigurieren Sie Google Cloud-Anmeldedaten

94 * **Microsoft Azure**: Setzen Sie die Umgebungsvariable `CLAUDE_CODE_USE_FOUNDRY=1` und konfigurieren Sie Azure-Anmeldedaten

95 

96 Weitere Informationen finden Sie in den Einrichtungsleitfäden für [Bedrock](/de/amazon-bedrock), [Vertex AI](/de/google-vertex-ai) oder [Azure AI Foundry](/de/microsoft-foundry).

97 

98 <Note>

99 Sofern nicht zuvor genehmigt, erlaubt Anthropic Drittentwicklern nicht, claude.ai-Anmeldungen oder Ratenlimits für ihre Produkte anzubieten, einschließlich Agenten, die auf dem Claude Agent SDK basieren. Verwenden Sie stattdessen die in diesem Dokument beschriebenen API-Schlüssel-Authentifizierungsmethoden.

100 </Note>

101 </Step>

102 

103 <Step title="Führen Sie Ihren ersten Agenten aus">

104 Dieses Beispiel erstellt einen Agenten, der Dateien in Ihrem aktuellen Verzeichnis mit integrierten Tools auflistet.

105 

106 <CodeGroup>

107 ```python Python theme={null}

108 import asyncio

109 from claude_agent_sdk import query, ClaudeAgentOptions

110 

111 

112 async def main():

113 async for message in query(

114 prompt="What files are in this directory?",

115 options=ClaudeAgentOptions(allowed_tools=["Bash", "Glob"]),

116 ):

117 if hasattr(message, "result"):

118 print(message.result)

119 

120 

121 asyncio.run(main())

122 ```

123 

124 ```typescript TypeScript theme={null}

125 import { query } from "@anthropic-ai/claude-agent-sdk";

126 

127 for await (const message of query({

128 prompt: "What files are in this directory?",

129 options: { allowedTools: ["Bash", "Glob"] }

130 })) {

131 if ("result" in message) console.log(message.result);

132 }

133 ```

134 </CodeGroup>

135 </Step>

136</Steps>

137 

138**Bereit zum Erstellen?** Folgen Sie dem [Schnellstart](/de/agent-sdk/quickstart), um einen Agenten zu erstellen, der Fehler in wenigen Minuten findet und behebt.

139 

140## Funktionen

141 

142Alles, was Claude Code leistungsstark macht, ist im SDK verfügbar:

143 

144<Tabs>

145 <Tab title="Integrierte Tools">

146 Ihr Agent kann Dateien lesen, Befehle ausführen und Codebases sofort durchsuchen. Wichtige Tools sind:

147 

148 | Tool | Was es tut |

149 | --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |

150 | **Read** | Lesen Sie jede Datei im Arbeitsverzeichnis |

151 | **Write** | Erstellen Sie neue Dateien |

152 | **Edit** | Nehmen Sie präzise Änderungen an vorhandenen Dateien vor |

153 | **Bash** | Führen Sie Terminalbefehle, Skripte und Git-Operationen aus |

154 | **Monitor** | Überwachen Sie ein Hintergrundskript und reagieren Sie auf jede Ausgabezeile als Ereignis |

155 | **Glob** | Suchen Sie Dateien nach Muster (`**/*.ts`, `src/**/*.py`) |

156 | **Grep** | Durchsuchen Sie Dateiinhalte mit Regex |

157 | **WebSearch** | Durchsuchen Sie das Web nach aktuellen Informationen |

158 | **WebFetch** | Rufen Sie Webseiteninhalte ab und analysieren Sie sie |

159 | **[AskUserQuestion](/de/agent-sdk/user-input#handle-clarifying-questions)** | Stellen Sie dem Benutzer Klärungsfragen mit Mehrfachauswahloptionen |

160 

161 Dieses Beispiel erstellt einen Agenten, der Ihre Codebasis nach TODO-Kommentaren durchsucht:

162 

163 <CodeGroup>

164 ```python Python theme={null}

165 import asyncio

166 from claude_agent_sdk import query, ClaudeAgentOptions

167 

168 

169 async def main():

170 async for message in query(

171 prompt="Find all TODO comments and create a summary",

172 options=ClaudeAgentOptions(allowed_tools=["Read", "Glob", "Grep"]),

173 ):

174 if hasattr(message, "result"):

175 print(message.result)

176 

177 

178 asyncio.run(main())

179 ```

180 

181 ```typescript TypeScript theme={null}

182 import { query } from "@anthropic-ai/claude-agent-sdk";

183 

184 for await (const message of query({

185 prompt: "Find all TODO comments and create a summary",

186 options: { allowedTools: ["Read", "Glob", "Grep"] }

187 })) {

188 if ("result" in message) console.log(message.result);

189 }

190 ```

191 </CodeGroup>

192 </Tab>

193 

194 <Tab title="Hooks">

195 Führen Sie benutzerdefinierten Code an wichtigen Punkten im Agent-Lebenszyklus aus. SDK-Hooks verwenden Callback-Funktionen, um Agent-Verhalten zu validieren, zu protokollieren, zu blockieren oder zu transformieren.

196 

197 **Verfügbare Hooks:** `PreToolUse`, `PostToolUse`, `Stop`, `SessionStart`, `SessionEnd`, `UserPromptSubmit` und mehr.

198 

199 Dieses Beispiel protokolliert alle Dateiänderungen in einer Audit-Datei:

200 

201 <CodeGroup>

202 ```python Python theme={null}

203 import asyncio

204 from datetime import datetime

205 from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher

206 

207 

208 async def log_file_change(input_data, tool_use_id, context):

209 file_path = input_data.get("tool_input", {}).get("file_path", "unknown")

210 with open("./audit.log", "a") as f:

211 f.write(f"{datetime.now()}: modified {file_path}\n")

212 return {}

213 

214 

215 async def main():

216 async for message in query(

217 prompt="Refactor utils.py to improve readability",

218 options=ClaudeAgentOptions(

219 permission_mode="acceptEdits",

220 hooks={

221 "PostToolUse": [

222 HookMatcher(matcher="Edit|Write", hooks=[log_file_change])

223 ]

224 },

225 ),

226 ):

227 if hasattr(message, "result"):

228 print(message.result)

229 

230 

231 asyncio.run(main())

232 ```

233 

234 ```typescript TypeScript theme={null}

235 import { query, HookCallback } from "@anthropic-ai/claude-agent-sdk";

236 import { appendFile } from "fs/promises";

237 

238 const logFileChange: HookCallback = async (input) => {

239 const filePath = (input as any).tool_input?.file_path ?? "unknown";

240 await appendFile("./audit.log", `${new Date().toISOString()}: modified ${filePath}\n`);

241 return {};

242 };

243 

244 for await (const message of query({

245 prompt: "Refactor utils.py to improve readability",

246 options: {

247 permissionMode: "acceptEdits",

248 hooks: {

249 PostToolUse: [{ matcher: "Edit|Write", hooks: [logFileChange] }]

250 }

251 }

252 })) {

253 if ("result" in message) console.log(message.result);

254 }

255 ```

256 </CodeGroup>

257 

258 [Weitere Informationen zu Hooks →](/de/agent-sdk/hooks)

259 </Tab>

260 

261 <Tab title="Subagenten">

262 Spawnen Sie spezialisierte Agenten, um fokussierte Teilaufgaben zu bewältigen. Ihr Hauptagent delegiert Arbeit, und Subagenten berichten mit Ergebnissen zurück.

263 

264 Definieren Sie benutzerdefinierte Agenten mit spezialisierten Anweisungen. Fügen Sie `Agent` in `allowedTools` ein, da Subagenten über das Agent-Tool aufgerufen werden:

265 

266 <CodeGroup>

267 ```python Python theme={null}

268 import asyncio

269 from claude_agent_sdk import query, ClaudeAgentOptions, AgentDefinition

270 

271 

272 async def main():

273 async for message in query(

274 prompt="Use the code-reviewer agent to review this codebase",

275 options=ClaudeAgentOptions(

276 allowed_tools=["Read", "Glob", "Grep", "Agent"],

277 agents={

278 "code-reviewer": AgentDefinition(

279 description="Expert code reviewer for quality and security reviews.",

280 prompt="Analyze code quality and suggest improvements.",

281 tools=["Read", "Glob", "Grep"],

282 )

283 },

284 ),

285 ):

286 if hasattr(message, "result"):

287 print(message.result)

288 

289 

290 asyncio.run(main())

291 ```

292 

293 ```typescript TypeScript theme={null}

294 import { query } from "@anthropic-ai/claude-agent-sdk";

295 

296 for await (const message of query({

297 prompt: "Use the code-reviewer agent to review this codebase",

298 options: {

299 allowedTools: ["Read", "Glob", "Grep", "Agent"],

300 agents: {

301 "code-reviewer": {

302 description: "Expert code reviewer for quality and security reviews.",

303 prompt: "Analyze code quality and suggest improvements.",

304 tools: ["Read", "Glob", "Grep"]

305 }

306 }

307 }

308 })) {

309 if ("result" in message) console.log(message.result);

310 }

311 ```

312 </CodeGroup>

313 

314 Nachrichten aus dem Kontext eines Subagenten enthalten ein `parent_tool_use_id`-Feld, mit dem Sie verfolgen können, welche Nachrichten zu welcher Subagenten-Ausführung gehören.

315 

316 [Weitere Informationen zu Subagenten →](/de/agent-sdk/subagents)

317 </Tab>

318 

319 <Tab title="MCP">

320 Verbinden Sie sich mit externen Systemen über das Model Context Protocol: Datenbanken, Browser, APIs und [hunderte mehr](https://github.com/modelcontextprotocol/servers).

321 

322 Dieses Beispiel verbindet den [Playwright MCP-Server](https://github.com/microsoft/playwright-mcp), um Ihrem Agenten Browser-Automatisierungsfunktionen zu geben:

323 

324 <CodeGroup>

325 ```python Python theme={null}

326 import asyncio

327 from claude_agent_sdk import query, ClaudeAgentOptions

328 

329 

330 async def main():

331 async for message in query(

332 prompt="Open example.com and describe what you see",

333 options=ClaudeAgentOptions(

334 mcp_servers={

335 "playwright": {"command": "npx", "args": ["@playwright/mcp@latest"]}

336 }

337 ),

338 ):

339 if hasattr(message, "result"):

340 print(message.result)

341 

342 

343 asyncio.run(main())

344 ```

345 

346 ```typescript TypeScript theme={null}

347 import { query } from "@anthropic-ai/claude-agent-sdk";

348 

349 for await (const message of query({

350 prompt: "Open example.com and describe what you see",

351 options: {

352 mcpServers: {

353 playwright: { command: "npx", args: ["@playwright/mcp@latest"] }

354 }

355 }

356 })) {

357 if ("result" in message) console.log(message.result);

358 }

359 ```

360 </CodeGroup>

361 

362 [Weitere Informationen zu MCP →](/de/agent-sdk/mcp)

363 </Tab>

364 

365 <Tab title="Berechtigungen">

366 Kontrollieren Sie genau, welche Tools Ihr Agent verwenden kann. Erlauben Sie sichere Operationen, blockieren Sie gefährliche oder erfordern Sie Genehmigung für sensible Aktionen.

367 

368 <Note>

369 Für interaktive Genehmigungseingabeaufforderungen und das `AskUserQuestion`-Tool siehe [Genehmigungen und Benutzereingaben verarbeiten](/de/agent-sdk/user-input).

370 </Note>

371 

372 Dieses Beispiel erstellt einen schreibgeschützten Agenten, der Code analysieren, aber nicht ändern kann. `allowed_tools` genehmigt `Read`, `Glob` und `Grep` vorab.

373 

374 <CodeGroup>

375 ```python Python theme={null}

376 import asyncio

377 from claude_agent_sdk import query, ClaudeAgentOptions

378 

379 

380 async def main():

381 async for message in query(

382 prompt="Review this code for best practices",

383 options=ClaudeAgentOptions(

384 allowed_tools=["Read", "Glob", "Grep"],

385 ),

386 ):

387 if hasattr(message, "result"):

388 print(message.result)

389 

390 

391 asyncio.run(main())

392 ```

393 

394 ```typescript TypeScript theme={null}

395 import { query } from "@anthropic-ai/claude-agent-sdk";

396 

397 for await (const message of query({

398 prompt: "Review this code for best practices",

399 options: {

400 allowedTools: ["Read", "Glob", "Grep"]

401 }

402 })) {

403 if ("result" in message) console.log(message.result);

404 }

405 ```

406 </CodeGroup>

407 

408 [Weitere Informationen zu Berechtigungen →](/de/agent-sdk/permissions)

409 </Tab>

410 

411 <Tab title="Sitzungen">

412 Behalten Sie den Kontext über mehrere Austausche hinweg bei. Claude merkt sich gelesene Dateien, durchgeführte Analysen und Gesprächsverlauf. Setzen Sie Sitzungen später fort oder verzweigen Sie sie, um verschiedene Ansätze zu erkunden.

413 

414 Dieses Beispiel erfasst die Sitzungs-ID aus der ersten Abfrage und setzt sie dann fort, um mit vollständigem Kontext fortzufahren:

415 

416 <CodeGroup>

417 ```python Python theme={null}

418 import asyncio

419 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage, ResultMessage

420 

421 

422 async def main():

423 session_id = None

424 

425 # First query: capture the session ID

426 async for message in query(

427 prompt="Read the authentication module",

428 options=ClaudeAgentOptions(allowed_tools=["Read", "Glob"]),

429 ):

430 if isinstance(message, SystemMessage) and message.subtype == "init":

431 session_id = message.data["session_id"]

432 

433 # Resume with full context from the first query

434 async for message in query(

435 prompt="Now find all places that call it", # "it" = auth module

436 options=ClaudeAgentOptions(resume=session_id),

437 ):

438 if isinstance(message, ResultMessage):

439 print(message.result)

440 

441 

442 asyncio.run(main())

443 ```

444 

445 ```typescript TypeScript theme={null}

446 import { query } from "@anthropic-ai/claude-agent-sdk";

447 

448 let sessionId: string | undefined;

449 

450 // First query: capture the session ID

451 for await (const message of query({

452 prompt: "Read the authentication module",

453 options: { allowedTools: ["Read", "Glob"] }

454 })) {

455 if (message.type === "system" && message.subtype === "init") {

456 sessionId = message.session_id;

457 }

458 }

459 

460 // Resume with full context from the first query

461 for await (const message of query({

462 prompt: "Now find all places that call it", // "it" = auth module

463 options: { resume: sessionId }

464 })) {

465 if ("result" in message) console.log(message.result);

466 }

467 ```

468 </CodeGroup>

469 

470 [Weitere Informationen zu Sitzungen →](/de/agent-sdk/sessions)

471 </Tab>

472</Tabs>

473 

474### Claude Code-Funktionen

475 

476Das SDK unterstützt auch die dateisystembasierte Konfiguration von Claude Code. Mit Standardoptionen lädt das SDK diese aus `.claude/` in Ihrem Arbeitsverzeichnis und `~/.claude/`. Um einzuschränken, welche Quellen geladen werden, setzen Sie `setting_sources` (Python) oder `settingSources` (TypeScript) in Ihren Optionen.

477 

478| Funktion | Beschreibung | Speicherort |

479| ------------------------------------------------ | ----------------------------------------------------------------------- | --------------------------------------- |

480| [Skills](/de/agent-sdk/skills) | Spezialisierte Funktionen, die in Markdown definiert sind | `.claude/skills/*/SKILL.md` |

481| [Slash commands](/de/agent-sdk/slash-commands) | Benutzerdefinierte Befehle für häufige Aufgaben | `.claude/commands/*.md` |

482| [Memory](/de/agent-sdk/modifying-system-prompts) | Projektkontext und Anweisungen | `CLAUDE.md` oder `.claude/CLAUDE.md` |

483| [Plugins](/de/agent-sdk/plugins) | Erweitern Sie mit benutzerdefinierten Befehlen, Agenten und MCP-Servern | Programmgesteuert über `plugins`-Option |

484 

485## Vergleichen Sie das Agent SDK mit anderen Claude-Tools

486 

487Die Claude-Plattform bietet mehrere Möglichkeiten, mit Claude zu erstellen. So passt das Agent SDK:

488 

489<Tabs>

490 <Tab title="Agent SDK vs Client SDK">

491 Das [Anthropic Client SDK](https://platform.claude.com/docs/de/api/client-sdks) bietet Ihnen direkten API-Zugriff: Sie senden Eingabeaufforderungen und implementieren die Tool-Ausführung selbst. Das **Agent SDK** bietet Ihnen Claude mit integrierter Tool-Ausführung.

492 

493 Mit dem Client SDK implementieren Sie eine Tool-Schleife. Mit dem Agent SDK handhabt Claude es:

494 

495 <CodeGroup>

496 ```python Python theme={null}

497 # Client SDK: You implement the tool loop

498 response = client.messages.create(...)

499 while response.stop_reason == "tool_use":

500 result = your_tool_executor(response.tool_use)

501 response = client.messages.create(tool_result=result, **params)

502 

503 # Agent SDK: Claude handles tools autonomously

504 async for message in query(prompt="Fix the bug in auth.py"):

505 print(message)

506 ```

507 

508 ```typescript TypeScript theme={null}

509 // Client SDK: You implement the tool loop

510 let response = await client.messages.create({ ...params });

511 while (response.stop_reason === "tool_use") {

512 const result = yourToolExecutor(response.tool_use);

513 response = await client.messages.create({ tool_result: result, ...params });

514 }

515 

516 // Agent SDK: Claude handles tools autonomously

517 for await (const message of query({ prompt: "Fix the bug in auth.ts" })) {

518 console.log(message);

519 }

520 ```

521 </CodeGroup>

522 </Tab>

523 

524 <Tab title="Agent SDK vs Claude Code CLI">

525 Gleiche Funktionen, andere Schnittstelle:

526 

527 | Anwendungsfall | Beste Wahl |

528 | ------------------------------ | ---------- |

529 | Interaktive Entwicklung | CLI |

530 | CI/CD-Pipelines | SDK |

531 | Benutzerdefinierte Anwendungen | SDK |

532 | Einmalige Aufgaben | CLI |

533 | Produktionsautomatisierung | SDK |

534 

535 Viele Teams verwenden beide: CLI für die tägliche Entwicklung, SDK für die Produktion. Workflows lassen sich direkt zwischen ihnen übersetzen.

536 </Tab>

537 

538 <Tab title="Agent SDK vs Managed Agents">

539 [Managed Agents](https://platform.claude.com/docs/de/managed-agents/overview) ist eine gehostete REST-API: Anthropic führt den Agent und die Sandbox aus, und Ihre Anwendung sendet Ereignisse und streamt Ergebnisse zurück. Das **Agent SDK** ist eine Bibliothek, die die Agent-Schleife in Ihrem eigenen Prozess ausführt.

540 

541 | | Agent SDK | Managed Agents |

542 | ---------------------------- | --------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |

543 | **Läuft in** | Ihr Prozess, Ihre Infrastruktur | Von Anthropic verwaltete Infrastruktur |

544 | **Schnittstelle** | Python- oder TypeScript-Bibliothek | REST-API |

545 | **Agent arbeitet an** | Dateien in Ihrer Infrastruktur | Eine verwaltete Sandbox pro Sitzung |

546 | **Sitzungsstatus** | JSONL auf Ihrem Dateisystem | Von Anthropic gehostetes Ereignisprotokoll |

547 | **Benutzerdefinierte Tools** | In-Process-Python- oder TypeScript-Funktionen | Claude löst das Tool aus; Sie führen es aus und geben Ergebnisse zurück |

548 | **Am besten für** | Lokale Prototypisierung, Agents, die direkt auf Ihrem Dateisystem und Ihren Diensten arbeiten | Produktions-Agents ohne Betrieb von Sandbox- oder Sitzungsinfrastruktur, langfristige und asynchrone Sitzungen |

549 

550 Ein häufiger Weg ist die Prototypisierung mit dem Agent SDK lokal und dann der Wechsel zu Managed Agents für die Produktion.

551 </Tab>

552</Tabs>

553 

554## Änderungsprotokoll

555 

556Sehen Sie sich das vollständige Änderungsprotokoll für SDK-Updates, Fehlerbehebungen und neue Funktionen an:

557 

558* **TypeScript SDK**: [CHANGELOG.md anzeigen](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md)

559* **Python SDK**: [CHANGELOG.md anzeigen](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md)

560 

561## Fehler melden

562 

563Wenn Sie auf Fehler oder Probleme mit dem Agent SDK stoßen:

564 

565* **TypeScript SDK**: [Probleme auf GitHub melden](https://github.com/anthropics/claude-agent-sdk-typescript/issues)

566* **Python SDK**: [Probleme auf GitHub melden](https://github.com/anthropics/claude-agent-sdk-python/issues)

567 

568## Richtlinien für die Markennutzung

569 

570Für Partner, die das Claude Agent SDK integrieren, ist die Verwendung von Claude-Branding optional. Wenn Sie Claude in Ihrem Produkt referenzieren:

571 

572**Erlaubt:**

573 

574* 'Claude Agent" (bevorzugt für Dropdown-Menüs)

575* „Claude" (wenn bereits in einem Menü mit der Bezeichnung „Agents")

576* „{YourAgentName} Powered by Claude" (wenn Sie einen vorhandenen Agentennamen haben)

577 

578**Nicht erlaubt:**

579 

580* „Claude Code" oder „Claude Code Agent"

581* Claude Code-Branding ASCII-Art oder visuelle Elemente, die Claude Code nachahmen

582 

583Ihr Produkt sollte sein eigenes Branding beibehalten und nicht wie Claude Code oder ein anderes Anthropic-Produkt aussehen. Wenden Sie sich bei Fragen zur Markenkonformität an das Anthropic-[Vertriebsteam](https://www.anthropic.com/contact-sales).

584 

585## Lizenz und Bedingungen

586 

587Die Verwendung des Claude Agent SDK unterliegt den [Anthropic Commercial Terms of Service](https://www.anthropic.com/legal/commercial-terms), auch wenn Sie es verwenden, um Produkte und Dienste bereitzustellen, die Sie Ihren eigenen Kunden und Endbenutzern zur Verfügung stellen, außer soweit eine bestimmte Komponente oder Abhängigkeit unter einer anderen Lizenz abgedeckt ist, wie in der LICENSE-Datei dieser Komponente angegeben.

588 

589## Nächste Schritte

590 

591<CardGroup cols={2}>

592 <Card title="Schnellstart" icon="play" href="/de/agent-sdk/quickstart">

593 Erstellen Sie einen Agenten, der Fehler in wenigen Minuten findet und behebt

594 </Card>

595 

596 <Card title="Beispielagenten" icon="star" href="https://github.com/anthropics/claude-agent-sdk-demos">

597 E-Mail-Assistent, Forschungsagent und mehr

598 </Card>

599 

600 <Card title="TypeScript SDK" icon="code" href="/de/agent-sdk/typescript">

601 Vollständige TypeScript-API-Referenz und Beispiele

602 </Card>

603 

604 <Card title="Python SDK" icon="code" href="/de/agent-sdk/python">

605 Vollständige Python-API-Referenz und Beispiele

606 </Card>

607</CardGroup>

agent-sdk/plugins.md +342 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Plugins im SDK

6 

7> Laden Sie benutzerdefinierte Plugins, um Claude Code mit Befehlen, Agenten, Skills und Hooks über das Agent SDK zu erweitern

8 

9Plugins ermöglichen es Ihnen, Claude Code mit benutzerdefinierten Funktionen zu erweitern, die projektübergreifend gemeinsam genutzt werden können. Über das Agent SDK können Sie Plugins programmgesteuert aus lokalen Verzeichnissen laden, um benutzerdefinierte Slash-Befehle, Agenten, Skills, Hooks und MCP-Server zu Ihren Agent-Sitzungen hinzuzufügen.

10 

11## Was sind Plugins?

12 

13Plugins sind Pakete von Claude Code-Erweiterungen, die Folgendes enthalten können:

14 

15* **Skills**: Von Modellen aufgerufene Funktionen, die Claude autonom nutzt (können auch mit `/skill-name` aufgerufen werden)

16* **Agenten**: Spezialisierte Subagenten für spezifische Aufgaben

17* **Hooks**: Event-Handler, die auf Tool-Nutzung und andere Ereignisse reagieren

18* **MCP-Server**: Externe Tool-Integrationen über das Model Context Protocol

19 

20<Note>

21 Das Verzeichnis `commands/` ist ein veraltetes Format. Verwenden Sie `skills/` für neue Plugins. Claude Code unterstützt weiterhin beide Formate für Rückwärtskompatibilität.

22</Note>

23 

24Vollständige Informationen zur Plugin-Struktur und zum Erstellen von Plugins finden Sie unter [Plugins](/de/plugins).

25 

26## Plugins laden

27 

28Laden Sie Plugins, indem Sie ihre lokalen Dateisystempfade in Ihrer Optionskonfiguration angeben. Das Feld `type` muss `"local"` sein, der einzige Wert, den das SDK akzeptiert. Um ein Plugin zu verwenden, das über einen [Marketplace](/de/plugin-marketplaces) oder ein Remote-Repository verteilt wird, laden Sie es zunächst herunter und geben Sie den lokalen Verzeichnispath an. Das SDK unterstützt das Laden mehrerer Plugins aus verschiedenen Speicherorten.

29 

30<CodeGroup>

31 ```typescript TypeScript theme={null}

32 import { query } from "@anthropic-ai/claude-agent-sdk";

33 

34 for await (const message of query({

35 prompt: "Hello",

36 options: {

37 plugins: [

38 { type: "local", path: "./my-plugin" },

39 { type: "local", path: "/absolute/path/to/another-plugin" }

40 ]

41 }

42 })) {

43 // Plugin commands, agents, and other features are now available

44 }

45 ```

46 

47 ```python Python theme={null}

48 import asyncio

49 from claude_agent_sdk import query

50 

51 

52 async def main():

53 async for message in query(

54 prompt="Hello",

55 options={

56 "plugins": [

57 {"type": "local", "path": "./my-plugin"},

58 {"type": "local", "path": "/absolute/path/to/another-plugin"},

59 ]

60 },

61 ):

62 # Plugin commands, agents, and other features are now available

63 pass

64 

65 

66 asyncio.run(main())

67 ```

68</CodeGroup>

69 

70### Pfadangaben

71 

72Plugin-Pfade können sein:

73 

74* **Relative Pfade**: Aufgelöst relativ zu Ihrem aktuellen Arbeitsverzeichnis (zum Beispiel `"./plugins/my-plugin"`)

75* **Absolute Pfade**: Vollständige Dateisystempfade (zum Beispiel `"/home/user/plugins/my-plugin"`)

76 

77<Note>

78 Der Pfad sollte auf das Root-Verzeichnis des Plugins verweisen (das Verzeichnis, das `.claude-plugin/plugin.json` enthält).

79</Note>

80 

81## Plugin-Installation überprüfen

82 

83Wenn Plugins erfolgreich geladen werden, erscheinen sie in der Systeminitalisierungsmeldung. Sie können überprüfen, dass Ihre Plugins verfügbar sind:

84 

85<CodeGroup>

86 ```typescript TypeScript theme={null}

87 import { query } from "@anthropic-ai/claude-agent-sdk";

88 

89 for await (const message of query({

90 prompt: "Hello",

91 options: {

92 plugins: [{ type: "local", path: "./my-plugin" }]

93 }

94 })) {

95 if (message.type === "system" && message.subtype === "init") {

96 // Check loaded plugins

97 console.log("Plugins:", message.plugins);

98 // Example: [{ name: "my-plugin", path: "./my-plugin" }]

99 

100 // Check available commands from plugins

101 console.log("Commands:", message.slash_commands);

102 // Example: ["/help", "/compact", "my-plugin:custom-command"]

103 }

104 }

105 ```

106 

107 ```python Python theme={null}

108 import asyncio

109 from claude_agent_sdk import query

110 

111 

112 async def main():

113 async for message in query(

114 prompt="Hello", options={"plugins": [{"type": "local", "path": "./my-plugin"}]}

115 ):

116 if message.type == "system" and message.subtype == "init":

117 # Check loaded plugins

118 print("Plugins:", message.data.get("plugins"))

119 # Example: [{"name": "my-plugin", "path": "./my-plugin"}]

120 

121 # Check available commands from plugins

122 print("Commands:", message.data.get("slash_commands"))

123 # Example: ["/help", "/compact", "my-plugin:custom-command"]

124 

125 

126 asyncio.run(main())

127 ```

128</CodeGroup>

129 

130## Plugin-Skills verwenden

131 

132Skills aus Plugins werden automatisch mit dem Plugin-Namen versehen, um Konflikte zu vermeiden. Wenn sie als Slash-Befehle aufgerufen werden, ist das Format `plugin-name:skill-name`.

133 

134<CodeGroup>

135 ```typescript TypeScript theme={null}

136 import { query } from "@anthropic-ai/claude-agent-sdk";

137 

138 // Load a plugin with a custom /greet skill

139 for await (const message of query({

140 prompt: "/my-plugin:greet", // Use plugin skill with namespace

141 options: {

142 plugins: [{ type: "local", path: "./my-plugin" }]

143 }

144 })) {

145 // Claude executes the custom greeting skill from the plugin

146 if (message.type === "assistant") {

147 console.log(message.message.content);

148 }

149 }

150 ```

151 

152 ```python Python theme={null}

153 import asyncio

154 from claude_agent_sdk import query, AssistantMessage, TextBlock

155 

156 

157 async def main():

158 # Load a plugin with a custom /greet skill

159 async for message in query(

160 prompt="/demo-plugin:greet", # Use plugin skill with namespace

161 options={"plugins": [{"type": "local", "path": "./plugins/demo-plugin"}]},

162 ):

163 # Claude executes the custom greeting skill from the plugin

164 if isinstance(message, AssistantMessage):

165 for block in message.content:

166 if isinstance(block, TextBlock):

167 print(f"Claude: {block.text}")

168 

169 

170 asyncio.run(main())

171 ```

172</CodeGroup>

173 

174<Note>

175 Wenn Sie ein Plugin über die CLI installiert haben (zum Beispiel `/plugin install my-plugin@marketplace`), können Sie es im SDK weiterhin verwenden, indem Sie seinen Installationspfad angeben. Überprüfen Sie `~/.claude/plugins/` auf über die CLI installierte Plugins.

176</Note>

177 

178## Vollständiges Beispiel

179 

180Hier ist ein vollständiges Beispiel, das das Laden und die Verwendung von Plugins demonstriert:

181 

182<CodeGroup>

183 ```typescript TypeScript theme={null}

184 import { query } from "@anthropic-ai/claude-agent-sdk";

185 import * as path from "path";

186 

187 async function runWithPlugin() {

188 const pluginPath = path.join(__dirname, "plugins", "my-plugin");

189 

190 console.log("Loading plugin from:", pluginPath);

191 

192 for await (const message of query({

193 prompt: "What custom commands do you have available?",

194 options: {

195 plugins: [{ type: "local", path: pluginPath }],

196 maxTurns: 3

197 }

198 })) {

199 if (message.type === "system" && message.subtype === "init") {

200 console.log("Loaded plugins:", message.plugins);

201 console.log("Available commands:", message.slash_commands);

202 }

203 

204 if (message.type === "assistant") {

205 console.log("Assistant:", message.message.content);

206 }

207 }

208 }

209 

210 runWithPlugin().catch(console.error);

211 ```

212 

213 ```python Python theme={null}

214 #!/usr/bin/env python3

215 """Example demonstrating how to use plugins with the Agent SDK."""

216 

217 from pathlib import Path

218 import anyio

219 from claude_agent_sdk import (

220 AssistantMessage,

221 ClaudeAgentOptions,

222 TextBlock,

223 query,

224 )

225 

226 

227 async def run_with_plugin():

228 """Example using a custom plugin."""

229 plugin_path = Path(__file__).parent / "plugins" / "demo-plugin"

230 

231 print(f"Loading plugin from: {plugin_path}")

232 

233 options = ClaudeAgentOptions(

234 plugins=[{"type": "local", "path": str(plugin_path)}],

235 max_turns=3,

236 )

237 

238 async for message in query(

239 prompt="What custom commands do you have available?", options=options

240 ):

241 if message.type == "system" and message.subtype == "init":

242 print(f"Loaded plugins: {message.data.get('plugins')}")

243 print(f"Available commands: {message.data.get('slash_commands')}")

244 

245 if isinstance(message, AssistantMessage):

246 for block in message.content:

247 if isinstance(block, TextBlock):

248 print(f"Assistant: {block.text}")

249 

250 

251 if __name__ == "__main__":

252 anyio.run(run_with_plugin)

253 ```

254</CodeGroup>

255 

256## Plugin-Struktur-Referenz

257 

258Ein Plugin-Verzeichnis muss eine `.claude-plugin/plugin.json`-Manifestdatei enthalten. Es kann optional Folgendes enthalten:

259 

260```text theme={null}

261my-plugin/

262├── .claude-plugin/

263│ └── plugin.json # Required: plugin manifest

264├── skills/ # Agent Skills (invoked autonomously or via /skill-name)

265│ └── my-skill/

266│ └── SKILL.md

267├── commands/ # Legacy: use skills/ instead

268│ └── custom-cmd.md

269├── agents/ # Custom agents

270│ └── specialist.md

271├── hooks/ # Event handlers

272│ └── hooks.json

273└── .mcp.json # MCP server definitions

274```

275 

276Detaillierte Informationen zum Erstellen von Plugins finden Sie unter:

277 

278* [Plugins](/de/plugins) - Vollständiger Plugin-Entwicklungsleitfaden

279* [Plugins-Referenz](/de/plugins-reference) - Technische Spezifikationen und Schemas

280 

281## Häufige Anwendungsfälle

282 

283### Entwicklung und Tests

284 

285Laden Sie Plugins während der Entwicklung, ohne sie global zu installieren:

286 

287```typescript theme={null}

288plugins: [{ type: "local", path: "./dev-plugins/my-plugin" }];

289```

290 

291### Projektspezifische Erweiterungen

292 

293Beziehen Sie Plugins in Ihr Projekt-Repository ein, um teamweite Konsistenz zu gewährleisten:

294 

295```typescript theme={null}

296plugins: [{ type: "local", path: "./project-plugins/team-workflows" }];

297```

298 

299### Mehrere Plugin-Quellen

300 

301Kombinieren Sie Plugins aus verschiedenen Speicherorten:

302 

303```typescript theme={null}

304plugins: [

305 { type: "local", path: "./local-plugin" },

306 { type: "local", path: "~/.claude/custom-plugins/shared-plugin" }

307];

308```

309 

310## Fehlerbehebung

311 

312### Plugin wird nicht geladen

313 

314Wenn Ihr Plugin nicht in der Init-Meldung angezeigt wird:

315 

3161. **Überprüfen Sie den Pfad**: Stellen Sie sicher, dass der Pfad auf das Plugin-Root-Verzeichnis verweist (das `.claude-plugin/` enthält)

3172. **Validieren Sie plugin.json**: Stellen Sie sicher, dass Ihre Manifestdatei eine gültige JSON-Syntax hat

3183. **Überprüfen Sie Dateiberechtigungen**: Stellen Sie sicher, dass das Plugin-Verzeichnis lesbar ist

319 

320### Skills werden nicht angezeigt

321 

322Wenn Plugin-Skills nicht funktionieren:

323 

3241. **Verwenden Sie den Namespace**: Plugin-Skills erfordern das Format `plugin-name:skill-name`, wenn sie als Slash-Befehle aufgerufen werden

3252. **Überprüfen Sie die Init-Meldung**: Überprüfen Sie, dass der Skill in `slash_commands` mit dem korrekten Namespace angezeigt wird

3263. **Validieren Sie Skill-Dateien**: Stellen Sie sicher, dass jeder Skill eine `SKILL.md`-Datei in seinem eigenen Unterverzeichnis unter `skills/` hat (zum Beispiel `skills/my-skill/SKILL.md`)

327 

328### Pfadauflösungsprobleme

329 

330Wenn relative Pfade nicht funktionieren:

331 

3321. **Überprüfen Sie das Arbeitsverzeichnis**: Relative Pfade werden von Ihrem aktuellen Arbeitsverzeichnis aus aufgelöst

3332. **Verwenden Sie absolute Pfade**: Verwenden Sie für Zuverlässigkeit absolute Pfade

3343. **Normalisieren Sie Pfade**: Verwenden Sie Pfad-Dienstprogramme, um Pfade korrekt zu konstruieren

335 

336## Siehe auch

337 

338* [Plugins](/de/plugins) - Vollständiger Plugin-Entwicklungsleitfaden

339* [Plugins-Referenz](/de/plugins-reference) - Technische Spezifikationen

340* [Slash-Befehle](/de/agent-sdk/slash-commands) - Verwendung von Slash-Befehlen im SDK

341* [Subagenten](/de/agent-sdk/subagents) - Arbeiten mit spezialisierten Agenten

342* [Skills](/de/agent-sdk/skills) - Verwendung von Agent Skills

agent-sdk/python.md +3274 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Agent SDK Referenz - Python

6 

7> Vollständige API-Referenz für das Python Agent SDK, einschließlich aller Funktionen, Typen und Klassen.

8 

9## Installation

10 

11```bash theme={null}

12pip install claude-agent-sdk

13```

14 

15## Wahl zwischen `query()` und `ClaudeSDKClient`

16 

17Das Python SDK bietet zwei Möglichkeiten, um mit Claude Code zu interagieren:

18 

19### Schnellvergleich

20 

21| Funktion | `query()` | `ClaudeSDKClient` |

22| :--------------------------- | :----------------------------------- | :------------------------------------- |

23| **Sitzung** | Erstellt jedes Mal eine neue Sitzung | Verwendet dieselbe Sitzung erneut |

24| **Konversation** | Einzelner Austausch | Mehrere Austausche im gleichen Kontext |

25| **Verbindung** | Automatisch verwaltet | Manuelle Kontrolle |

26| **Streaming-Eingabe** | ✅ Unterstützt | ✅ Unterstützt |

27| **Unterbrechungen** | ❌ Nicht unterstützt | ✅ Unterstützt |

28| **Hooks** | ✅ Unterstützt | ✅ Unterstützt |

29| **Benutzerdefinierte Tools** | ✅ Unterstützt | ✅ Unterstützt |

30| **Konversation fortsetzen** | ❌ Neue Sitzung jedes Mal | ✅ Behält Konversation bei |

31| **Anwendungsfall** | Einmalige Aufgaben | Kontinuierliche Konversationen |

32 

33### Wann `query()` verwendet werden sollte (neue Sitzung jedes Mal)

34 

35**Am besten für:**

36 

37* Einmalige Fragen, bei denen Sie keinen Konversationsverlauf benötigen

38* Unabhängige Aufgaben, die keinen Kontext aus vorherigen Austauschen erfordern

39* Einfache Automatisierungsskripte

40* Wenn Sie jedes Mal einen neuen Anfang möchten

41 

42### Wann `ClaudeSDKClient` verwendet werden sollte (kontinuierliche Konversation)

43 

44**Am besten für:**

45 

46* **Konversationen fortsetzen** - Wenn Claude den Kontext merken muss

47* **Nachfolgefragen** - Aufbauend auf vorherigen Antworten

48* **Interaktive Anwendungen** - Chat-Schnittstellen, REPLs

49* **Antwortgesteuerte Logik** - Wenn die nächste Aktion von Claudes Antwort abhängt

50* **Sitzungskontrolle** - Explizite Verwaltung des Konversationslebenszyklus

51 

52## Funktionen

53 

54### `query()`

55 

56Erstellt für jede Interaktion mit Claude Code eine neue Sitzung. Gibt einen asynchronen Iterator zurück, der Nachrichten bei ihrer Ankunft liefert. Jeder Aufruf von `query()` beginnt neu ohne Erinnerung an vorherige Interaktionen.

57 

58```python theme={null}

59async def query(

60 *,

61 prompt: str | AsyncIterable[dict[str, Any]],

62 options: ClaudeAgentOptions | None = None,

63 transport: Transport | None = None

64) -> AsyncIterator[Message]

65```

66 

67#### Parameter

68 

69| Parameter | Typ | Beschreibung |

70| :---------- | :--------------------------- | :----------------------------------------------------------------------------------------- |

71| `prompt` | `str \| AsyncIterable[dict]` | Die Eingabeaufforderung als Zeichenkette oder asynchroner Iterator für den Streaming-Modus |

72| `options` | `ClaudeAgentOptions \| None` | Optionales Konfigurationsobjekt (standardmäßig `ClaudeAgentOptions()`, wenn None) |

73| `transport` | `Transport \| None` | Optionaler benutzerdefinierter Transport für die Kommunikation mit dem CLI-Prozess |

74 

75#### Rückgabewert

76 

77Gibt einen `AsyncIterator[Message]` zurück, der Nachrichten aus der Konversation liefert.

78 

79#### Beispiel - Mit Optionen

80 

81```python theme={null}

82import asyncio

83from claude_agent_sdk import query, ClaudeAgentOptions

84 

85 

86async def main():

87 options = ClaudeAgentOptions(

88 system_prompt="You are an expert Python developer",

89 permission_mode="acceptEdits",

90 cwd="/home/user/project",

91 )

92 

93 async for message in query(prompt="Create a Python web server", options=options):

94 print(message)

95 

96 

97asyncio.run(main())

98```

99 

100### `tool()`

101 

102Dekorator zum Definieren von MCP-Tools mit Typsicherheit.

103 

104```python theme={null}

105def tool(

106 name: str,

107 description: str,

108 input_schema: type | dict[str, Any],

109 annotations: ToolAnnotations | None = None

110) -> Callable[[Callable[[Any], Awaitable[dict[str, Any]]]], SdkMcpTool[Any]]

111```

112 

113#### Parameter

114 

115| Parameter | Typ | Beschreibung |

116| :------------- | :----------------------------------------------- | :------------------------------------------------------------------------------- |

117| `name` | `str` | Eindeutige Kennung für das Tool |

118| `description` | `str` | Lesbare Beschreibung, was das Tool tut |

119| `input_schema` | `type \| dict[str, Any]` | Schema, das die Eingabeparameter des Tools definiert (siehe unten) |

120| `annotations` | [`ToolAnnotations`](#tool-annotations)` \| None` | Optionale MCP-Tool-Anmerkungen, die Verhaltenshinweise für Clients bereitstellen |

121 

122#### Eingabeschema-Optionen

123 

1241. **Einfache Typ-Zuordnung** (empfohlen):

125 

126 ```python theme={null}

127 {"text": str, "count": int, "enabled": bool}

128 ```

129 

1302. **JSON-Schema-Format** (für komplexe Validierung):

131 ```python theme={null}

132 {

133 "type": "object",

134 "properties": {

135 "text": {"type": "string"},

136 "count": {"type": "integer", "minimum": 0},

137 },

138 "required": ["text"],

139 }

140 ```

141 

142#### Rückgabewert

143 

144Eine Dekoratorfunktion, die die Tool-Implementierung umhüllt und eine `SdkMcpTool`-Instanz zurückgibt.

145 

146#### Beispiel

147 

148```python theme={null}

149from claude_agent_sdk import tool

150from typing import Any

151 

152 

153@tool("greet", "Greet a user", {"name": str})

154async def greet(args: dict[str, Any]) -> dict[str, Any]:

155 return {"content": [{"type": "text", "text": f"Hello, {args['name']}!"}]}

156```

157 

158#### `ToolAnnotations`

159 

160Erneut exportiert aus `mcp.types` (auch verfügbar als `from claude_agent_sdk import ToolAnnotations`). Alle Felder sind optionale Hinweise; Clients sollten sich nicht auf sie für Sicherheitsentscheidungen verlassen.

161 

162| Feld | Typ | Standard | Beschreibung |

163| :---------------- | :------------- | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------------- |

164| `title` | `str \| None` | `None` | Lesbare Bezeichnung für das Tool |

165| `readOnlyHint` | `bool \| None` | `False` | Wenn `True`, ändert das Tool seine Umgebung nicht |

166| `destructiveHint` | `bool \| None` | `True` | Wenn `True`, kann das Tool destruktive Aktualisierungen durchführen (nur sinnvoll, wenn `readOnlyHint` `False` ist) |

167| `idempotentHint` | `bool \| None` | `False` | Wenn `True`, haben wiederholte Aufrufe mit denselben Argumenten keine zusätzliche Auswirkung (nur sinnvoll, wenn `readOnlyHint` `False` ist) |

168| `openWorldHint` | `bool \| None` | `True` | Wenn `True`, interagiert das Tool mit externen Entitäten (z. B. Websuche). Wenn `False`, ist die Domäne des Tools geschlossen (z. B. ein Memory-Tool) |

169 

170```python theme={null}

171from claude_agent_sdk import tool, ToolAnnotations

172from typing import Any

173 

174 

175@tool(

176 "search",

177 "Search the web",

178 {"query": str},

179 annotations=ToolAnnotations(readOnlyHint=True, openWorldHint=True),

180)

181async def search(args: dict[str, Any]) -> dict[str, Any]:

182 return {"content": [{"type": "text", "text": f"Results for: {args['query']}"}]}

183```

184 

185### `create_sdk_mcp_server()`

186 

187Erstellt einen In-Process-MCP-Server, der in Ihrer Python-Anwendung ausgeführt wird.

188 

189```python theme={null}

190def create_sdk_mcp_server(

191 name: str,

192 version: str = "1.0.0",

193 tools: list[SdkMcpTool[Any]] | None = None

194) -> McpSdkServerConfig

195```

196 

197#### Parameter

198 

199| Parameter | Typ | Standard | Beschreibung |

200| :-------- | :------------------------------ | :-------- | :----------------------------------------------------------------------- |

201| `name` | `str` | - | Eindeutige Kennung für den Server |

202| `version` | `str` | `"1.0.0"` | Versionsnummer des Servers |

203| `tools` | `list[SdkMcpTool[Any]] \| None` | `None` | Liste von Tool-Funktionen, die mit dem `@tool`-Dekorator erstellt wurden |

204 

205#### Rückgabewert

206 

207Gibt ein `McpSdkServerConfig`-Objekt zurück, das an `ClaudeAgentOptions.mcp_servers` übergeben werden kann.

208 

209#### Beispiel

210 

211```python theme={null}

212from claude_agent_sdk import tool, create_sdk_mcp_server

213 

214 

215@tool("add", "Add two numbers", {"a": float, "b": float})

216async def add(args):

217 return {"content": [{"type": "text", "text": f"Sum: {args['a'] + args['b']}"}]}

218 

219 

220@tool("multiply", "Multiply two numbers", {"a": float, "b": float})

221async def multiply(args):

222 return {"content": [{"type": "text", "text": f"Product: {args['a'] * args['b']}"}]}

223 

224 

225calculator = create_sdk_mcp_server(

226 name="calculator",

227 version="2.0.0",

228 tools=[add, multiply], # Pass decorated functions

229)

230 

231# Use with Claude

232options = ClaudeAgentOptions(

233 mcp_servers={"calc": calculator},

234 allowed_tools=["mcp__calc__add", "mcp__calc__multiply"],

235)

236```

237 

238### `list_sessions()`

239 

240Listet vergangene Sitzungen mit Metadaten auf. Filtern Sie nach Projektverzeichnis oder listen Sie Sitzungen über alle Projekte auf. Synchron; gibt sofort zurück.

241 

242```python theme={null}

243def list_sessions(

244 directory: str | None = None,

245 limit: int | None = None,

246 include_worktrees: bool = True

247) -> list[SDKSessionInfo]

248```

249 

250#### Parameter

251 

252| Parameter | Typ | Standard | Beschreibung |

253| :------------------ | :------------ | :------- | :---------------------------------------------------------------------------------------------------------------------------- |

254| `directory` | `str \| None` | `None` | Verzeichnis, für das Sitzungen aufgelistet werden sollen. Wenn weggelassen, werden Sitzungen über alle Projekte zurückgegeben |

255| `limit` | `int \| None` | `None` | Maximale Anzahl der zurückzugebenden Sitzungen |

256| `include_worktrees` | `bool` | `True` | Wenn `directory` sich in einem Git-Repository befindet, Sitzungen aus allen Worktree-Pfaden einbeziehen |

257 

258#### Rückgabetyp: `SDKSessionInfo`

259 

260| Eigenschaft | Typ | Beschreibung |

261| :-------------- | :------------ | :------------------------------------------------------------------------------------------------------ |

262| `session_id` | `str` | Eindeutige Sitzungskennung |

263| `summary` | `str` | Anzeigetitel: benutzerdefinierter Titel, automatisch generierte Zusammenfassung oder erste Aufforderung |

264| `last_modified` | `int` | Letzte Änderungszeit in Millisekunden seit Epoche |

265| `file_size` | `int \| None` | Sitzungsdateigröße in Bytes (`None` für Remote-Speicher-Backends) |

266| `custom_title` | `str \| None` | Vom Benutzer festgelegter Sitzungstitel |

267| `first_prompt` | `str \| None` | Erste aussagekräftige Benutzeraufforderung in der Sitzung |

268| `git_branch` | `str \| None` | Git-Branch am Ende der Sitzung |

269| `cwd` | `str \| None` | Arbeitsverzeichnis für die Sitzung |

270| `tag` | `str \| None` | Vom Benutzer festgelegtes Sitzungs-Tag (siehe [`tag_session()`](#tag-session)) |

271| `created_at` | `int \| None` | Sitzungserstellungszeit in Millisekunden seit Epoche |

272 

273#### Beispiel

274 

275Geben Sie die 10 neuesten Sitzungen für ein Projekt aus. Die Ergebnisse werden nach `last_modified` absteigend sortiert, daher ist das erste Element das neueste. Lassen Sie `directory` weg, um über alle Projekte zu suchen.

276 

277```python theme={null}

278from claude_agent_sdk import list_sessions

279 

280for session in list_sessions(directory="/path/to/project", limit=10):

281 print(f"{session.summary} ({session.session_id})")

282```

283 

284### `get_session_messages()`

285 

286Ruft Nachrichten aus einer vergangenen Sitzung ab. Synchron; gibt sofort zurück.

287 

288```python theme={null}

289def get_session_messages(

290 session_id: str,

291 directory: str | None = None,

292 limit: int | None = None,

293 offset: int = 0

294) -> list[SessionMessage]

295```

296 

297#### Parameter

298 

299| Parameter | Typ | Standard | Beschreibung |

300| :----------- | :------------ | :----------- | :------------------------------------------------------------------------------- |

301| `session_id` | `str` | erforderlich | Die Sitzungs-ID, für die Nachrichten abgerufen werden sollen |

302| `directory` | `str \| None` | `None` | Projektverzeichnis zum Suchen. Wenn weggelassen, werden alle Projekte durchsucht |

303| `limit` | `int \| None` | `None` | Maximale Anzahl der zurückzugebenden Nachrichten |

304| `offset` | `int` | `0` | Anzahl der Nachrichten, die vom Anfang übersprungen werden sollen |

305 

306#### Rückgabetyp: `SessionMessage`

307 

308| Eigenschaft | Typ | Beschreibung |

309| :------------------- | :----------------------------- | :----------------------------------- |

310| `type` | `Literal["user", "assistant"]` | Nachrichtenrolle |

311| `uuid` | `str` | Eindeutige Nachrichtenkennung |

312| `session_id` | `str` | Sitzungskennung |

313| `message` | `Any` | Roher Nachrichteninhalt |

314| `parent_tool_use_id` | `None` | Reserviert für zukünftige Verwendung |

315 

316#### Beispiel

317 

318```python theme={null}

319from claude_agent_sdk import list_sessions, get_session_messages

320 

321sessions = list_sessions(limit=1)

322if sessions:

323 messages = get_session_messages(sessions[0].session_id)

324 for msg in messages:

325 print(f"[{msg.type}] {msg.uuid}")

326```

327 

328### `get_session_info()`

329 

330Liest Metadaten für eine einzelne Sitzung nach ID, ohne das vollständige Projektverzeichnis zu durchsuchen. Synchron; gibt sofort zurück.

331 

332```python theme={null}

333def get_session_info(

334 session_id: str,

335 directory: str | None = None,

336) -> SDKSessionInfo | None

337```

338 

339#### Parameter

340 

341| Parameter | Typ | Standard | Beschreibung |

342| :----------- | :------------ | :----------- | :------------------------------------------------------------------------------------ |

343| `session_id` | `str` | erforderlich | UUID der zu suchenden Sitzung |

344| `directory` | `str \| None` | `None` | Projektverzeichnispath. Wenn weggelassen, werden alle Projektverzeichnisse durchsucht |

345 

346Gibt [`SDKSessionInfo`](#return-type-sdk-session-info) zurück, oder `None`, wenn die Sitzung nicht gefunden wird.

347 

348#### Beispiel

349 

350Suchen Sie die Metadaten einer einzelnen Sitzung, ohne das Projektverzeichnis zu durchsuchen. Nützlich, wenn Sie bereits eine Sitzungs-ID aus einem vorherigen Durchlauf haben.

351 

352```python theme={null}

353from claude_agent_sdk import get_session_info

354 

355info = get_session_info("550e8400-e29b-41d4-a716-446655440000")

356if info:

357 print(f"{info.summary} (branch: {info.git_branch}, tag: {info.tag})")

358```

359 

360### `rename_session()`

361 

362Benennt eine Sitzung um, indem ein benutzerdefinierter Titeleintrag angehängt wird. Wiederholte Aufrufe sind sicher; der neueste Titel gewinnt. Synchron.

363 

364```python theme={null}

365def rename_session(

366 session_id: str,

367 title: str,

368 directory: str | None = None,

369) -> None

370```

371 

372#### Parameter

373 

374| Parameter | Typ | Standard | Beschreibung |

375| :----------- | :------------ | :----------- | :------------------------------------------------------------------------------------ |

376| `session_id` | `str` | erforderlich | UUID der umzubenennenden Sitzung |

377| `title` | `str` | erforderlich | Neuer Titel. Muss nach dem Entfernen von Leerzeichen nicht leer sein |

378| `directory` | `str \| None` | `None` | Projektverzeichnispath. Wenn weggelassen, werden alle Projektverzeichnisse durchsucht |

379 

380Wirft `ValueError`, wenn `session_id` keine gültige UUID ist oder `title` leer ist; `FileNotFoundError`, wenn die Sitzung nicht gefunden werden kann.

381 

382#### Beispiel

383 

384Benennen Sie die neueste Sitzung um, damit sie später leichter zu finden ist. Der neue Titel wird in [`SDKSessionInfo.custom_title`](#return-type-sdk-session-info) bei nachfolgenden Lesevorgängen angezeigt.

385 

386```python theme={null}

387from claude_agent_sdk import list_sessions, rename_session

388 

389sessions = list_sessions(directory="/path/to/project", limit=1)

390if sessions:

391 rename_session(sessions[0].session_id, "Refactor auth module")

392```

393 

394### `tag_session()`

395 

396Markiert eine Sitzung mit einem Tag. Übergeben Sie `None`, um das Tag zu löschen. Wiederholte Aufrufe sind sicher; das neueste Tag gewinnt. Synchron.

397 

398```python theme={null}

399def tag_session(

400 session_id: str,

401 tag: str | None,

402 directory: str | None = None,

403) -> None

404```

405 

406#### Parameter

407 

408| Parameter | Typ | Standard | Beschreibung |

409| :----------- | :------------ | :----------- | :------------------------------------------------------------------------------------ |

410| `session_id` | `str` | erforderlich | UUID der zu markierenden Sitzung |

411| `tag` | `str \| None` | erforderlich | Tag-Zeichenkette oder `None` zum Löschen. Unicode-bereinigt vor dem Speichern |

412| `directory` | `str \| None` | `None` | Projektverzeichnispath. Wenn weggelassen, werden alle Projektverzeichnisse durchsucht |

413 

414Wirft `ValueError`, wenn `session_id` keine gültige UUID ist oder `tag` nach der Bereinigung leer ist; `FileNotFoundError`, wenn die Sitzung nicht gefunden werden kann.

415 

416#### Beispiel

417 

418Markieren Sie eine Sitzung mit einem Tag, und filtern Sie später nach diesem Tag. Übergeben Sie `None`, um ein vorhandenes Tag zu löschen.

419 

420```python theme={null}

421from claude_agent_sdk import list_sessions, tag_session

422 

423# Tag a session

424tag_session("550e8400-e29b-41d4-a716-446655440000", "needs-review")

425 

426# Later: find all sessions with that tag

427for session in list_sessions(directory="/path/to/project"):

428 if session.tag == "needs-review":

429 print(session.summary)

430```

431 

432## Klassen

433 

434### `ClaudeSDKClient`

435 

436**Behält eine Konversationssitzung über mehrere Austausche hinweg bei.** Dies ist das Python-Äquivalent dazu, wie die `query()`-Funktion des TypeScript SDK intern funktioniert - sie erstellt ein Client-Objekt, das Konversationen fortsetzen kann.

437 

438#### Wichtige Funktionen

439 

440* **Sitzungskontinuität**: Behält Konversationskontext über mehrere `query()`-Aufrufe hinweg bei

441* **Gleiche Konversation**: Die Sitzung behält vorherige Nachrichten bei

442* **Unterbrechungsunterstützung**: Kann die Ausführung mitten in einer Aufgabe stoppen

443* **Expliziter Lebenszyklus**: Sie kontrollieren, wann die Sitzung beginnt und endet

444* **Antwortgesteuerte Abläufe**: Kann auf Antworten reagieren und Nachfolgefragen senden

445* **Benutzerdefinierte Tools und Hooks**: Unterstützt benutzerdefinierte Tools (erstellt mit dem `@tool`-Dekorator) und Hooks

446 

447```python theme={null}

448class ClaudeSDKClient:

449 def __init__(self, options: ClaudeAgentOptions | None = None, transport: Transport | None = None)

450 async def connect(self, prompt: str | AsyncIterable[dict] | None = None) -> None

451 async def query(self, prompt: str | AsyncIterable[dict], session_id: str = "default") -> None

452 async def receive_messages(self) -> AsyncIterator[Message]

453 async def receive_response(self) -> AsyncIterator[Message]

454 async def interrupt(self) -> None

455 async def set_permission_mode(self, mode: str) -> None

456 async def set_model(self, model: str | None = None) -> None

457 async def rewind_files(self, user_message_id: str) -> None

458 async def get_mcp_status(self) -> McpStatusResponse

459 async def reconnect_mcp_server(self, server_name: str) -> None

460 async def toggle_mcp_server(self, server_name: str, enabled: bool) -> None

461 async def stop_task(self, task_id: str) -> None

462 async def get_server_info(self) -> dict[str, Any] | None

463 async def disconnect(self) -> None

464```

465 

466#### Methoden

467 

468| Methode | Beschreibung |

469| :---------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

470| `__init__(options)` | Initialisieren Sie den Client mit optionaler Konfiguration |

471| `connect(prompt)` | Verbinden Sie sich mit Claude mit einer optionalen anfänglichen Aufforderung oder einem Nachrichtenstrom |

472| `query(prompt, session_id)` | Senden Sie eine neue Anfrage im Streaming-Modus |

473| `receive_messages()` | Empfangen Sie alle Nachrichten von Claude als asynchronen Iterator |

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

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

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

477| `set_model(model)` | Ändern Sie das Modell für die aktuelle Sitzung. Übergeben Sie `None`, um auf Standard zurückzusetzen |

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

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

480| `reconnect_mcp_server(server_name)` | Versuchen Sie, eine Verbindung zu einem MCP-Server herzustellen, der fehlgeschlagen ist oder getrennt wurde |

481| `toggle_mcp_server(server_name, enabled)` | Aktivieren oder deaktivieren Sie einen MCP-Server während der Sitzung. Das Deaktivieren entfernt seine Tools |

482| `stop_task(task_id)` | Stoppen Sie eine laufende Hintergrundaufgabe. Eine [`TaskNotificationMessage`](#task-notification-message) mit Status `"stopped"` folgt im Nachrichtenstrom |

483| `get_server_info()` | Rufen Sie Serverinformationen einschließlich Sitzungs-ID und Funktionen ab |

484| `disconnect()` | Trennen Sie die Verbindung zu Claude |

485 

486#### Context Manager-Unterstützung

487 

488Der Client kann als asynchroner Context Manager für automatische Verbindungsverwaltung verwendet werden:

489 

490```python theme={null}

491async with ClaudeSDKClient() as client:

492 await client.query("Hello Claude")

493 async for message in client.receive_response():

494 print(message)

495```

496 

497> **Wichtig:** Vermeiden Sie bei der Iteration über Nachrichten die Verwendung von `break`, um vorzeitig zu beenden, da dies zu asyncio-Bereinigungsproblemen führen kann. Lassen Sie die Iteration stattdessen natürlich abschließen oder verwenden Sie Flags, um zu verfolgen, wann Sie gefunden haben, was Sie brauchen.

498 

499#### Beispiel - Konversation fortsetzen

500 

501```python theme={null}

502import asyncio

503from claude_agent_sdk import ClaudeSDKClient, AssistantMessage, TextBlock, ResultMessage

504 

505 

506async def main():

507 async with ClaudeSDKClient() as client:

508 # First question

509 await client.query("What's the capital of France?")

510 

511 # Process response

512 async for message in client.receive_response():

513 if isinstance(message, AssistantMessage):

514 for block in message.content:

515 if isinstance(block, TextBlock):

516 print(f"Claude: {block.text}")

517 

518 # Follow-up question - the session retains the previous context

519 await client.query("What's the population of that city?")

520 

521 async for message in client.receive_response():

522 if isinstance(message, AssistantMessage):

523 for block in message.content:

524 if isinstance(block, TextBlock):

525 print(f"Claude: {block.text}")

526 

527 # Another follow-up - still in the same conversation

528 await client.query("What are some famous landmarks there?")

529 

530 async for message in client.receive_response():

531 if isinstance(message, AssistantMessage):

532 for block in message.content:

533 if isinstance(block, TextBlock):

534 print(f"Claude: {block.text}")

535 

536 

537asyncio.run(main())

538```

539 

540#### Beispiel - Streaming-Eingabe mit ClaudeSDKClient

541 

542```python theme={null}

543import asyncio

544from claude_agent_sdk import ClaudeSDKClient

545 

546 

547async def message_stream():

548 """Generate messages dynamically."""

549 yield {

550 "type": "user",

551 "message": {"role": "user", "content": "Analyze the following data:"},

552 }

553 await asyncio.sleep(0.5)

554 yield {

555 "type": "user",

556 "message": {"role": "user", "content": "Temperature: 25°C, Humidity: 60%"},

557 }

558 await asyncio.sleep(0.5)

559 yield {

560 "type": "user",

561 "message": {"role": "user", "content": "What patterns do you see?"},

562 }

563 

564 

565async def main():

566 async with ClaudeSDKClient() as client:

567 # Stream input to Claude

568 await client.query(message_stream())

569 

570 # Process response

571 async for message in client.receive_response():

572 print(message)

573 

574 # Follow-up in same session

575 await client.query("Should we be concerned about these readings?")

576 

577 async for message in client.receive_response():

578 print(message)

579 

580 

581asyncio.run(main())

582```

583 

584#### Beispiel - Unterbrechungen verwenden

585 

586```python theme={null}

587import asyncio

588from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, ResultMessage

589 

590 

591async def interruptible_task():

592 options = ClaudeAgentOptions(allowed_tools=["Bash"], permission_mode="acceptEdits")

593 

594 async with ClaudeSDKClient(options=options) as client:

595 # Start a long-running task

596 await client.query("Count from 1 to 100 slowly, using the bash sleep command")

597 

598 # Let it run for a bit

599 await asyncio.sleep(2)

600 

601 # Interrupt the task

602 await client.interrupt()

603 print("Task interrupted!")

604 

605 # Drain the interrupted task's messages (including its ResultMessage)

606 async for message in client.receive_response():

607 if isinstance(message, ResultMessage):

608 print(f"Interrupted task finished with subtype={message.subtype!r}")

609 # subtype is "error_during_execution" for interrupted tasks

610 

611 # Send a new command

612 await client.query("Just say hello instead")

613 

614 # Now receive the new response

615 async for message in client.receive_response():

616 if isinstance(message, ResultMessage) and message.subtype == "success":

617 print(f"New result: {message.result}")

618 

619 

620asyncio.run(interruptible_task())

621```

622 

623<Note>

624 **Pufferverhalten nach Unterbrechung:** `interrupt()` sendet ein Stopsignal, löscht aber nicht den Nachrichtenpuffer. Nachrichten, die bereits von der unterbrochenen Aufgabe produziert wurden, einschließlich ihrer `ResultMessage` (mit `subtype="error_during_execution"`), bleiben im Stream. Sie müssen sie mit `receive_response()` entleeren, bevor Sie die Antwort auf eine neue Abfrage lesen. Wenn Sie unmittelbar nach `interrupt()` eine neue Abfrage senden und `receive_response()` nur einmal aufrufen, erhalten Sie die Nachrichten der unterbrochenen Aufgabe, nicht die Antwort der neuen Abfrage.

625</Note>

626 

627#### Beispiel - Erweiterte Berechtigungskontrolle

628 

629```python theme={null}

630from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions

631from claude_agent_sdk.types import (

632 PermissionResultAllow,

633 PermissionResultDeny,

634 ToolPermissionContext,

635)

636 

637 

638async def custom_permission_handler(

639 tool_name: str, input_data: dict, context: ToolPermissionContext

640) -> PermissionResultAllow | PermissionResultDeny:

641 """Custom logic for tool permissions."""

642 

643 # Block writes to system directories

644 if tool_name == "Write" and input_data.get("file_path", "").startswith("/system/"):

645 return PermissionResultDeny(

646 message="System directory write not allowed", interrupt=True

647 )

648 

649 # Redirect sensitive file operations

650 if tool_name in ["Write", "Edit"] and "config" in input_data.get("file_path", ""):

651 safe_path = f"./sandbox/{input_data['file_path']}"

652 return PermissionResultAllow(

653 updated_input={**input_data, "file_path": safe_path}

654 )

655 

656 # Allow everything else

657 return PermissionResultAllow(updated_input=input_data)

658 

659 

660async def main():

661 options = ClaudeAgentOptions(

662 can_use_tool=custom_permission_handler, allowed_tools=["Read", "Write", "Edit"]

663 )

664 

665 async with ClaudeSDKClient(options=options) as client:

666 await client.query("Update the system config file")

667 

668 async for message in client.receive_response():

669 # Will use sandbox path instead

670 print(message)

671 

672 

673asyncio.run(main())

674```

675 

676## Typen

677 

678<Note>

679 **`@dataclass` vs `TypedDict`:** Dieses SDK verwendet zwei Arten von Typen. Klassen, die mit `@dataclass` dekoriert sind (wie `ResultMessage`, `AgentDefinition`, `TextBlock`), sind zur Laufzeit Objektinstanzen und unterstützen Attributzugriff: `msg.result`. Klassen, die mit `TypedDict` definiert sind (wie `ThinkingConfigEnabled`, `McpStdioServerConfig`, `SyncHookJSONOutput`), sind **zur Laufzeit einfache Dicts** und erfordern Schlüsselzugriff: `config["budget_tokens"]`, nicht `config.budget_tokens`. Die `ClassName(field=value)`-Aufrufsyntax funktioniert für beide, aber nur Dataclasses erzeugen Objekte mit Attributen.

680</Note>

681 

682### `SdkMcpTool`

683 

684Definition für ein SDK MCP-Tool, das mit dem `@tool`-Dekorator erstellt wurde.

685 

686```python theme={null}

687@dataclass

688class SdkMcpTool(Generic[T]):

689 name: str

690 description: str

691 input_schema: type[T] | dict[str, Any]

692 handler: Callable[[T], Awaitable[dict[str, Any]]]

693 annotations: ToolAnnotations | None = None

694```

695 

696| Eigenschaft | Typ | Beschreibung |

697| :------------- | :----------------------------------------- | :--------------------------------------------------------------------------------------------------------- |

698| `name` | `str` | Eindeutige Kennung für das Tool |

699| `description` | `str` | Lesbare Beschreibung |

700| `input_schema` | `type[T] \| dict[str, Any]` | Schema für Eingabevalidierung |

701| `handler` | `Callable[[T], Awaitable[dict[str, Any]]]` | Asynchrone Funktion, die die Tool-Ausführung handhabt |

702| `annotations` | `ToolAnnotations \| None` | Optionale MCP-Tool-Anmerkungen (z. B. `readOnlyHint`, `destructiveHint`, `openWorldHint`). Aus `mcp.types` |

703 

704### `Transport`

705 

706Abstrakte Basisklasse für benutzerdefinierte Transport-Implementierungen. Verwenden Sie dies, um mit dem Claude-Prozess über einen benutzerdefinierten Kanal zu kommunizieren (z. B. eine Remote-Verbindung statt eines lokalen Subprozesses).

707 

708<Warning>

709 Dies ist eine Low-Level-interne API. Die Schnittstelle kann sich in zukünftigen Versionen ändern. Benutzerdefinierte Implementierungen müssen aktualisiert werden, um Schnittstellenänderungen zu entsprechen.

710</Warning>

711 

712```python theme={null}

713from abc import ABC, abstractmethod

714from collections.abc import AsyncIterator

715from typing import Any

716 

717 

718class Transport(ABC):

719 @abstractmethod

720 async def connect(self) -> None: ...

721 

722 @abstractmethod

723 async def write(self, data: str) -> None: ...

724 

725 @abstractmethod

726 def read_messages(self) -> AsyncIterator[dict[str, Any]]: ...

727 

728 @abstractmethod

729 async def close(self) -> None: ...

730 

731 @abstractmethod

732 def is_ready(self) -> bool: ...

733 

734 @abstractmethod

735 async def end_input(self) -> None: ...

736```

737 

738| Methode | Beschreibung |

739| :---------------- | :------------------------------------------------------------------------- |

740| `connect()` | Verbinden Sie den Transport und bereiten Sie ihn für die Kommunikation vor |

741| `write(data)` | Schreiben Sie Rohdaten (JSON + Zeilenumbruch) in den Transport |

742| `read_messages()` | Asynchroner Iterator, der geparste JSON-Nachrichten liefert |

743| `close()` | Schließen Sie die Verbindung und bereinigen Sie Ressourcen |

744| `is_ready()` | Gibt `True` zurück, wenn der Transport senden und empfangen kann |

745| `end_input()` | Schließen Sie den Eingabestrom (z. B. stdin für Subprozess-Transporte) |

746 

747Import: `from claude_agent_sdk import Transport`

748 

749### `ClaudeAgentOptions`

750 

751Konfigurationsdatenklasse für Claude Code-Abfragen.

752 

753```python theme={null}

754@dataclass

755class ClaudeAgentOptions:

756 tools: list[str] | ToolsPreset | None = None

757 allowed_tools: list[str] = field(default_factory=list)

758 system_prompt: str | SystemPromptPreset | None = None

759 mcp_servers: dict[str, McpServerConfig] | str | Path = field(default_factory=dict)

760 permission_mode: PermissionMode | None = None

761 continue_conversation: bool = False

762 resume: str | None = None

763 max_turns: int | None = None

764 max_budget_usd: float | None = None

765 disallowed_tools: list[str] = field(default_factory=list)

766 model: str | None = None

767 fallback_model: str | None = None

768 betas: list[SdkBeta] = field(default_factory=list)

769 output_format: dict[str, Any] | None = None

770 permission_prompt_tool_name: str | None = None

771 cwd: str | Path | None = None

772 cli_path: str | Path | None = None

773 settings: str | None = None

774 add_dirs: list[str | Path] = field(default_factory=list)

775 env: dict[str, str] = field(default_factory=dict)

776 extra_args: dict[str, str | None] = field(default_factory=dict)

777 max_buffer_size: int | None = None

778 debug_stderr: Any = sys.stderr # Deprecated

779 stderr: Callable[[str], None] | None = None

780 can_use_tool: CanUseTool | None = None

781 hooks: dict[HookEvent, list[HookMatcher]] | None = None

782 user: str | None = None

783 include_partial_messages: bool = False

784 fork_session: bool = False

785 agents: dict[str, AgentDefinition] | None = None

786 setting_sources: list[SettingSource] | None = None

787 sandbox: SandboxSettings | None = None

788 plugins: list[SdkPluginConfig] = field(default_factory=list)

789 max_thinking_tokens: int | None = None # Deprecated: use thinking instead

790 thinking: ThinkingConfig | None = None

791 effort: Literal["low", "medium", "high", "max"] | None = None

792 enable_file_checkpointing: bool = False

793 session_store: SessionStore | None = None

794```

795 

796| Eigenschaft | Typ | Standard | Beschreibung |

797| :---------------------------- | :------------------------------------------------------------------------------------- | :---------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

798| `tools` | `list[str] \| ToolsPreset \| None` | `None` | Tools-Konfiguration. Verwenden Sie `{"type": "preset", "preset": "claude_code"}` für die Standard-Tools von Claude Code |

799| `allowed_tools` | `list[str]` | `[]` | Tools, die automatisch genehmigt werden, ohne zu fragen. Dies beschränkt Claude nicht nur auf diese Tools; nicht aufgelistete Tools fallen durch `permission_mode` und `can_use_tool`. Verwenden Sie `disallowed_tools`, um Tools zu blockieren. Siehe [Berechtigungen](/de/agent-sdk/permissions#allow-and-deny-rules) |

800| `system_prompt` | `str \| SystemPromptPreset \| None` | `None` | System-Prompt-Konfiguration. Übergeben Sie eine Zeichenkette für einen benutzerdefinierten Prompt, oder verwenden Sie `{"type": "preset", "preset": "claude_code"}` für den System-Prompt von Claude Code. Fügen Sie `"append"` hinzu, um den Preset zu erweitern |

801| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | MCP-Server-Konfigurationen oder Pfad zur Konfigurationsdatei |

802| `permission_mode` | `PermissionMode \| None` | `None` | Berechtigungsmodus für die Tool-Nutzung |

803| `continue_conversation` | `bool` | `False` | Setzen Sie die neueste Konversation fort |

804| `resume` | `str \| None` | `None` | Sitzungs-ID zum Fortsetzen |

805| `max_turns` | `int \| None` | `None` | Maximale agentengesteuerte Umdrehungen (Tool-Use-Rundgänge) |

806| `max_budget_usd` | `float \| None` | `None` | Stoppen Sie die Abfrage, wenn die clientseitige Kostenschätzung diesen USD-Wert erreicht. Verglichen mit der gleichen Schätzung wie `total_cost_usd`; siehe [Kosten und Nutzung verfolgen](/de/agent-sdk/cost-tracking) für Genauigkeitsvorbehalt |

807| `disallowed_tools` | `list[str]` | `[]` | Tools, die immer verweigert werden. Ablehnungsregeln werden zuerst überprüft und überschreiben `allowed_tools` und `permission_mode` (einschließlich `bypassPermissions`) |

808| `enable_file_checkpointing` | `bool` | `False` | Aktivieren Sie die Dateienänderungsverfolgung zum Zurückspulen. Siehe [Datei-Checkpointing](/de/agent-sdk/file-checkpointing) |

809| `model` | `str \| None` | `None` | Claude-Modell zum Verwenden |

810| `fallback_model` | `str \| None` | `None` | Fallback-Modell, das verwendet wird, wenn das primäre Modell fehlschlägt |

811| `betas` | `list[SdkBeta]` | `[]` | Beta-Funktionen zum Aktivieren. Siehe [`SdkBeta`](#sdk-beta) für verfügbare Optionen |

812| `output_format` | `dict[str, Any] \| None` | `None` | Ausgabeformat für strukturierte Antworten (z. B. `{"type": "json_schema", "schema": {...}}`). Siehe [Strukturierte Ausgaben](/de/agent-sdk/structured-outputs) für Details |

813| `permission_prompt_tool_name` | `str \| None` | `None` | MCP-Tool-Name für Berechtigungsaufforderungen |

814| `cwd` | `str \| Path \| None` | `None` | Aktuelles Arbeitsverzeichnis |

815| `cli_path` | `str \| Path \| None` | `None` | Benutzerdefinierter Pfad zur Claude Code CLI-Ausführungsdatei |

816| `settings` | `str \| None` | `None` | Pfad zur Einstellungsdatei |

817| `add_dirs` | `list[str \| Path]` | `[]` | Zusätzliche Verzeichnisse, auf die Claude zugreifen kann |

818| `env` | `dict[str, str]` | `{}` | Umgebungsvariablen, die auf der geerbten Prozessumgebung zusammengeführt werden. Siehe [Umgebungsvariablen](/de/env-vars) für Variablen, die die zugrunde liegende CLI liest |

819| `extra_args` | `dict[str, str \| None]` | `{}` | Zusätzliche CLI-Argumente, die direkt an die CLI übergeben werden |

820| `max_buffer_size` | `int \| None` | `None` | Maximale Bytes beim Puffern der CLI-Stdout |

821| `debug_stderr` | `Any` | `sys.stderr` | *Veraltet* - Dateiähnliches Objekt für Debug-Ausgabe. Verwenden Sie stattdessen den `stderr`-Callback |

822| `stderr` | `Callable[[str], None] \| None` | `None` | Callback-Funktion für stderr-Ausgabe von CLI |

823| `can_use_tool` | [`CanUseTool`](#can-use-tool) ` \| None` | `None` | Tool-Berechtigungs-Callback-Funktion. Siehe [Berechtigungstypen](#can-use-tool) für Details |

824| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Hook-Konfigurationen zum Abfangen von Ereignissen |

825| `user` | `str \| None` | `None` | Benutzerkennung |

826| `include_partial_messages` | `bool` | `False` | Schließen Sie partielle Nachrichtenstreaming-Ereignisse ein. Wenn aktiviert, werden [`StreamEvent`](#stream-event)-Nachrichten geliefert |

827| `fork_session` | `bool` | `False` | Wenn Sie mit `resume` fortsetzen, verzweigen Sie sich zu einer neuen Sitzungs-ID, anstatt die ursprüngliche Sitzung fortzusetzen |

828| `agents` | `dict[str, AgentDefinition] \| None` | `None` | Programmgesteuert definierte Subagenten |

829| `plugins` | `list[SdkPluginConfig]` | `[]` | Laden Sie benutzerdefinierte Plugins aus lokalen Pfaden. Siehe [Plugins](/de/agent-sdk/plugins) für Details |

830| `sandbox` | [`SandboxSettings`](#sandbox-settings) ` \| None` | `None` | Konfigurieren Sie das Sandbox-Verhalten programmgesteuert. Siehe [Sandbox-Einstellungen](#sandbox-settings) für Details |

831| `setting_sources` | `list[SettingSource] \| None` | `None` (CLI-Standard: alle Quellen) | Kontrollieren Sie, welche Dateisystem-Einstellungen geladen werden. Übergeben Sie `[]`, um Benutzer-, Projekt- und lokale Einstellungen zu deaktivieren. Verwaltete Richtlinieneinstellungen werden unabhängig davon geladen. Siehe [Claude Code-Funktionen verwenden](/de/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

832| `max_thinking_tokens` | `int \| None` | `None` | *Veraltet* - Maximale Token für Thinking-Blöcke. Verwenden Sie stattdessen `thinking` |

833| `thinking` | [`ThinkingConfig`](#thinking-config) ` \| None` | `None` | Steuert das Verhalten des erweiterten Denkens. Hat Vorrang vor `max_thinking_tokens` |

834| `effort` | `Literal["low", "medium", "high", "max"] \| None` | `None` | Anstrengungsstufe für die Denktiefe |

835| `session_store` | [`SessionStore`](/de/agent-sdk/session-storage#the-session-store-interface) ` \| None` | `None` | Spiegeln Sie Sitzungstranskripte zu einem externen Backend, damit jeder Host sie fortsetzen kann. Siehe [Sitzungen im externen Speicher beibehalten](/de/agent-sdk/session-storage) |

836 

837### `OutputFormat`

838 

839Konfiguration für die Validierung strukturierter Ausgaben. Übergeben Sie dies als `dict` an das Feld `output_format` auf `ClaudeAgentOptions`:

840 

841```python theme={null}

842# Expected dict shape for output_format

843{

844 "type": "json_schema",

845 "schema": {...}, # Your JSON Schema definition

846}

847```

848 

849| Feld | Erforderlich | Beschreibung |

850| :------- | :----------- | :---------------------------------------------------- |

851| `type` | Ja | Muss `"json_schema"` für JSON-Schema-Validierung sein |

852| `schema` | Ja | JSON-Schema-Definition für Ausgabevalidierung |

853 

854### `SystemPromptPreset`

855 

856Konfiguration für die Verwendung des Preset-System-Prompts von Claude Code mit optionalen Ergänzungen.

857 

858```python theme={null}

859class SystemPromptPreset(TypedDict):

860 type: Literal["preset"]

861 preset: Literal["claude_code"]

862 append: NotRequired[str]

863 exclude_dynamic_sections: NotRequired[bool]

864```

865 

866| Feld | Erforderlich | Beschreibung |

867| :------------------------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

868| `type` | Ja | Muss `"preset"` sein, um einen Preset-System-Prompt zu verwenden |

869| `preset` | Ja | Muss `"claude_code"` sein, um den System-Prompt von Claude Code zu verwenden |

870| `append` | Nein | Zusätzliche Anweisungen, die an den Preset-System-Prompt angehängt werden |

871| `exclude_dynamic_sections` | Nein | Verschieben Sie sitzungsspezifischen Kontext wie Arbeitsverzeichnis, Git-Status und Memory-Pfade aus dem System-Prompt in die erste Benutzernachricht. Verbessert die Prompt-Cache-Wiederverwendung über Benutzer und Maschinen hinweg. Siehe [System-Prompts ändern](/de/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |

872 

873### `SettingSource`

874 

875Steuert, welche dateisystembasierte Konfigurationsquellen das SDK Einstellungen aus lädt.

876 

877```python theme={null}

878SettingSource = Literal["user", "project", "local"]

879```

880 

881| Wert | Beschreibung | Ort |

882| :---------- | :----------------------------------------------------- | :---------------------------- |

883| `"user"` | Globale Benutzereinstellungen | `~/.claude/settings.json` |

884| `"project"` | Gemeinsame Projekteinstellungen (versionskontrolliert) | `.claude/settings.json` |

885| `"local"` | Lokale Projekteinstellungen (gitignoriert) | `.claude/settings.local.json` |

886 

887#### Standardverhalten

888 

889Wenn `setting_sources` weggelassen oder `None` ist, lädt `query()` die gleichen Dateisystem-Einstellungen wie die Claude Code CLI: Benutzer, Projekt und lokal. Verwaltete Richtlinieneinstellungen werden in allen Fällen geladen. Siehe [Was settingSources nicht kontrolliert](/de/agent-sdk/claude-code-features#what-settingsources-does-not-control) für Eingaben, die unabhängig von dieser Option gelesen werden, und wie man sie deaktiviert.

890 

891#### Warum setting\_sources verwenden

892 

893**Dateisystem-Einstellungen deaktivieren:**

894 

895```python theme={null}

896# Do not load user, project, or local settings from disk

897from claude_agent_sdk import query, ClaudeAgentOptions

898 

899async for message in query(

900 prompt="Analyze this code",

901 options=ClaudeAgentOptions(

902 setting_sources=[]

903 ),

904):

905 print(message)

906```

907 

908<Note>

909 Im Python SDK 0.1.59 und früher wurde eine leere Liste gleich behandelt wie das Weglassen der Option, daher hatte `setting_sources=[]` keine Auswirkung auf die Deaktivierung von Dateisystem-Einstellungen. Aktualisieren Sie auf eine neuere Version, wenn Sie benötigen, dass eine leere Liste wirksam wird. Das TypeScript SDK ist nicht betroffen.

910</Note>

911 

912**Alle Dateisystem-Einstellungen explizit laden:**

913 

914```python theme={null}

915from claude_agent_sdk import query, ClaudeAgentOptions

916 

917async for message in query(

918 prompt="Analyze this code",

919 options=ClaudeAgentOptions(

920 setting_sources=["user", "project", "local"]

921 ),

922):

923 print(message)

924```

925 

926**Nur bestimmte Einstellungsquellen laden:**

927 

928```python theme={null}

929# Load only project settings, ignore user and local

930async for message in query(

931 prompt="Run CI checks",

932 options=ClaudeAgentOptions(

933 setting_sources=["project"] # Only .claude/settings.json

934 ),

935):

936 print(message)

937```

938 

939**Test- und CI-Umgebungen:**

940 

941```python theme={null}

942# Ensure consistent behavior in CI by excluding local settings

943async for message in query(

944 prompt="Run tests",

945 options=ClaudeAgentOptions(

946 setting_sources=["project"], # Only team-shared settings

947 permission_mode="bypassPermissions",

948 ),

949):

950 print(message)

951```

952 

953**SDK-only-Anwendungen:**

954 

955```python theme={null}

956# Define everything programmatically.

957# Pass [] to opt out of filesystem setting sources.

958async for message in query(

959 prompt="Review this PR",

960 options=ClaudeAgentOptions(

961 setting_sources=[],

962 agents={...},

963 mcp_servers={...},

964 allowed_tools=["Read", "Grep", "Glob"],

965 ),

966):

967 print(message)

968```

969 

970**Laden von CLAUDE.md-Projektanweisungen:**

971 

972```python theme={null}

973# Load project settings to include CLAUDE.md files

974async for message in query(

975 prompt="Add a new feature following project conventions",

976 options=ClaudeAgentOptions(

977 system_prompt={

978 "type": "preset",

979 "preset": "claude_code", # Use Claude Code's system prompt

980 },

981 setting_sources=["project"], # Loads CLAUDE.md from project

982 allowed_tools=["Read", "Write", "Edit"],

983 ),

984):

985 print(message)

986```

987 

988#### Einstellungspriorität

989 

990Wenn mehrere Quellen geladen werden, werden Einstellungen mit dieser Priorität zusammengeführt (höchste zu niedrigste):

991 

9921. Lokale Einstellungen (`.claude/settings.local.json`)

9932. Projekteinstellungen (`.claude/settings.json`)

9943. Benutzereinstellungen (`~/.claude/settings.json`)

995 

996Programmgesteuerte Optionen wie `agents` und `allowed_tools` überschreiben Benutzer-, Projekt- und lokale Dateisystem-Einstellungen. Verwaltete Richtlinieneinstellungen haben Vorrang vor programmgesteuerten Optionen.

997 

998### `AgentDefinition`

999 

1000Konfiguration für einen programmgesteuert definierten Subagenten.

1001 

1002```python theme={null}

1003@dataclass

1004class AgentDefinition:

1005 description: str

1006 prompt: str

1007 tools: list[str] | None = None

1008 disallowedTools: list[str] | None = None

1009 model: str | None = None

1010 skills: list[str] | None = None

1011 memory: Literal["user", "project", "local"] | None = None

1012 mcpServers: list[str | dict[str, Any]] | None = None

1013 initialPrompt: str | None = None

1014 maxTurns: int | None = None

1015 background: bool | None = None

1016 effort: Literal["low", "medium", "high", "max"] | int | None = None

1017 permissionMode: PermissionMode | None = None

1018```

1019 

1020| Feld | Erforderlich | Beschreibung |

1021| :---------------- | :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1022| `description` | Ja | Natürlichsprachige Beschreibung, wann dieser Agent verwendet werden sollte |

1023| `prompt` | Ja | Der System-Prompt des Agenten |

1024| `tools` | Nein | Array von zulässigen Tool-Namen. Wenn weggelassen, erbt alle Tools |

1025| `disallowedTools` | Nein | Array von Tool-Namen, die aus dem Tool-Set des Agenten entfernt werden |

1026| `model` | Nein | Modell-Override für diesen Agenten. Akzeptiert einen Alias wie `"sonnet"`, `"opus"`, `"haiku"` oder `"inherit"`, oder eine vollständige Modell-ID. Wenn weggelassen, verwendet das Hauptmodell |

1027| `skills` | Nein | Liste von Skill-Namen, die diesem Agenten zur Verfügung stehen |

1028| `memory` | Nein | Memory-Quelle für diesen Agenten: `"user"`, `"project"` oder `"local"` |

1029| `mcpServers` | Nein | MCP-Server, die diesem Agenten zur Verfügung stehen. Jeder Eintrag ist ein Servername oder ein Inline-`{name: config}`-Dict |

1030| `initialPrompt` | Nein | Wird automatisch als erste Benutzerdrehung eingereicht, wenn dieser Agent als Haupt-Thread-Agent läuft |

1031| `maxTurns` | Nein | Maximale Anzahl von Agenten-Umdrehungen, bevor der Agent stoppt |

1032| `background` | Nein | Führen Sie diesen Agenten als nicht-blockierende Hintergrundaufgabe aus, wenn aufgerufen |

1033| `effort` | Nein | Reasoning-Anstrengungsstufe für diesen Agenten. Akzeptiert eine benannte Stufe oder eine Ganzzahl |

1034| `permissionMode` | Nein | Berechtigungsmodus für die Tool-Ausführung innerhalb dieses Agenten. Siehe [`PermissionMode`](#permission-mode) |

1035 

1036<Note>

1037 `AgentDefinition`-Feldnamen verwenden camelCase, wie `disallowedTools`, `permissionMode` und `maxTurns`. Diese Namen werden direkt dem Drahtformat zugeordnet, das mit dem TypeScript SDK geteilt wird. Dies unterscheidet sich von `ClaudeAgentOptions`, das Python snake\_case für die entsprechenden Top-Level-Felder wie `disallowed_tools` und `permission_mode` verwendet. Da `AgentDefinition` eine Dataclass ist, wirft das Übergeben eines snake\_case-Schlüsselworts einen `TypeError` zur Konstruktionszeit auf.

1038</Note>

1039 

1040### `PermissionMode`

1041 

1042Berechtigungsmodi zur Kontrolle der Tool-Ausführung.

1043 

1044```python theme={null}

1045PermissionMode = Literal[

1046 "default", # Standard permission behavior

1047 "acceptEdits", # Auto-accept file edits

1048 "plan", # Planning mode - no execution

1049 "dontAsk", # Deny anything not pre-approved instead of prompting

1050 "bypassPermissions", # Bypass all permission checks (use with caution)

1051]

1052```

1053 

1054### `CanUseTool`

1055 

1056Typ-Alias für Tool-Berechtigungs-Callback-Funktionen.

1057 

1058```python theme={null}

1059CanUseTool = Callable[

1060 [str, dict[str, Any], ToolPermissionContext], Awaitable[PermissionResult]

1061]

1062```

1063 

1064Der Callback empfängt:

1065 

1066* `tool_name`: Name des aufgerufenen Tools

1067* `input_data`: Die Eingabeparameter des Tools

1068* `context`: Ein `ToolPermissionContext` mit zusätzlichen Informationen

1069 

1070Gibt ein `PermissionResult` zurück (entweder `PermissionResultAllow` oder `PermissionResultDeny`).

1071 

1072### `ToolPermissionContext`

1073 

1074Kontextinformationen, die an Tool-Berechtigungs-Callbacks übergeben werden.

1075 

1076```python theme={null}

1077@dataclass

1078class ToolPermissionContext:

1079 signal: Any | None = None # Future: abort signal support

1080 suggestions: list[PermissionUpdate] = field(default_factory=list)

1081```

1082 

1083| Feld | Typ | Beschreibung |

1084| :------------ | :----------------------- | :--------------------------------------------------- |

1085| `signal` | `Any \| None` | Reserviert für zukünftige Abort-Signal-Unterstützung |

1086| `suggestions` | `list[PermissionUpdate]` | Berechtigungsaktualisierungsvorschläge von der CLI |

1087 

1088### `PermissionResult`

1089 

1090Union-Typ für Berechtigungs-Callback-Ergebnisse.

1091 

1092```python theme={null}

1093PermissionResult = PermissionResultAllow | PermissionResultDeny

1094```

1095 

1096### `PermissionResultAllow`

1097 

1098Ergebnis, das angibt, dass der Tool-Aufruf zulässig sein sollte.

1099 

1100```python theme={null}

1101@dataclass

1102class PermissionResultAllow:

1103 behavior: Literal["allow"] = "allow"

1104 updated_input: dict[str, Any] | None = None

1105 updated_permissions: list[PermissionUpdate] | None = None

1106```

1107 

1108| Feld | Typ | Standard | Beschreibung |

1109| :-------------------- | :------------------------------- | :-------- | :------------------------------------------------------- |

1110| `behavior` | `Literal["allow"]` | `"allow"` | Muss "allow" sein |

1111| `updated_input` | `dict[str, Any] \| None` | `None` | Geänderte Eingabe, die stattdessen verwendet werden soll |

1112| `updated_permissions` | `list[PermissionUpdate] \| None` | `None` | Berechtigungsaktualisierungen zum Anwenden |

1113 

1114### `PermissionResultDeny`

1115 

1116Ergebnis, das angibt, dass der Tool-Aufruf verweigert werden sollte.

1117 

1118```python theme={null}

1119@dataclass

1120class PermissionResultDeny:

1121 behavior: Literal["deny"] = "deny"

1122 message: str = ""

1123 interrupt: bool = False

1124```

1125 

1126| Feld | Typ | Standard | Beschreibung |

1127| :---------- | :---------------- | :------- | :------------------------------------------------------ |

1128| `behavior` | `Literal["deny"]` | `"deny"` | Muss "deny" sein |

1129| `message` | `str` | `""` | Nachricht, die erklärt, warum das Tool verweigert wurde |

1130| `interrupt` | `bool` | `False` | Ob die aktuelle Ausführung unterbrochen werden soll |

1131 

1132### `PermissionUpdate`

1133 

1134Konfiguration zum programmgesteuerten Aktualisieren von Berechtigungen.

1135 

1136```python theme={null}

1137@dataclass

1138class PermissionUpdate:

1139 type: Literal[

1140 "addRules",

1141 "replaceRules",

1142 "removeRules",

1143 "setMode",

1144 "addDirectories",

1145 "removeDirectories",

1146 ]

1147 rules: list[PermissionRuleValue] | None = None

1148 behavior: Literal["allow", "deny", "ask"] | None = None

1149 mode: PermissionMode | None = None

1150 directories: list[str] | None = None

1151 destination: (

1152 Literal["userSettings", "projectSettings", "localSettings", "session"] | None

1153 ) = None

1154```

1155 

1156| Feld | Typ | Beschreibung |

1157| :------------ | :---------------------------------------- | :-------------------------------------------------------- |

1158| `type` | `Literal[...]` | Der Typ der Berechtigungsaktualisierungsoperation |

1159| `rules` | `list[PermissionRuleValue] \| None` | Regeln für Add/Replace/Remove-Operationen |

1160| `behavior` | `Literal["allow", "deny", "ask"] \| None` | Verhalten für regelbasierte Operationen |

1161| `mode` | `PermissionMode \| None` | Modus für setMode-Operation |

1162| `directories` | `list[str] \| None` | Verzeichnisse für Add/Remove-Verzeichnis-Operationen |

1163| `destination` | `Literal[...] \| None` | Wo die Berechtigungsaktualisierung angewendet werden soll |

1164 

1165### `PermissionRuleValue`

1166 

1167Eine Regel, die in einer Berechtigungsaktualisierung hinzugefügt, ersetzt oder entfernt werden soll.

1168 

1169```python theme={null}

1170@dataclass

1171class PermissionRuleValue:

1172 tool_name: str

1173 rule_content: str | None = None

1174```

1175 

1176### `ToolsPreset`

1177 

1178Preset-Tools-Konfiguration für die Verwendung des Standard-Tool-Sets von Claude Code.

1179 

1180```python theme={null}

1181class ToolsPreset(TypedDict):

1182 type: Literal["preset"]

1183 preset: Literal["claude_code"]

1184```

1185 

1186### `ThinkingConfig`

1187 

1188Steuert das Verhalten des erweiterten Denkens. Eine Union von drei Konfigurationen:

1189 

1190```python theme={null}

1191class ThinkingConfigAdaptive(TypedDict):

1192 type: Literal["adaptive"]

1193 

1194 

1195class ThinkingConfigEnabled(TypedDict):

1196 type: Literal["enabled"]

1197 budget_tokens: int

1198 

1199 

1200class ThinkingConfigDisabled(TypedDict):

1201 type: Literal["disabled"]

1202 

1203 

1204ThinkingConfig = ThinkingConfigAdaptive | ThinkingConfigEnabled | ThinkingConfigDisabled

1205```

1206 

1207| Variante | Felder | Beschreibung |

1208| :--------- | :---------------------- | :---------------------------------------------------------- |

1209| `adaptive` | `type` | Claude entscheidet adaptiv, wann gedacht werden soll |

1210| `enabled` | `type`, `budget_tokens` | Aktivieren Sie das Denken mit einem bestimmten Token-Budget |

1211| `disabled` | `type` | Deaktivieren Sie das Denken |

1212 

1213Da 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 erzeugen ein `dict`. Greifen Sie auf Felder mit `config["budget_tokens"]` zu, nicht mit `config.budget_tokens`:

1214 

1215```python theme={null}

1216from claude_agent_sdk import ClaudeAgentOptions, ThinkingConfigEnabled

1217 

1218# Option 1: dict literal (recommended, no import needed)

1219options = ClaudeAgentOptions(thinking={"type": "enabled", "budget_tokens": 20000})

1220 

1221# Option 2: constructor-style (returns a plain dict)

1222config = ThinkingConfigEnabled(type="enabled", budget_tokens=20000)

1223print(config["budget_tokens"]) # 20000

1224# config.budget_tokens would raise AttributeError

1225```

1226 

1227### `SdkBeta`

1228 

1229Literal-Typ für SDK-Beta-Funktionen.

1230 

1231```python theme={null}

1232SdkBeta = Literal["context-1m-2025-08-07"]

1233```

1234 

1235Verwenden Sie mit dem Feld `betas` in `ClaudeAgentOptions`, um Beta-Funktionen zu aktivieren.

1236 

1237<Warning>

1238 Die `context-1m-2025-08-07`-Beta ist seit dem 30. April 2026 veraltet. Das Übergeben dieses Headers mit Claude Sonnet 4.5 oder Sonnet 4 hat keine Auswirkung, und Anfragen, die das Standard-200k-Token-Kontextfenster überschreiten, geben einen Fehler zurück. Um ein 1M-Token-Kontextfenster zu verwenden, migrieren Sie zu [Claude Sonnet 4.6, Claude Opus 4.6 oder Claude Opus 4.7](https://platform.claude.com/docs/en/about-claude/models/overview), die 1M-Kontext zu Standardpreisen ohne Beta-Header enthalten.

1239</Warning>

1240 

1241### `McpSdkServerConfig`

1242 

1243Konfiguration für SDK MCP-Server, die mit `create_sdk_mcp_server()` erstellt wurden.

1244 

1245```python theme={null}

1246class McpSdkServerConfig(TypedDict):

1247 type: Literal["sdk"]

1248 name: str

1249 instance: Any # MCP Server instance

1250```

1251 

1252### `McpServerConfig`

1253 

1254Union-Typ für MCP-Server-Konfigurationen.

1255 

1256```python theme={null}

1257McpServerConfig = (

1258 McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig

1259)

1260```

1261 

1262#### `McpStdioServerConfig`

1263 

1264```python theme={null}

1265class McpStdioServerConfig(TypedDict):

1266 type: NotRequired[Literal["stdio"]] # Optional for backwards compatibility

1267 command: str

1268 args: NotRequired[list[str]]

1269 env: NotRequired[dict[str, str]]

1270```

1271 

1272#### `McpSSEServerConfig`

1273 

1274```python theme={null}

1275class McpSSEServerConfig(TypedDict):

1276 type: Literal["sse"]

1277 url: str

1278 headers: NotRequired[dict[str, str]]

1279```

1280 

1281#### `McpHttpServerConfig`

1282 

1283```python theme={null}

1284class McpHttpServerConfig(TypedDict):

1285 type: Literal["http"]

1286 url: str

1287 headers: NotRequired[dict[str, str]]

1288```

1289 

1290### `McpServerStatusConfig`

1291 

1292Die Konfiguration eines MCP-Servers, wie von [`get_mcp_status()`](#methods) gemeldet. Dies ist die Union aller [`McpServerConfig`](#mcp-server-config)-Transport-Varianten plus eine nur-Ausgabe-`claudeai-proxy`-Variante für Server, die durch claude.ai proxiert werden.

1293 

1294```python theme={null}

1295McpServerStatusConfig = (

1296 McpStdioServerConfig

1297 | McpSSEServerConfig

1298 | McpHttpServerConfig

1299 | McpSdkServerConfigStatus

1300 | McpClaudeAIProxyServerConfig

1301)

1302```

1303 

1304`McpSdkServerConfigStatus` ist die serialisierbare Form von [`McpSdkServerConfig`](#mcp-sdk-server-config) mit nur `type` (`"sdk"`) und `name` (`str`)-Feldern; die In-Process-`instance` wird weggelassen. `McpClaudeAIProxyServerConfig` hat `type` (`"claudeai-proxy"`), `url` (`str`) und `id` (`str`)-Felder.

1305 

1306### `McpStatusResponse`

1307 

1308Antwort von [`ClaudeSDKClient.get_mcp_status()`](#methods). Umhüllt die Liste der Server-Status unter dem `mcpServers`-Schlüssel.

1309 

1310```python theme={null}

1311class McpStatusResponse(TypedDict):

1312 mcpServers: list[McpServerStatus]

1313```

1314 

1315### `McpServerStatus`

1316 

1317Status eines verbundenen MCP-Servers, enthalten in [`McpStatusResponse`](#mcp-status-response).

1318 

1319```python theme={null}

1320class McpServerStatus(TypedDict):

1321 name: str

1322 status: McpServerConnectionStatus # "connected" | "failed" | "needs-auth" | "pending" | "disabled"

1323 serverInfo: NotRequired[McpServerInfo]

1324 error: NotRequired[str]

1325 config: NotRequired[McpServerStatusConfig]

1326 scope: NotRequired[str]

1327 tools: NotRequired[list[McpToolInfo]]

1328```

1329 

1330| Feld | Typ | Beschreibung |

1331| :----------- | :-------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1332| `name` | `str` | Servername |

1333| `status` | `str` | Einer von `"connected"`, `"failed"`, `"needs-auth"`, `"pending"` oder `"disabled"` |

1334| `serverInfo` | `dict` (optional) | Servername und Version (`{"name": str, "version": str}`) |

1335| `error` | `str` (optional) | Fehlermeldung, wenn der Server keine Verbindung herstellen konnte |

1336| `config` | [`McpServerStatusConfig`](#mcp-server-status-config) (optional) | Server-Konfiguration. Gleiche Form wie [`McpServerConfig`](#mcp-server-config) (stdio, SSE, HTTP oder SDK), plus eine `claudeai-proxy`-Variante für Server, die über claude.ai verbunden sind |

1337| `scope` | `str` (optional) | Konfigurationsbereich |

1338| `tools` | `list` (optional) | Tools, die von diesem Server bereitgestellt werden, jeweils mit `name`, `description` und `annotations`-Feldern |

1339 

1340### `SdkPluginConfig`

1341 

1342Konfiguration zum Laden von Plugins im SDK.

1343 

1344```python theme={null}

1345class SdkPluginConfig(TypedDict):

1346 type: Literal["local"]

1347 path: str

1348```

1349 

1350| Feld | Typ | Beschreibung |

1351| :----- | :----------------- | :------------------------------------------------------------------ |

1352| `type` | `Literal["local"]` | Muss `"local"` sein (derzeit werden nur lokale Plugins unterstützt) |

1353| `path` | `str` | Absoluter oder relativer Pfad zum Plugin-Verzeichnis |

1354 

1355**Beispiel:**

1356 

1357```python theme={null}

1358plugins = [

1359 {"type": "local", "path": "./my-plugin"},

1360 {"type": "local", "path": "/absolute/path/to/plugin"},

1361]

1362```

1363 

1364Vollständige Informationen zum Erstellen und Verwenden von Plugins finden Sie unter [Plugins](/de/agent-sdk/plugins).

1365 

1366## Nachrichtentypen

1367 

1368### `Message`

1369 

1370Union-Typ aller möglichen Nachrichten.

1371 

1372```python theme={null}

1373Message = (

1374 UserMessage

1375 | AssistantMessage

1376 | SystemMessage

1377 | ResultMessage

1378 | StreamEvent

1379 | RateLimitEvent

1380)

1381```

1382 

1383### `UserMessage`

1384 

1385Benutzereingabe-Nachricht.

1386 

1387```python theme={null}

1388@dataclass

1389class UserMessage:

1390 content: str | list[ContentBlock]

1391 uuid: str | None = None

1392 parent_tool_use_id: str | None = None

1393 tool_use_result: dict[str, Any] | None = None

1394```

1395 

1396| Feld | Typ | Beschreibung |

1397| :------------------- | :-------------------------- | :--------------------------------------------------------------- |

1398| `content` | `str \| list[ContentBlock]` | Nachrichteninhalt als Text oder Inhaltsblöcke |

1399| `uuid` | `str \| None` | Eindeutige Nachrichtenkennung |

1400| `parent_tool_use_id` | `str \| None` | Tool-Use-ID, wenn diese Nachricht eine Tool-Ergebnis-Antwort ist |

1401| `tool_use_result` | `dict[str, Any] \| None` | Tool-Ergebnisdaten, falls zutreffend |

1402 

1403### `AssistantMessage`

1404 

1405Assistent-Antwortnachricht mit Inhaltsblöcken.

1406 

1407```python theme={null}

1408@dataclass

1409class AssistantMessage:

1410 content: list[ContentBlock]

1411 model: str

1412 parent_tool_use_id: str | None = None

1413 error: AssistantMessageError | None = None

1414 usage: dict[str, Any] | None = None

1415 message_id: str | None = None

1416```

1417 

1418| Feld | Typ | Beschreibung |

1419| :------------------- | :------------------------------------------------------------- | :------------------------------------------------------------------------------------------- |

1420| `content` | `list[ContentBlock]` | Liste von Inhaltsblöcken in der Antwort |

1421| `model` | `str` | Modell, das die Antwort generiert hat |

1422| `parent_tool_use_id` | `str \| None` | Tool-Use-ID, wenn dies eine verschachtelte Antwort ist |

1423| `error` | [`AssistantMessageError`](#assistant-message-error) ` \| None` | Fehlertyp, wenn die Antwort auf einen Fehler stieß |

1424| `usage` | `dict[str, Any] \| None` | Token-Nutzung pro Nachricht (gleiche Schlüssel wie [`ResultMessage.usage`](#result-message)) |

1425| `message_id` | `str \| None` | API-Nachrichtenkennung. Mehrere Nachrichten aus einer Umdrehung teilen die gleiche ID |

1426 

1427### `AssistantMessageError`

1428 

1429Mögliche Fehlertypen für Assistent-Nachrichten.

1430 

1431```python theme={null}

1432AssistantMessageError = Literal[

1433 "authentication_failed",

1434 "billing_error",

1435 "rate_limit",

1436 "invalid_request",

1437 "server_error",

1438 "max_output_tokens",

1439 "unknown",

1440]

1441```

1442 

1443### `SystemMessage`

1444 

1445System-Nachricht mit Metadaten.

1446 

1447```python theme={null}

1448@dataclass

1449class SystemMessage:

1450 subtype: str

1451 data: dict[str, Any]

1452```

1453 

1454### `ResultMessage`

1455 

1456Endgültige Ergebnis-Nachricht mit Kosten- und Nutzungsinformationen.

1457 

1458```python theme={null}

1459@dataclass

1460class ResultMessage:

1461 subtype: str

1462 duration_ms: int

1463 duration_api_ms: int

1464 is_error: bool

1465 num_turns: int

1466 session_id: str

1467 total_cost_usd: float | None = None

1468 usage: dict[str, Any] | None = None

1469 result: str | None = None

1470 stop_reason: str | None = None

1471 structured_output: Any = None

1472 model_usage: dict[str, Any] | None = None

1473```

1474 

1475Das `usage`-Dict enthält die folgenden Schlüssel, wenn vorhanden:

1476 

1477| Schlüssel | Typ | Beschreibung |

1478| ----------------------------- | ----- | --------------------------------------------------------------- |

1479| `input_tokens` | `int` | Gesamte verbrauchte Eingabe-Token. |

1480| `output_tokens` | `int` | Gesamte generierte Ausgabe-Token. |

1481| `cache_creation_input_tokens` | `int` | Token, die zum Erstellen neuer Cache-Einträge verwendet wurden. |

1482| `cache_read_input_tokens` | `int` | Token, die aus vorhandenen Cache-Einträgen gelesen wurden. |

1483 

1484Das `model_usage`-Dict ordnet Modellnamen der Nutzung pro Modell zu. Die inneren Dict-Schlüssel verwenden camelCase, da der Wert unverändert vom zugrunde liegenden CLI-Prozess übergeben wird und dem TypeScript [`ModelUsage`](/de/agent-sdk/typescript#model-usage)-Typ entspricht:

1485 

1486| Schlüssel | Typ | Beschreibung |

1487| -------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1488| `inputTokens` | `int` | Eingabe-Token für dieses Modell. |

1489| `outputTokens` | `int` | Ausgabe-Token für dieses Modell. |

1490| `cacheReadInputTokens` | `int` | Cache-Lese-Token für dieses Modell. |

1491| `cacheCreationInputTokens` | `int` | Cache-Erstellungs-Token für dieses Modell. |

1492| `webSearchRequests` | `int` | Webbsuche-Anfragen, die von diesem Modell gestellt wurden. |

1493| `costUSD` | `float` | Geschätzte Kosten in USD für dieses Modell, clientseitig berechnet. Siehe [Kosten und Nutzung verfolgen](/de/agent-sdk/cost-tracking) für Abrechnungsvorbehalt. |

1494| `contextWindow` | `int` | Kontextfenstergröße für dieses Modell. |

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

1496 

1497### `StreamEvent`

1498 

1499Stream-Ereignis für partielle Nachrichtenaktualisierungen während des Streamings. Wird nur empfangen, wenn `include_partial_messages=True` in `ClaudeAgentOptions`. Import über `from claude_agent_sdk.types import StreamEvent`.

1500 

1501```python theme={null}

1502@dataclass

1503class StreamEvent:

1504 uuid: str

1505 session_id: str

1506 event: dict[str, Any] # The raw Claude API stream event

1507 parent_tool_use_id: str | None = None

1508```

1509 

1510| Feld | Typ | Beschreibung |

1511| :------------------- | :--------------- | :-------------------------------------------------------------------------- |

1512| `uuid` | `str` | Eindeutige Kennung für dieses Ereignis |

1513| `session_id` | `str` | Sitzungskennung |

1514| `event` | `dict[str, Any]` | Die rohen Claude API-Stream-Ereignisdaten |

1515| `parent_tool_use_id` | `str \| None` | Übergeordnete Tool-Use-ID, wenn dieses Ereignis von einem Subagenten stammt |

1516 

1517### `RateLimitEvent`

1518 

1519Wird ausgegeben, wenn sich der Rate-Limit-Status ändert (z. B. von `"allowed"` zu `"allowed_warning"`). Verwenden Sie dies, um Benutzer zu warnen, bevor sie eine harte Grenze erreichen, oder um zu backoff, wenn der Status `"rejected"` ist.

1520 

1521```python theme={null}

1522@dataclass

1523class RateLimitEvent:

1524 rate_limit_info: RateLimitInfo

1525 uuid: str

1526 session_id: str

1527```

1528 

1529| Feld | Typ | Beschreibung |

1530| :---------------- | :---------------------------------- | :-------------------------- |

1531| `rate_limit_info` | [`RateLimitInfo`](#rate-limit-info) | Aktueller Rate-Limit-Status |

1532| `uuid` | `str` | Eindeutige Ereigniskennung |

1533| `session_id` | `str` | Sitzungskennung |

1534 

1535### `RateLimitInfo`

1536 

1537Rate-Limit-Status, den [`RateLimitEvent`](#rate-limit-event) trägt.

1538 

1539```python theme={null}

1540RateLimitStatus = Literal["allowed", "allowed_warning", "rejected"]

1541RateLimitType = Literal[

1542 "five_hour", "seven_day", "seven_day_opus", "seven_day_sonnet", "overage"

1543]

1544 

1545 

1546@dataclass

1547class RateLimitInfo:

1548 status: RateLimitStatus

1549 resets_at: int | None = None

1550 rate_limit_type: RateLimitType | None = None

1551 utilization: float | None = None

1552 overage_status: RateLimitStatus | None = None

1553 overage_resets_at: int | None = None

1554 overage_disabled_reason: str | None = None

1555 raw: dict[str, Any] = field(default_factory=dict)

1556```

1557 

1558| Feld | Typ | Beschreibung |

1559| :------------------------ | :------------------------ | :--------------------------------------------------------------------------------------------------------------------------------- |

1560| `status` | `RateLimitStatus` | Aktueller Status. `"allowed_warning"` bedeutet, dass die Grenze näher rückt; `"rejected"` bedeutet, dass die Grenze erreicht wurde |

1561| `resets_at` | `int \| None` | Unix-Zeitstempel, wenn das Rate-Limit-Fenster zurückgesetzt wird |

1562| `rate_limit_type` | `RateLimitType \| None` | Welches Rate-Limit-Fenster gilt |

1563| `utilization` | `float \| None` | Anteil des Rate-Limits, das verbraucht wurde (0,0 bis 1,0) |

1564| `overage_status` | `RateLimitStatus \| None` | Status der Pay-as-you-go-Übernutzung, falls zutreffend |

1565| `overage_resets_at` | `int \| None` | Unix-Zeitstempel, wenn das Übernutzungs-Fenster zurückgesetzt wird |

1566| `overage_disabled_reason` | `str \| None` | Warum Übernutzung nicht verfügbar ist, wenn Status `"rejected"` ist |

1567| `raw` | `dict[str, Any]` | Vollständiges Rohdictionary von der CLI, einschließlich Felder, die oben nicht modelliert sind |

1568 

1569### `TaskStartedMessage`

1570 

1571Wird ausgegeben, wenn eine Hintergrundaufgabe startet. Eine Hintergrundaufgabe ist alles, was außerhalb der Hauptumdrehung verfolgt wird: ein backgroundierter Bash-Befehl, eine [Monitor](#monitor)-Überwachung, ein Subagent, der über das Agent-Tool erzeugt wird, oder ein Remote-Agent. Das Feld `task_type` sagt Ihnen, welches. Diese Benennung ist nicht verwandt mit der `Task`-zu-`Agent`-Tool-Umbenennung.

1572 

1573```python theme={null}

1574@dataclass

1575class TaskStartedMessage(SystemMessage):

1576 task_id: str

1577 description: str

1578 uuid: str

1579 session_id: str

1580 tool_use_id: str | None = None

1581 task_type: str | None = None

1582```

1583 

1584| Feld | Typ | Beschreibung |

1585| :------------ | :------------ | :------------------------------------------------------------------------------------------------------------------------------------- |

1586| `task_id` | `str` | Eindeutige Kennung für die Aufgabe |

1587| `description` | `str` | Beschreibung der Aufgabe |

1588| `uuid` | `str` | Eindeutige Nachrichtenkennung |

1589| `session_id` | `str` | Sitzungskennung |

1590| `tool_use_id` | `str \| None` | Zugeordnete Tool-Use-ID |

1591| `task_type` | `str \| None` | Welche Art von Hintergrundaufgabe: `"local_bash"` für Background Bash und Monitor-Überwachungen, `"local_agent"` oder `"remote_agent"` |

1592 

1593### `TaskUsage`

1594 

1595Token- und Timing-Daten für eine Hintergrundaufgabe.

1596 

1597```python theme={null}

1598class TaskUsage(TypedDict):

1599 total_tokens: int

1600 tool_uses: int

1601 duration_ms: int

1602```

1603 

1604### `TaskProgressMessage`

1605 

1606Wird regelmäßig mit Fortschrittsaktualisierungen für eine laufende Hintergrundaufgabe ausgegeben.

1607 

1608```python theme={null}

1609@dataclass

1610class TaskProgressMessage(SystemMessage):

1611 task_id: str

1612 description: str

1613 usage: TaskUsage

1614 uuid: str

1615 session_id: str

1616 tool_use_id: str | None = None

1617 last_tool_name: str | None = None

1618```

1619 

1620| Feld | Typ | Beschreibung |

1621| :--------------- | :------------ | :---------------------------------------------------- |

1622| `task_id` | `str` | Eindeutige Kennung für die Aufgabe |

1623| `description` | `str` | Aktuelle Statusbeschreibung |

1624| `usage` | `TaskUsage` | Token-Nutzung für diese Aufgabe bisher |

1625| `uuid` | `str` | Eindeutige Nachrichtenkennung |

1626| `session_id` | `str` | Sitzungskennung |

1627| `tool_use_id` | `str \| None` | Zugeordnete Tool-Use-ID |

1628| `last_tool_name` | `str \| None` | Name des letzten Tools, das die Aufgabe verwendet hat |

1629 

1630### `TaskNotificationMessage`

1631 

1632Wird ausgegeben, wenn eine Hintergrundaufgabe abgeschlossen, fehlgeschlagen oder gestoppt wird. Hintergrundaufgaben umfassen `run_in_background`-Bash-Befehle, Monitor-Überwachungen und Background-Subagenten.

1633 

1634```python theme={null}

1635@dataclass

1636class TaskNotificationMessage(SystemMessage):

1637 task_id: str

1638 status: TaskNotificationStatus # "completed" | "failed" | "stopped"

1639 output_file: str

1640 summary: str

1641 uuid: str

1642 session_id: str

1643 tool_use_id: str | None = None

1644 usage: TaskUsage | None = None

1645```

1646 

1647| Feld | Typ | Beschreibung |

1648| :------------ | :----------------------- | :--------------------------------------------------- |

1649| `task_id` | `str` | Eindeutige Kennung für die Aufgabe |

1650| `status` | `TaskNotificationStatus` | Einer von `"completed"`, `"failed"` oder `"stopped"` |

1651| `output_file` | `str` | Pfad zur Aufgabenausgabedatei |

1652| `summary` | `str` | Zusammenfassung des Aufgabenergebnisses |

1653| `uuid` | `str` | Eindeutige Nachrichtenkennung |

1654| `session_id` | `str` | Sitzungskennung |

1655| `tool_use_id` | `str \| None` | Zugeordnete Tool-Use-ID |

1656| `usage` | `TaskUsage \| None` | Endgültige Token-Nutzung für die Aufgabe |

1657 

1658## Inhaltsblock-Typen

1659 

1660### `ContentBlock`

1661 

1662Union-Typ aller Inhaltsblöcke.

1663 

1664```python theme={null}

1665ContentBlock = TextBlock | ThinkingBlock | ToolUseBlock | ToolResultBlock

1666```

1667 

1668### `TextBlock`

1669 

1670Text-Inhaltsblock.

1671 

1672```python theme={null}

1673@dataclass

1674class TextBlock:

1675 text: str

1676```

1677 

1678### `ThinkingBlock`

1679 

1680Thinking-Inhaltsblock (für Modelle mit Thinking-Fähigkeit).

1681 

1682```python theme={null}

1683@dataclass

1684class ThinkingBlock:

1685 thinking: str

1686 signature: str

1687```

1688 

1689### `ToolUseBlock`

1690 

1691Tool-Use-Anfrage-Block.

1692 

1693```python theme={null}

1694@dataclass

1695class ToolUseBlock:

1696 id: str

1697 name: str

1698 input: dict[str, Any]

1699```

1700 

1701### `ToolResultBlock`

1702 

1703Tool-Ausführungs-Ergebnis-Block.

1704 

1705```python theme={null}

1706@dataclass

1707class ToolResultBlock:

1708 tool_use_id: str

1709 content: str | list[dict[str, Any]] | None = None

1710 is_error: bool | None = None

1711```

1712 

1713## Fehlertypen

1714 

1715### `ClaudeSDKError`

1716 

1717Basis-Ausnahmeklasse für alle SDK-Fehler.

1718 

1719```python theme={null}

1720class ClaudeSDKError(Exception):

1721 """Base error for Claude SDK."""

1722```

1723 

1724### `CLINotFoundError`

1725 

1726Wird ausgelöst, wenn Claude Code CLI nicht installiert oder nicht gefunden ist.

1727 

1728```python theme={null}

1729class CLINotFoundError(CLIConnectionError):

1730 def __init__(

1731 self, message: str = "Claude Code not found", cli_path: str | None = None

1732 ):

1733 """

1734 Args:

1735 message: Error message (default: "Claude Code not found")

1736 cli_path: Optional path to the CLI that was not found

1737 """

1738```

1739 

1740### `CLIConnectionError`

1741 

1742Wird ausgelöst, wenn die Verbindung zu Claude Code fehlschlägt.

1743 

1744```python theme={null}

1745class CLIConnectionError(ClaudeSDKError):

1746 """Failed to connect to Claude Code."""

1747```

1748 

1749### `ProcessError`

1750 

1751Wird ausgelöst, wenn der Claude Code-Prozess fehlschlägt.

1752 

1753```python theme={null}

1754class ProcessError(ClaudeSDKError):

1755 def __init__(

1756 self, message: str, exit_code: int | None = None, stderr: str | None = None

1757 ):

1758 self.exit_code = exit_code

1759 self.stderr = stderr

1760```

1761 

1762### `CLIJSONDecodeError`

1763 

1764Wird ausgelöst, wenn JSON-Parsing fehlschlägt.

1765 

1766```python theme={null}

1767class CLIJSONDecodeError(ClaudeSDKError):

1768 def __init__(self, line: str, original_error: Exception):

1769 """

1770 Args:

1771 line: The line that failed to parse

1772 original_error: The original JSON decode exception

1773 """

1774 self.line = line

1775 self.original_error = original_error

1776```

1777 

1778## Hook-Typen

1779 

1780Einen umfassenden Leitfaden zur Verwendung von Hooks mit Beispielen und häufigen Mustern finden Sie im [Hooks-Leitfaden](/de/agent-sdk/hooks).

1781 

1782### `HookEvent`

1783 

1784Unterstützte Hook-Ereignistypen.

1785 

1786```python theme={null}

1787HookEvent = Literal[

1788 "PreToolUse", # Called before tool execution

1789 "PostToolUse", # Called after tool execution

1790 "PostToolUseFailure", # Called when a tool execution fails

1791 "UserPromptSubmit", # Called when user submits a prompt

1792 "Stop", # Called when stopping execution

1793 "SubagentStop", # Called when a subagent stops

1794 "PreCompact", # Called before message compaction

1795 "Notification", # Called for notification events

1796 "SubagentStart", # Called when a subagent starts

1797 "PermissionRequest", # Called when a permission decision is needed

1798]

1799```

1800 

1801<Note>

1802 Das TypeScript SDK unterstützt zusätzliche Hook-Ereignisse, die in Python noch nicht verfügbar sind: `SessionStart`, `SessionEnd`, `Setup`, `TeammateIdle`, `TaskCompleted`, `ConfigChange`, `WorktreeCreate`, `WorktreeRemove` und `PostToolBatch`.

1803</Note>

1804 

1805### `HookCallback`

1806 

1807Typ-Definition für Hook-Callback-Funktionen.

1808 

1809```python theme={null}

1810HookCallback = Callable[[HookInput, str | None, HookContext], Awaitable[HookJSONOutput]]

1811```

1812 

1813Parameter:

1814 

1815* `input`: Stark typisierte Hook-Eingabe mit diskriminierten Unions basierend auf `hook_event_name` (siehe [`HookInput`](#hook-input))

1816* `tool_use_id`: Optionale Tool-Use-Kennung (für Tool-bezogene Hooks)

1817* `context`: Hook-Kontext mit zusätzlichen Informationen

1818 

1819Gibt ein [`HookJSONOutput`](#hook-json-output) zurück, das enthalten kann:

1820 

1821* `decision`: `"block"`, um die Aktion zu blockieren

1822* `systemMessage`: System-Nachricht, die zum Transkript hinzugefügt werden soll

1823* `hookSpecificOutput`: Hook-spezifische Ausgabedaten

1824 

1825### `HookContext`

1826 

1827Kontextinformationen, die an Hook-Callbacks übergeben werden.

1828 

1829```python theme={null}

1830class HookContext(TypedDict):

1831 signal: Any | None # Future: abort signal support

1832```

1833 

1834### `HookMatcher`

1835 

1836Konfiguration zum Abgleichen von Hooks mit bestimmten Ereignissen oder Tools.

1837 

1838```python theme={null}

1839@dataclass

1840class HookMatcher:

1841 matcher: str | None = (

1842 None # Tool name or pattern to match (e.g., "Bash", "Write|Edit")

1843 )

1844 hooks: list[HookCallback] = field(

1845 default_factory=list

1846 ) # List of callbacks to execute

1847 timeout: float | None = (

1848 None # Timeout in seconds for all hooks in this matcher (default: 60)

1849 )

1850```

1851 

1852### `HookInput`

1853 

1854Union-Typ aller Hook-Eingabetypen. Der tatsächliche Typ hängt vom Feld `hook_event_name` ab.

1855 

1856```python theme={null}

1857HookInput = (

1858 PreToolUseHookInput

1859 | PostToolUseHookInput

1860 | PostToolUseFailureHookInput

1861 | UserPromptSubmitHookInput

1862 | StopHookInput

1863 | SubagentStopHookInput

1864 | PreCompactHookInput

1865 | NotificationHookInput

1866 | SubagentStartHookInput

1867 | PermissionRequestHookInput

1868)

1869```

1870 

1871### `BaseHookInput`

1872 

1873Basis-Felder, die in allen Hook-Eingabetypen vorhanden sind.

1874 

1875```python theme={null}

1876class BaseHookInput(TypedDict):

1877 session_id: str

1878 transcript_path: str

1879 cwd: str

1880 permission_mode: NotRequired[str]

1881```

1882 

1883| Feld | Typ | Beschreibung |

1884| :---------------- | :--------------- | :-------------------------------- |

1885| `session_id` | `str` | Aktuelle Sitzungskennung |

1886| `transcript_path` | `str` | Pfad zur Sitzungstranskript-Datei |

1887| `cwd` | `str` | Aktuelles Arbeitsverzeichnis |

1888| `permission_mode` | `str` (optional) | Aktueller Berechtigungsmodus |

1889 

1890### `PreToolUseHookInput`

1891 

1892Eingabedaten für `PreToolUse`-Hook-Ereignisse.

1893 

1894```python theme={null}

1895class PreToolUseHookInput(BaseHookInput):

1896 hook_event_name: Literal["PreToolUse"]

1897 tool_name: str

1898 tool_input: dict[str, Any]

1899 tool_use_id: str

1900 agent_id: NotRequired[str]

1901 agent_type: NotRequired[str]

1902```

1903 

1904| Feld | Typ | Beschreibung |

1905| :---------------- | :---------------------- | :------------------------------------------------------------------------------------- |

1906| `hook_event_name` | `Literal["PreToolUse"]` | Immer "PreToolUse" |

1907| `tool_name` | `str` | Name des Tools, das ausgeführt werden soll |

1908| `tool_input` | `dict[str, Any]` | Eingabeparameter für das Tool |

1909| `tool_use_id` | `str` | Eindeutige Kennung für diese Tool-Nutzung |

1910| `agent_id` | `str` (optional) | Subagenten-Kennung, vorhanden, wenn der Hook innerhalb eines Subagenten ausgelöst wird |

1911| `agent_type` | `str` (optional) | Subagenten-Typ, vorhanden, wenn der Hook innerhalb eines Subagenten ausgelöst wird |

1912 

1913### `PostToolUseHookInput`

1914 

1915Eingabedaten für `PostToolUse`-Hook-Ereignisse.

1916 

1917```python theme={null}

1918class PostToolUseHookInput(BaseHookInput):

1919 hook_event_name: Literal["PostToolUse"]

1920 tool_name: str

1921 tool_input: dict[str, Any]

1922 tool_response: Any

1923 tool_use_id: str

1924 agent_id: NotRequired[str]

1925 agent_type: NotRequired[str]

1926```

1927 

1928| Feld | Typ | Beschreibung |

1929| :---------------- | :----------------------- | :------------------------------------------------------------------------------------- |

1930| `hook_event_name` | `Literal["PostToolUse"]` | Immer "PostToolUse" |

1931| `tool_name` | `str` | Name des Tools, das ausgeführt wurde |

1932| `tool_input` | `dict[str, Any]` | Eingabeparameter, die verwendet wurden |

1933| `tool_response` | `Any` | Antwort aus der Tool-Ausführung |

1934| `tool_use_id` | `str` | Eindeutige Kennung für diese Tool-Nutzung |

1935| `agent_id` | `str` (optional) | Subagenten-Kennung, vorhanden, wenn der Hook innerhalb eines Subagenten ausgelöst wird |

1936| `agent_type` | `str` (optional) | Subagenten-Typ, vorhanden, wenn der Hook innerhalb eines Subagenten ausgelöst wird |

1937 

1938### `PostToolUseFailureHookInput`

1939 

1940Eingabedaten für `PostToolUseFailure`-Hook-Ereignisse. Wird aufgerufen, wenn eine Tool-Ausführung fehlschlägt.

1941 

1942```python theme={null}

1943class PostToolUseFailureHookInput(BaseHookInput):

1944 hook_event_name: Literal["PostToolUseFailure"]

1945 tool_name: str

1946 tool_input: dict[str, Any]

1947 tool_use_id: str

1948 error: str

1949 is_interrupt: NotRequired[bool]

1950 agent_id: NotRequired[str]

1951 agent_type: NotRequired[str]

1952```

1953 

1954| Feld | Typ | Beschreibung |

1955| :---------------- | :------------------------------ | :------------------------------------------------------------------------------------- |

1956| `hook_event_name` | `Literal["PostToolUseFailure"]` | Immer "PostToolUseFailure" |

1957| `tool_name` | `str` | Name des Tools, das fehlgeschlagen ist |

1958| `tool_input` | `dict[str, Any]` | Eingabeparameter, die verwendet wurden |

1959| `tool_use_id` | `str` | Eindeutige Kennung für diese Tool-Nutzung |

1960| `error` | `str` | Fehlermeldung aus der fehlgeschlagenen Ausführung |

1961| `is_interrupt` | `bool` (optional) | Ob der Fehler durch eine Unterbrechung verursacht wurde |

1962| `agent_id` | `str` (optional) | Subagenten-Kennung, vorhanden, wenn der Hook innerhalb eines Subagenten ausgelöst wird |

1963| `agent_type` | `str` (optional) | Subagenten-Typ, vorhanden, wenn der Hook innerhalb eines Subagenten ausgelöst wird |

1964 

1965### `UserPromptSubmitHookInput`

1966 

1967Eingabedaten für `UserPromptSubmit`-Hook-Ereignisse.

1968 

1969```python theme={null}

1970class UserPromptSubmitHookInput(BaseHookInput):

1971 hook_event_name: Literal["UserPromptSubmit"]

1972 prompt: str

1973```

1974 

1975| Feld | Typ | Beschreibung |

1976| :---------------- | :---------------------------- | :----------------------------------------- |

1977| `hook_event_name` | `Literal["UserPromptSubmit"]` | Immer "UserPromptSubmit" |

1978| `prompt` | `str` | Die vom Benutzer eingereichte Aufforderung |

1979 

1980### `StopHookInput`

1981 

1982Eingabedaten für `Stop`-Hook-Ereignisse.

1983 

1984```python theme={null}

1985class StopHookInput(BaseHookInput):

1986 hook_event_name: Literal["Stop"]

1987 stop_hook_active: bool

1988```

1989 

1990| Feld | Typ | Beschreibung |

1991| :----------------- | :---------------- | :------------------------- |

1992| `hook_event_name` | `Literal["Stop"]` | Immer "Stop" |

1993| `stop_hook_active` | `bool` | Ob der Stop-Hook aktiv ist |

1994 

1995### `SubagentStopHookInput`

1996 

1997Eingabedaten für `SubagentStop`-Hook-Ereignisse.

1998 

1999```python theme={null}

2000class SubagentStopHookInput(BaseHookInput):

2001 hook_event_name: Literal["SubagentStop"]

2002 stop_hook_active: bool

2003 agent_id: str

2004 agent_transcript_path: str

2005 agent_type: str

2006```

2007 

2008| Feld | Typ | Beschreibung |

2009| :---------------------- | :------------------------ | :--------------------------------------- |

2010| `hook_event_name` | `Literal["SubagentStop"]` | Immer "SubagentStop" |

2011| `stop_hook_active` | `bool` | Ob der Stop-Hook aktiv ist |

2012| `agent_id` | `str` | Eindeutige Kennung für den Subagenten |

2013| `agent_transcript_path` | `str` | Pfad zur Transkript-Datei des Subagenten |

2014| `agent_type` | `str` | Typ des Subagenten |

2015 

2016### `PreCompactHookInput`

2017 

2018Eingabedaten für `PreCompact`-Hook-Ereignisse.

2019 

2020```python theme={null}

2021class PreCompactHookInput(BaseHookInput):

2022 hook_event_name: Literal["PreCompact"]

2023 trigger: Literal["manual", "auto"]

2024 custom_instructions: str | None

2025```

2026 

2027| Feld | Typ | Beschreibung |

2028| :-------------------- | :-------------------------- | :--------------------------------------------------- |

2029| `hook_event_name` | `Literal["PreCompact"]` | Immer "PreCompact" |

2030| `trigger` | `Literal["manual", "auto"]` | Was die Komprimierung ausgelöst hat |

2031| `custom_instructions` | `str \| None` | Benutzerdefinierte Anweisungen für die Komprimierung |

2032 

2033### `NotificationHookInput`

2034 

2035Eingabedaten für `Notification`-Hook-Ereignisse.

2036 

2037```python theme={null}

2038class NotificationHookInput(BaseHookInput):

2039 hook_event_name: Literal["Notification"]

2040 message: str

2041 title: NotRequired[str]

2042 notification_type: str

2043```

2044 

2045| Feld | Typ | Beschreibung |

2046| :------------------ | :------------------------ | :--------------------------------- |

2047| `hook_event_name` | `Literal["Notification"]` | Immer "Notification" |

2048| `message` | `str` | Benachrichtigungsnachrichteninhalt |

2049| `title` | `str` (optional) | Benachrichtigungstitel |

2050| `notification_type` | `str` | Benachrichtigungstyp |

2051 

2052### `SubagentStartHookInput`

2053 

2054Eingabedaten für `SubagentStart`-Hook-Ereignisse.

2055 

2056```python theme={null}

2057class SubagentStartHookInput(BaseHookInput):

2058 hook_event_name: Literal["SubagentStart"]

2059 agent_id: str

2060 agent_type: str

2061```

2062 

2063| Feld | Typ | Beschreibung |

2064| :---------------- | :------------------------- | :------------------------------------ |

2065| `hook_event_name` | `Literal["SubagentStart"]` | Immer "SubagentStart" |

2066| `agent_id` | `str` | Eindeutige Kennung für den Subagenten |

2067| `agent_type` | `str` | Typ des Subagenten |

2068 

2069### `PermissionRequestHookInput`

2070 

2071Eingabedaten für `PermissionRequest`-Hook-Ereignisse. Ermöglicht Hooks, Berechtigungsentscheidungen programmgesteuert zu handhaben.

2072 

2073```python theme={null}

2074class PermissionRequestHookInput(BaseHookInput):

2075 hook_event_name: Literal["PermissionRequest"]

2076 tool_name: str

2077 tool_input: dict[str, Any]

2078 permission_suggestions: NotRequired[list[Any]]

2079```

2080 

2081| Feld | Typ | Beschreibung |

2082| :----------------------- | :----------------------------- | :------------------------------------------------------- |

2083| `hook_event_name` | `Literal["PermissionRequest"]` | Immer "PermissionRequest" |

2084| `tool_name` | `str` | Name des Tools, das Berechtigung anfordert |

2085| `tool_input` | `dict[str, Any]` | Eingabeparameter für das Tool |

2086| `permission_suggestions` | `list[Any]` (optional) | Vorgeschlagene Berechtigungsaktualisierungen von der CLI |

2087 

2088### `HookJSONOutput`

2089 

2090Union-Typ für Hook-Callback-Rückgabewerte.

2091 

2092```python theme={null}

2093HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput

2094```

2095 

2096#### `SyncHookJSONOutput`

2097 

2098Synchrone Hook-Ausgabe mit Kontroll- und Entscheidungsfeldern.

2099 

2100```python theme={null}

2101class SyncHookJSONOutput(TypedDict):

2102 # Control fields

2103 continue_: NotRequired[bool] # Whether to proceed (default: True)

2104 suppressOutput: NotRequired[bool] # Hide stdout from transcript

2105 stopReason: NotRequired[str] # Message when continue is False

2106 

2107 # Decision fields

2108 decision: NotRequired[Literal["block"]]

2109 systemMessage: NotRequired[str] # Warning message for user

2110 reason: NotRequired[str] # Feedback for Claude

2111 

2112 # Hook-specific output

2113 hookSpecificOutput: NotRequired[HookSpecificOutput]

2114```

2115 

2116<Note>

2117 Verwenden Sie `continue_` (mit Unterstrich) im Python-Code. Es wird automatisch in `continue` konvertiert, wenn es an die CLI gesendet wird.

2118</Note>

2119 

2120#### `HookSpecificOutput`

2121 

2122Ein `TypedDict`, das den Hook-Ereignisnamen und ereignisspezifische Felder enthält. Die Form hängt vom `hookEventName`-Wert ab. Vollständige Details zu verfügbaren Feldern pro Hook-Ereignis finden Sie unter [Ausführung mit Hooks kontrollieren](/de/agent-sdk/hooks#outputs).

2123 

2124Eine diskriminierte Union von ereignisspezifischen Ausgabetypen. Das Feld `hookEventName` bestimmt, welche Felder gültig sind.

2125 

2126```python theme={null}

2127class PreToolUseHookSpecificOutput(TypedDict):

2128 hookEventName: Literal["PreToolUse"]

2129 permissionDecision: NotRequired[Literal["allow", "deny", "ask"]]

2130 permissionDecisionReason: NotRequired[str]

2131 updatedInput: NotRequired[dict[str, Any]]

2132 additionalContext: NotRequired[str]

2133 

2134 

2135class PostToolUseHookSpecificOutput(TypedDict):

2136 hookEventName: Literal["PostToolUse"]

2137 additionalContext: NotRequired[str]

2138 updatedMCPToolOutput: NotRequired[Any]

2139 

2140 

2141class PostToolUseFailureHookSpecificOutput(TypedDict):

2142 hookEventName: Literal["PostToolUseFailure"]

2143 additionalContext: NotRequired[str]

2144 

2145 

2146class UserPromptSubmitHookSpecificOutput(TypedDict):

2147 hookEventName: Literal["UserPromptSubmit"]

2148 additionalContext: NotRequired[str]

2149 

2150 

2151class NotificationHookSpecificOutput(TypedDict):

2152 hookEventName: Literal["Notification"]

2153 additionalContext: NotRequired[str]

2154 

2155 

2156class SubagentStartHookSpecificOutput(TypedDict):

2157 hookEventName: Literal["SubagentStart"]

2158 additionalContext: NotRequired[str]

2159 

2160 

2161class PermissionRequestHookSpecificOutput(TypedDict):

2162 hookEventName: Literal["PermissionRequest"]

2163 decision: dict[str, Any]

2164 

2165 

2166HookSpecificOutput = (

2167 PreToolUseHookSpecificOutput

2168 | PostToolUseHookSpecificOutput

2169 | PostToolUseFailureHookSpecificOutput

2170 | UserPromptSubmitHookSpecificOutput

2171 | NotificationHookSpecificOutput

2172 | SubagentStartHookSpecificOutput

2173 | PermissionRequestHookSpecificOutput

2174)

2175```

2176 

2177#### `AsyncHookJSONOutput`

2178 

2179Asynchrone Hook-Ausgabe, die Hook-Ausführung aufschiebt.

2180 

2181```python theme={null}

2182class AsyncHookJSONOutput(TypedDict):

2183 async_: Literal[True] # Set to True to defer execution

2184 asyncTimeout: NotRequired[int] # Timeout in milliseconds

2185```

2186 

2187<Note>

2188 Verwenden Sie `async_` (mit Unterstrich) im Python-Code. Es wird automatisch in `async` konvertiert, wenn es an die CLI gesendet wird.

2189</Note>

2190 

2191### Hook-Verwendungsbeispiel

2192 

2193Dieses Beispiel registriert zwei Hooks: einen, der gefährliche Bash-Befehle wie `rm -rf /` blockiert, und einen anderen, der alle Tool-Nutzung für Auditing protokolliert. Der Sicherheits-Hook wird nur auf Bash-Befehle ausgeführt (über den `matcher`), während der Logging-Hook auf alle Tools angewendet wird.

2194 

2195```python theme={null}

2196from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher, HookContext

2197from typing import Any

2198 

2199 

2200async def validate_bash_command(

2201 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2202) -> dict[str, Any]:

2203 """Validate and potentially block dangerous bash commands."""

2204 if input_data["tool_name"] == "Bash":

2205 command = input_data["tool_input"].get("command", "")

2206 if "rm -rf /" in command:

2207 return {

2208 "hookSpecificOutput": {

2209 "hookEventName": "PreToolUse",

2210 "permissionDecision": "deny",

2211 "permissionDecisionReason": "Dangerous command blocked",

2212 }

2213 }

2214 return {}

2215 

2216 

2217async def log_tool_use(

2218 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2219) -> dict[str, Any]:

2220 """Log all tool usage for auditing."""

2221 print(f"Tool used: {input_data.get('tool_name')}")

2222 return {}

2223 

2224 

2225options = ClaudeAgentOptions(

2226 hooks={

2227 "PreToolUse": [

2228 HookMatcher(

2229 matcher="Bash", hooks=[validate_bash_command], timeout=120

2230 ), # 2 min for validation

2231 HookMatcher(

2232 hooks=[log_tool_use]

2233 ), # Applies to all tools (default 60s timeout)

2234 ],

2235 "PostToolUse": [HookMatcher(hooks=[log_tool_use])],

2236 }

2237)

2238 

2239async for message in query(prompt="Analyze this codebase", options=options):

2240 print(message)

2241```

2242 

2243## Tool-Eingabe-/Ausgabetypen

2244 

2245Dokumentation von Eingabe-/Ausgabeschemas für alle integrierten Claude Code-Tools. Während das Python SDK diese nicht als Typen exportiert, stellen sie die Struktur von Tool-Eingaben und -Ausgaben in Nachrichten dar.

2246 

2247### Agent

2248 

2249**Tool-Name:** `Agent` (früher `Task`, das immer noch als Alias akzeptiert wird)

2250 

2251**Eingabe:**

2252 

2253```python theme={null}

2254{

2255 "description": str, # A short (3-5 word) description of the task

2256 "prompt": str, # The task for the agent to perform

2257 "subagent_type": str, # The type of specialized agent to use

2258}

2259```

2260 

2261**Ausgabe:**

2262 

2263```python theme={null}

2264{

2265 "result": str, # Final result from the subagent

2266 "usage": dict | None, # Token usage statistics

2267 "total_cost_usd": float | None, # Estimated total cost in USD

2268 "duration_ms": int | None, # Execution duration in milliseconds

2269}

2270```

2271 

2272### AskUserQuestion

2273 

2274**Tool-Name:** `AskUserQuestion`

2275 

2276Stellt dem Benutzer während der Ausführung Klärungsfragen. Siehe [Genehmigungen und Benutzereingaben handhaben](/de/agent-sdk/user-input#handle-clarifying-questions) für Verwendungsdetails.

2277 

2278**Eingabe:**

2279 

2280```python theme={null}

2281{

2282 "questions": [ # Questions to ask the user (1-4 questions)

2283 {

2284 "question": str, # The complete question to ask the user

2285 "header": str, # Very short label displayed as a chip/tag (max 12 chars)

2286 "options": [ # The available choices (2-4 options)

2287 {

2288 "label": str, # Display text for this option (1-5 words)

2289 "description": str, # Explanation of what this option means

2290 }

2291 ],

2292 "multiSelect": bool, # Set to true to allow multiple selections

2293 }

2294 ],

2295 "answers": dict | None, # User answers populated by the permission system

2296}

2297```

2298 

2299**Ausgabe:**

2300 

2301```python theme={null}

2302{

2303 "questions": [ # The questions that were asked

2304 {

2305 "question": str,

2306 "header": str,

2307 "options": [{"label": str, "description": str}],

2308 "multiSelect": bool,

2309 }

2310 ],

2311 "answers": dict[str, str], # Maps question text to answer string

2312 # Multi-select answers are comma-separated

2313}

2314```

2315 

2316### Bash

2317 

2318**Tool-Name:** `Bash`

2319 

2320**Eingabe:**

2321 

2322```python theme={null}

2323{

2324 "command": str, # The command to execute

2325 "timeout": int | None, # Optional timeout in milliseconds (max 600000)

2326 "description": str | None, # Clear, concise description (5-10 words)

2327 "run_in_background": bool | None, # Set to true to run in background

2328}

2329```

2330 

2331**Ausgabe:**

2332 

2333```python theme={null}

2334{

2335 "output": str, # Combined stdout and stderr output

2336 "exitCode": int, # Exit code of the command

2337 "killed": bool | None, # Whether command was killed due to timeout

2338 "shellId": str | None, # Shell ID for background processes

2339}

2340```

2341 

2342### Monitor

2343 

2344**Tool-Name:** `Monitor`

2345 

2346Führt ein Background-Skript aus und liefert jede stdout-Zeile an Claude als Ereignis, damit es reagieren kann, ohne zu pollen. Monitor folgt den gleichen Berechtigungsregeln wie Bash. Siehe die [Monitor-Tool-Referenz](/de/tools-reference#monitor-tool) für Verhalten und Provider-Verfügbarkeit.

2347 

2348**Eingabe:**

2349 

2350```python theme={null}

2351{

2352 "command": str, # Shell script; each stdout line is an event, exit ends the watch

2353 "description": str, # Short description shown in notifications

2354 "timeout_ms": int | None, # Kill after this deadline (default 300000, max 3600000)

2355 "persistent": bool | None, # Run for the lifetime of the session; stop with TaskStop

2356}

2357```

2358 

2359**Ausgabe:**

2360 

2361```python theme={null}

2362{

2363 "taskId": str, # ID of the background monitor task

2364 "timeoutMs": int, # Timeout deadline in milliseconds (0 when persistent)

2365 "persistent": bool | None, # True when running until TaskStop or session end

2366}

2367```

2368 

2369### Edit

2370 

2371**Tool-Name:** `Edit`

2372 

2373**Eingabe:**

2374 

2375```python theme={null}

2376{

2377 "file_path": str, # The absolute path to the file to modify

2378 "old_string": str, # The text to replace

2379 "new_string": str, # The text to replace it with

2380 "replace_all": bool | None, # Replace all occurrences (default False)

2381}

2382```

2383 

2384**Ausgabe:**

2385 

2386```python theme={null}

2387{

2388 "message": str, # Confirmation message

2389 "replacements": int, # Number of replacements made

2390 "file_path": str, # File path that was edited

2391}

2392```

2393 

2394### Read

2395 

2396**Tool-Name:** `Read`

2397 

2398**Eingabe:**

2399 

2400```python theme={null}

2401{

2402 "file_path": str, # The absolute path to the file to read

2403 "offset": int | None, # The line number to start reading from

2404 "limit": int | None, # The number of lines to read

2405}

2406```

2407 

2408**Ausgabe (Textdateien):**

2409 

2410```python theme={null}

2411{

2412 "content": str, # File contents with line numbers

2413 "total_lines": int, # Total number of lines in file

2414 "lines_returned": int, # Lines actually returned

2415}

2416```

2417 

2418**Ausgabe (Bilder):**

2419 

2420```python theme={null}

2421{

2422 "image": str, # Base64 encoded image data

2423 "mime_type": str, # Image MIME type

2424 "file_size": int, # File size in bytes

2425}

2426```

2427 

2428### Write

2429 

2430**Tool-Name:** `Write`

2431 

2432**Eingabe:**

2433 

2434```python theme={null}

2435{

2436 "file_path": str, # The absolute path to the file to write

2437 "content": str, # The content to write to the file

2438}

2439```

2440 

2441**Ausgabe:**

2442 

2443```python theme={null}

2444{

2445 "message": str, # Success message

2446 "bytes_written": int, # Number of bytes written

2447 "file_path": str, # File path that was written

2448}

2449```

2450 

2451### Glob

2452 

2453**Tool-Name:** `Glob`

2454 

2455**Eingabe:**

2456 

2457```python theme={null}

2458{

2459 "pattern": str, # The glob pattern to match files against

2460 "path": str | None, # The directory to search in (defaults to cwd)

2461}

2462```

2463 

2464**Ausgabe:**

2465 

2466```python theme={null}

2467{

2468 "matches": list[str], # Array of matching file paths

2469 "count": int, # Number of matches found

2470 "search_path": str, # Search directory used

2471}

2472```

2473 

2474### Grep

2475 

2476**Tool-Name:** `Grep`

2477 

2478**Eingabe:**

2479 

2480```python theme={null}

2481{

2482 "pattern": str, # The regular expression pattern

2483 "path": str | None, # File or directory to search in

2484 "glob": str | None, # Glob pattern to filter files

2485 "type": str | None, # File type to search

2486 "output_mode": str | None, # "content", "files_with_matches", or "count"

2487 "-i": bool | None, # Case insensitive search

2488 "-n": bool | None, # Show line numbers

2489 "-B": int | None, # Lines to show before each match

2490 "-A": int | None, # Lines to show after each match

2491 "-C": int | None, # Lines to show before and after

2492 "head_limit": int | None, # Limit output to first N lines/entries

2493 "multiline": bool | None, # Enable multiline mode

2494}

2495```

2496 

2497**Ausgabe (content-Modus):**

2498 

2499```python theme={null}

2500{

2501 "matches": [

2502 {

2503 "file": str,

2504 "line_number": int | None,

2505 "line": str,

2506 "before_context": list[str] | None,

2507 "after_context": list[str] | None,

2508 }

2509 ],

2510 "total_matches": int,

2511}

2512```

2513 

2514**Ausgabe (files\_with\_matches-Modus):**

2515 

2516```python theme={null}

2517{

2518 "files": list[str], # Files containing matches

2519 "count": int, # Number of files with matches

2520}

2521```

2522 

2523### NotebookEdit

2524 

2525**Tool-Name:** `NotebookEdit`

2526 

2527**Eingabe:**

2528 

2529```python theme={null}

2530{

2531 "notebook_path": str, # Absolute path to the Jupyter notebook

2532 "cell_id": str | None, # The ID of the cell to edit

2533 "new_source": str, # The new source for the cell

2534 "cell_type": "code" | "markdown" | None, # The type of the cell

2535 "edit_mode": "replace" | "insert" | "delete" | None, # Edit operation type

2536}

2537```

2538 

2539**Ausgabe:**

2540 

2541```python theme={null}

2542{

2543 "message": str, # Success message

2544 "edit_type": "replaced" | "inserted" | "deleted", # Type of edit performed

2545 "cell_id": str | None, # Cell ID that was affected

2546 "total_cells": int, # Total cells in notebook after edit

2547}

2548```

2549 

2550### WebFetch

2551 

2552**Tool-Name:** `WebFetch`

2553 

2554**Eingabe:**

2555 

2556```python theme={null}

2557{

2558 "url": str, # The URL to fetch content from

2559 "prompt": str, # The prompt to run on the fetched content

2560}

2561```

2562 

2563**Ausgabe:**

2564 

2565```python theme={null}

2566{

2567 "response": str, # AI model's response to the prompt

2568 "url": str, # URL that was fetched

2569 "final_url": str | None, # Final URL after redirects

2570 "status_code": int | None, # HTTP status code

2571}

2572```

2573 

2574### WebSearch

2575 

2576**Tool-Name:** `WebSearch`

2577 

2578**Eingabe:**

2579 

2580```python theme={null}

2581{

2582 "query": str, # The search query to use

2583 "allowed_domains": list[str] | None, # Only include results from these domains

2584 "blocked_domains": list[str] | None, # Never include results from these domains

2585}

2586```

2587 

2588**Ausgabe:**

2589 

2590```python theme={null}

2591{

2592 "results": [{"title": str, "url": str, "snippet": str, "metadata": dict | None}],

2593 "total_results": int,

2594 "query": str,

2595}

2596```

2597 

2598### TodoWrite

2599 

2600**Tool-Name:** `TodoWrite`

2601 

2602**Eingabe:**

2603 

2604```python theme={null}

2605{

2606 "todos": [

2607 {

2608 "content": str, # The task description

2609 "status": "pending" | "in_progress" | "completed", # Task status

2610 "activeForm": str, # Active form of the description

2611 }

2612 ]

2613}

2614```

2615 

2616**Ausgabe:**

2617 

2618```python theme={null}

2619{

2620 "message": str, # Success message

2621 "stats": {"total": int, "pending": int, "in_progress": int, "completed": int},

2622}

2623```

2624 

2625### BashOutput

2626 

2627**Tool-Name:** `BashOutput`

2628 

2629**Eingabe:**

2630 

2631```python theme={null}

2632{

2633 "bash_id": str, # The ID of the background shell

2634 "filter": str | None, # Optional regex to filter output lines

2635}

2636```

2637 

2638**Ausgabe:**

2639 

2640```python theme={null}

2641{

2642 "output": str, # New output since last check

2643 "status": "running" | "completed" | "failed", # Current shell status

2644 "exitCode": int | None, # Exit code when completed

2645}

2646```

2647 

2648### KillBash

2649 

2650**Tool-Name:** `KillBash`

2651 

2652**Eingabe:**

2653 

2654```python theme={null}

2655{

2656 "shell_id": str # The ID of the background shell to kill

2657}

2658```

2659 

2660**Ausgabe:**

2661 

2662```python theme={null}

2663{

2664 "message": str, # Success message

2665 "shell_id": str, # ID of the killed shell

2666}

2667```

2668 

2669### ExitPlanMode

2670 

2671**Tool-Name:** `ExitPlanMode`

2672 

2673**Eingabe:**

2674 

2675```python theme={null}

2676{

2677 "plan": str # The plan to run by the user for approval

2678}

2679```

2680 

2681**Ausgabe:**

2682 

2683```python theme={null}

2684{

2685 "message": str, # Confirmation message

2686 "approved": bool | None, # Whether user approved the plan

2687}

2688```

2689 

2690### ListMcpResources

2691 

2692**Tool-Name:** `ListMcpResources`

2693 

2694**Eingabe:**

2695 

2696```python theme={null}

2697{

2698 "server": str | None # Optional server name to filter resources by

2699}

2700```

2701 

2702**Ausgabe:**

2703 

2704```python theme={null}

2705{

2706 "resources": [

2707 {

2708 "uri": str,

2709 "name": str,

2710 "description": str | None,

2711 "mimeType": str | None,

2712 "server": str,

2713 }

2714 ],

2715 "total": int,

2716}

2717```

2718 

2719### ReadMcpResource

2720 

2721**Tool-Name:** `ReadMcpResource`

2722 

2723**Eingabe:**

2724 

2725```python theme={null}

2726{

2727 "server": str, # The MCP server name

2728 "uri": str, # The resource URI to read

2729}

2730```

2731 

2732**Ausgabe:**

2733 

2734```python theme={null}

2735{

2736 "contents": [

2737 {"uri": str, "mimeType": str | None, "text": str | None, "blob": str | None}

2738 ],

2739 "server": str,

2740}

2741```

2742 

2743## Erweiterte Funktionen mit ClaudeSDKClient

2744 

2745### Erstellen einer kontinuierlichen Konversationsschnittstelle

2746 

2747```python theme={null}

2748from claude_agent_sdk import (

2749 ClaudeSDKClient,

2750 ClaudeAgentOptions,

2751 AssistantMessage,

2752 TextBlock,

2753)

2754import asyncio

2755 

2756 

2757class ConversationSession:

2758 """Maintains a single conversation session with Claude."""

2759 

2760 def __init__(self, options: ClaudeAgentOptions | None = None):

2761 self.client = ClaudeSDKClient(options)

2762 self.turn_count = 0

2763 

2764 async def start(self):

2765 await self.client.connect()

2766 print("Starting conversation session. Claude will remember context.")

2767 print(

2768 "Commands: 'exit' to quit, 'interrupt' to stop current task, 'new' for new session"

2769 )

2770 

2771 while True:

2772 user_input = input(f"\n[Turn {self.turn_count + 1}] You: ")

2773 

2774 if user_input.lower() == "exit":

2775 break

2776 elif user_input.lower() == "interrupt":

2777 await self.client.interrupt()

2778 print("Task interrupted!")

2779 continue

2780 elif user_input.lower() == "new":

2781 # Disconnect and reconnect for a fresh session

2782 await self.client.disconnect()

2783 await self.client.connect()

2784 self.turn_count = 0

2785 print("Started new conversation session (previous context cleared)")

2786 continue

2787 

2788 # Send message - the session retains all previous messages

2789 await self.client.query(user_input)

2790 self.turn_count += 1

2791 

2792 # Process response

2793 print(f"[Turn {self.turn_count}] Claude: ", end="")

2794 async for message in self.client.receive_response():

2795 if isinstance(message, AssistantMessage):

2796 for block in message.content:

2797 if isinstance(block, TextBlock):

2798 print(block.text, end="")

2799 print() # New line after response

2800 

2801 await self.client.disconnect()

2802 print(f"Conversation ended after {self.turn_count} turns.")

2803 

2804 

2805async def main():

2806 options = ClaudeAgentOptions(

2807 allowed_tools=["Read", "Write", "Bash"], permission_mode="acceptEdits"

2808 )

2809 session = ConversationSession(options)

2810 await session.start()

2811 

2812 

2813# Example conversation:

2814# Turn 1 - You: "Create a file called hello.py"

2815# Turn 1 - Claude: "I'll create a hello.py file for you..."

2816# Turn 2 - You: "What's in that file?"

2817# Turn 2 - Claude: "The hello.py file I just created contains..." (remembers!)

2818# Turn 3 - You: "Add a main function to it"

2819# Turn 3 - Claude: "I'll add a main function to hello.py..." (knows which file!)

2820 

2821asyncio.run(main())

2822```

2823 

2824### Verwendung von Hooks zur Verhaltensänderung

2825 

2826```python theme={null}

2827from claude_agent_sdk import (

2828 ClaudeSDKClient,

2829 ClaudeAgentOptions,

2830 HookMatcher,

2831 HookContext,

2832)

2833import asyncio

2834from typing import Any

2835 

2836 

2837async def pre_tool_logger(

2838 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2839) -> dict[str, Any]:

2840 """Log all tool usage before execution."""

2841 tool_name = input_data.get("tool_name", "unknown")

2842 print(f"[PRE-TOOL] About to use: {tool_name}")

2843 

2844 # You can modify or block the tool execution here

2845 if tool_name == "Bash" and "rm -rf" in str(input_data.get("tool_input", {})):

2846 return {

2847 "hookSpecificOutput": {

2848 "hookEventName": "PreToolUse",

2849 "permissionDecision": "deny",

2850 "permissionDecisionReason": "Dangerous command blocked",

2851 }

2852 }

2853 return {}

2854 

2855 

2856async def post_tool_logger(

2857 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2858) -> dict[str, Any]:

2859 """Log results after tool execution."""

2860 tool_name = input_data.get("tool_name", "unknown")

2861 print(f"[POST-TOOL] Completed: {tool_name}")

2862 return {}

2863 

2864 

2865async def user_prompt_modifier(

2866 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2867) -> dict[str, Any]:

2868 """Add context to user prompts."""

2869 original_prompt = input_data.get("prompt", "")

2870 

2871 # Add a timestamp as additional context for Claude to see

2872 from datetime import datetime

2873 

2874 timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

2875 

2876 return {

2877 "hookSpecificOutput": {

2878 "hookEventName": "UserPromptSubmit",

2879 "additionalContext": f"[Submitted at {timestamp}] Original prompt: {original_prompt}",

2880 }

2881 }

2882 

2883 

2884async def main():

2885 options = ClaudeAgentOptions(

2886 hooks={

2887 "PreToolUse": [

2888 HookMatcher(hooks=[pre_tool_logger]),

2889 HookMatcher(matcher="Bash", hooks=[pre_tool_logger]),

2890 ],

2891 "PostToolUse": [HookMatcher(hooks=[post_tool_logger])],

2892 "UserPromptSubmit": [HookMatcher(hooks=[user_prompt_modifier])],

2893 },

2894 allowed_tools=["Read", "Write", "Bash"],

2895 )

2896 

2897 async with ClaudeSDKClient(options=options) as client:

2898 await client.query("List files in current directory")

2899 

2900 async for message in client.receive_response():

2901 # Hooks will automatically log tool usage

2902 pass

2903 

2904 

2905asyncio.run(main())

2906```

2907 

2908### Echtzeit-Fortschrittsüberwachung

2909 

2910```python theme={null}

2911from claude_agent_sdk import (

2912 ClaudeSDKClient,

2913 ClaudeAgentOptions,

2914 AssistantMessage,

2915 ToolUseBlock,

2916 ToolResultBlock,

2917 TextBlock,

2918)

2919import asyncio

2920 

2921 

2922async def monitor_progress():

2923 options = ClaudeAgentOptions(

2924 allowed_tools=["Write", "Bash"], permission_mode="acceptEdits"

2925 )

2926 

2927 async with ClaudeSDKClient(options=options) as client:

2928 await client.query("Create 5 Python files with different sorting algorithms")

2929 

2930 # Monitor progress in real-time

2931 async for message in client.receive_response():

2932 if isinstance(message, AssistantMessage):

2933 for block in message.content:

2934 if isinstance(block, ToolUseBlock):

2935 if block.name == "Write":

2936 file_path = block.input.get("file_path", "")

2937 print(f"Creating: {file_path}")

2938 elif isinstance(block, ToolResultBlock):

2939 print("Completed tool execution")

2940 elif isinstance(block, TextBlock):

2941 print(f"Claude says: {block.text[:100]}...")

2942 

2943 print("Task completed!")

2944 

2945 

2946asyncio.run(monitor_progress())

2947```

2948 

2949## Beispielverwendung

2950 

2951### Grundlegende Dateivorgänge (mit query)

2952 

2953```python theme={null}

2954from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ToolUseBlock

2955import asyncio

2956 

2957 

2958async def create_project():

2959 options = ClaudeAgentOptions(

2960 allowed_tools=["Read", "Write", "Bash"],

2961 permission_mode="acceptEdits",

2962 cwd="/home/user/project",

2963 )

2964 

2965 async for message in query(

2966 prompt="Create a Python project structure with setup.py", options=options

2967 ):

2968 if isinstance(message, AssistantMessage):

2969 for block in message.content:

2970 if isinstance(block, ToolUseBlock):

2971 print(f"Using tool: {block.name}")

2972 

2973 

2974asyncio.run(create_project())

2975```

2976 

2977### Fehlerbehandlung

2978 

2979```python theme={null}

2980from claude_agent_sdk import query, CLINotFoundError, ProcessError, CLIJSONDecodeError

2981 

2982try:

2983 async for message in query(prompt="Hello"):

2984 print(message)

2985except CLINotFoundError:

2986 print(

2987 "Claude Code CLI not found. Try reinstalling: pip install --force-reinstall claude-agent-sdk"

2988 )

2989except ProcessError as e:

2990 print(f"Process failed with exit code: {e.exit_code}")

2991except CLIJSONDecodeError as e:

2992 print(f"Failed to parse response: {e}")

2993```

2994 

2995### Streaming-Modus mit Client

2996 

2997```python theme={null}

2998from claude_agent_sdk import ClaudeSDKClient

2999import asyncio

3000 

3001 

3002async def interactive_session():

3003 async with ClaudeSDKClient() as client:

3004 # Send initial message

3005 await client.query("What's the weather like?")

3006 

3007 # Process responses

3008 async for msg in client.receive_response():

3009 print(msg)

3010 

3011 # Send follow-up

3012 await client.query("Tell me more about that")

3013 

3014 # Process follow-up response

3015 async for msg in client.receive_response():

3016 print(msg)

3017 

3018 

3019asyncio.run(interactive_session())

3020```

3021 

3022### Verwendung benutzerdefinierter Tools mit ClaudeSDKClient

3023 

3024```python theme={null}

3025from claude_agent_sdk import (

3026 ClaudeSDKClient,

3027 ClaudeAgentOptions,

3028 tool,

3029 create_sdk_mcp_server,

3030 AssistantMessage,

3031 TextBlock,

3032)

3033import asyncio

3034from typing import Any

3035 

3036 

3037# Define custom tools with @tool decorator

3038@tool("calculate", "Perform mathematical calculations", {"expression": str})

3039async def calculate(args: dict[str, Any]) -> dict[str, Any]:

3040 try:

3041 result = eval(args["expression"], {"__builtins__": {}})

3042 return {"content": [{"type": "text", "text": f"Result: {result}"}]}

3043 except Exception as e:

3044 return {

3045 "content": [{"type": "text", "text": f"Error: {str(e)}"}],

3046 "is_error": True,

3047 }

3048 

3049 

3050@tool("get_time", "Get current time", {})

3051async def get_time(args: dict[str, Any]) -> dict[str, Any]:

3052 from datetime import datetime

3053 

3054 current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

3055 return {"content": [{"type": "text", "text": f"Current time: {current_time}"}]}

3056 

3057 

3058async def main():

3059 # Create SDK MCP server with custom tools

3060 my_server = create_sdk_mcp_server(

3061 name="utilities", version="1.0.0", tools=[calculate, get_time]

3062 )

3063 

3064 # Configure options with the server

3065 options = ClaudeAgentOptions(

3066 mcp_servers={"utils": my_server},

3067 allowed_tools=["mcp__utils__calculate", "mcp__utils__get_time"],

3068 )

3069 

3070 # Use ClaudeSDKClient for interactive tool usage

3071 async with ClaudeSDKClient(options=options) as client:

3072 await client.query("What's 123 * 456?")

3073 

3074 # Process calculation response

3075 async for message in client.receive_response():

3076 if isinstance(message, AssistantMessage):

3077 for block in message.content:

3078 if isinstance(block, TextBlock):

3079 print(f"Calculation: {block.text}")

3080 

3081 # Follow up with time query

3082 await client.query("What time is it now?")

3083 

3084 async for message in client.receive_response():

3085 if isinstance(message, AssistantMessage):

3086 for block in message.content:

3087 if isinstance(block, TextBlock):

3088 print(f"Time: {block.text}")

3089 

3090 

3091asyncio.run(main())

3092```

3093 

3094## Sandbox-Konfiguration

3095 

3096### `SandboxSettings`

3097 

3098Konfiguration für das Sandbox-Verhalten. Verwenden Sie dies, um Command-Sandboxing zu aktivieren und Netzwerkbeschränkungen programmgesteuert zu konfigurieren.

3099 

3100```python theme={null}

3101class SandboxSettings(TypedDict, total=False):

3102 enabled: bool

3103 autoAllowBashIfSandboxed: bool

3104 excludedCommands: list[str]

3105 allowUnsandboxedCommands: bool

3106 network: SandboxNetworkConfig

3107 ignoreViolations: SandboxIgnoreViolations

3108 enableWeakerNestedSandbox: bool

3109```

3110 

3111| Eigenschaft | Typ | Standard | Beschreibung |

3112| :-------------------------- | :------------------------------------------------------ | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

3113| `enabled` | `bool` | `False` | Aktivieren Sie den Sandbox-Modus für die Befehlsausführung |

3114| `autoAllowBashIfSandboxed` | `bool` | `True` | Genehmigen Sie Bash-Befehle automatisch, wenn die Sandbox aktiviert ist |

3115| `excludedCommands` | `list[str]` | `[]` | Befehle, die immer Sandbox-Beschränkungen umgehen (z. B. `["docker"]`). Diese werden automatisch ohne Modellbeteiligung unsandboxed ausgeführt |

3116| `allowUnsandboxedCommands` | `bool` | `True` | Erlauben Sie dem Modell, die Ausführung von Befehlen außerhalb der Sandbox anzufordern. Wenn `True`, kann das Modell `dangerouslyDisableSandbox` in der Tool-Eingabe setzen, was auf das [Berechtigungssystem](#permissions-fallback-for-unsandboxed-commands) zurückfällt |

3117| `network` | [`SandboxNetworkConfig`](#sandbox-network-config) | `None` | Netzwerkspezifische Sandbox-Konfiguration |

3118| `ignoreViolations` | [`SandboxIgnoreViolations`](#sandbox-ignore-violations) | `None` | Konfigurieren Sie, welche Sandbox-Verstöße ignoriert werden sollen |

3119| `enableWeakerNestedSandbox` | `bool` | `False` | Aktivieren Sie eine schwächere verschachtelte Sandbox für Kompatibilität |

3120 

3121#### Beispielverwendung

3122 

3123```python theme={null}

3124from claude_agent_sdk import query, ClaudeAgentOptions, SandboxSettings

3125 

3126sandbox_settings: SandboxSettings = {

3127 "enabled": True,

3128 "autoAllowBashIfSandboxed": True,

3129 "network": {"allowLocalBinding": True},

3130}

3131 

3132async for message in query(

3133 prompt="Build and test my project",

3134 options=ClaudeAgentOptions(sandbox=sandbox_settings),

3135):

3136 print(message)

3137```

3138 

3139<Warning>

3140 **Unix-Socket-Sicherheit**: Die Option `allowUnixSockets` kann Zugriff auf leistungsstarke Systemdienste gewähren. Zum Beispiel ermöglicht das Zulassen von `/var/run/docker.sock` effektiv vollständigen Host-Systemzugriff über die Docker-API und umgeht die Sandbox-Isolation. Erlauben Sie nur Unix-Sockets, die absolut notwendig sind, und verstehen Sie die Sicherheitsauswirkungen jedes einzelnen.

3141</Warning>

3142 

3143### `SandboxNetworkConfig`

3144 

3145Netzwerkspezifische Konfiguration für den Sandbox-Modus.

3146 

3147```python theme={null}

3148class SandboxNetworkConfig(TypedDict, total=False):

3149 allowedDomains: list[str]

3150 deniedDomains: list[str]

3151 allowManagedDomainsOnly: bool

3152 allowUnixSockets: list[str]

3153 allowAllUnixSockets: bool

3154 allowLocalBinding: bool

3155 allowMachLookup: list[str]

3156 httpProxyPort: int

3157 socksProxyPort: int

3158```

3159 

3160| Eigenschaft | Typ | Standard | Beschreibung |

3161| :------------------------ | :---------- | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

3162| `allowedDomains` | `list[str]` | `[]` | Domänennamen, auf die Sandbox-Prozesse zugreifen können |

3163| `deniedDomains` | `list[str]` | `[]` | Domänennamen, auf die Sandbox-Prozesse nicht zugreifen können. Hat Vorrang vor `allowedDomains` |

3164| `allowManagedDomainsOnly` | `bool` | `False` | Nur verwaltete Einstellungen: Wenn in verwalteten Einstellungen gesetzt, ignorieren Sie `allowedDomains` aus nicht verwalteten Einstellungsquellen. Hat keine Auswirkung, wenn über SDK-Optionen gesetzt |

3165| `allowUnixSockets` | `list[str]` | `[]` | Unix-Socket-Pfade, auf die Prozesse zugreifen können (z. B. Docker-Socket) |

3166| `allowAllUnixSockets` | `bool` | `False` | Erlauben Sie Zugriff auf alle Unix-Sockets |

3167| `allowLocalBinding` | `bool` | `False` | Erlauben Sie Prozessen, sich an lokale Ports zu binden (z. B. für Dev-Server) |

3168| `allowMachLookup` | `list[str]` | `[]` | Nur macOS: XPC/Mach-Servicenamen zum Zulassen. Unterstützt ein nachfolgendes Platzhalterzeichen |

3169| `httpProxyPort` | `int` | `None` | HTTP-Proxy-Port für Netzwerkanfragen |

3170| `socksProxyPort` | `int` | `None` | SOCKS-Proxy-Port für Netzwerkanfragen |

3171 

3172<Note>

3173 Der integrierte Sandbox-Proxy erzwingt die Netzwerk-Allowlist basierend auf dem angeforderten Hostnamen und beendet oder inspiziert keinen TLS-Verkehr, daher können Techniken wie [Domain Fronting](https://en.wikipedia.org/wiki/Domain_fronting) ihn möglicherweise umgehen. Siehe [Sandboxing-Sicherheitsbeschränkungen](/de/sandboxing#security-limitations) für Details und [Sichere Bereitstellung](/de/agent-sdk/secure-deployment#traffic-forwarding) für die Konfiguration eines TLS-terminierenden Proxys.

3174</Note>

3175 

3176### `SandboxIgnoreViolations`

3177 

3178Konfiguration zum Ignorieren bestimmter Sandbox-Verstöße.

3179 

3180```python theme={null}

3181class SandboxIgnoreViolations(TypedDict, total=False):

3182 file: list[str]

3183 network: list[str]

3184```

3185 

3186| Eigenschaft | Typ | Standard | Beschreibung |

3187| :---------- | :---------- | :------- | :--------------------------------------------------------- |

3188| `file` | `list[str]` | `[]` | Dateipfad-Muster, für die Verstöße ignoriert werden sollen |

3189| `network` | `list[str]` | `[]` | Netzwerkmuster, für die Verstöße ignoriert werden sollen |

3190 

3191### Berechtigungen-Fallback für Unsandboxed-Befehle

3192 

3193Wenn `allowUnsandboxedCommands` aktiviert ist, kann das Modell anfordern, Befehle außerhalb der Sandbox auszuführen, indem es `dangerouslyDisableSandbox: True` in der Tool-Eingabe setzt. Diese Anfragen fallen auf das bestehende Berechtigungssystem zurück, was bedeutet, dass Ihr `can_use_tool`-Handler aufgerufen wird, sodass Sie benutzerdefinierte Autorisierungslogik implementieren können.

3194 

3195<Note>

3196 **`excludedCommands` vs `allowUnsandboxedCommands`:**

3197 

3198 * `excludedCommands`: Eine statische Liste von Befehlen, die immer automatisch die Sandbox umgehen (z. B. `["docker"]`). Das Modell hat keine Kontrolle darüber.

3199 * `allowUnsandboxedCommands`: Ermöglicht dem Modell, zur Laufzeit zu entscheiden, ob es die Ausführung außerhalb der Sandbox anfordert, indem es `dangerouslyDisableSandbox: True` in der Tool-Eingabe setzt.

3200</Note>

3201 

3202```python theme={null}

3203from claude_agent_sdk import (

3204 query,

3205 ClaudeAgentOptions,

3206 HookMatcher,

3207 PermissionResultAllow,

3208 PermissionResultDeny,

3209 ToolPermissionContext,

3210)

3211 

3212 

3213async def can_use_tool(

3214 tool: str, input: dict, context: ToolPermissionContext

3215) -> PermissionResultAllow | PermissionResultDeny:

3216 # Check if the model is requesting to bypass the sandbox

3217 if tool == "Bash" and input.get("dangerouslyDisableSandbox"):

3218 # The model is requesting to run this command outside the sandbox

3219 print(f"Unsandboxed command requested: {input.get('command')}")

3220 

3221 if is_command_authorized(input.get("command")):

3222 return PermissionResultAllow()

3223 return PermissionResultDeny(

3224 message="Command not authorized for unsandboxed execution"

3225 )

3226 return PermissionResultAllow()

3227 

3228 

3229# Required: dummy hook keeps the stream open for can_use_tool

3230async def dummy_hook(input_data, tool_use_id, context):

3231 return {"continue_": True}

3232 

3233 

3234async def prompt_stream():

3235 yield {

3236 "type": "user",

3237 "message": {"role": "user", "content": "Deploy my application"},

3238 }

3239 

3240 

3241async def main():

3242 async for message in query(

3243 prompt=prompt_stream(),

3244 options=ClaudeAgentOptions(

3245 sandbox={

3246 "enabled": True,

3247 "allowUnsandboxedCommands": True, # Model can request unsandboxed execution

3248 },

3249 permission_mode="default",

3250 can_use_tool=can_use_tool,

3251 hooks={"PreToolUse": [HookMatcher(matcher=None, hooks=[dummy_hook])]},

3252 ),

3253 ):

3254 print(message)

3255```

3256 

3257Dieses Muster ermöglicht es Ihnen:

3258 

3259* **Modell-Anfragen prüfen**: Protokollieren Sie, wenn das Modell die Ausführung außerhalb der Sandbox anfordert

3260* **Allowlists implementieren**: Erlauben Sie nur bestimmten Befehlen, außerhalb der Sandbox ausgeführt zu werden

3261* **Genehmigungsworkflows hinzufügen**: Erfordern Sie explizite Autorisierung für privilegierte Operationen

3262 

3263<Warning>

3264 Befehle, die mit `dangerouslyDisableSandbox: True` ausgeführt werden, haben vollständigen Systemzugriff. Stellen Sie sicher, dass Ihr `can_use_tool`-Handler diese Anfragen sorgfältig validiert.

3265 

3266 Wenn `permission_mode` auf `bypassPermissions` gesetzt ist und `allow_unsandboxed_commands` aktiviert ist, kann das Modell autonom Befehle außerhalb der Sandbox ausführen, ohne dass Genehmigungsaufforderungen angezeigt werden. Diese Kombination ermöglicht dem Modell effektiv, die Sandbox-Isolation stillschweigend zu verlassen.

3267</Warning>

3268 

3269## Siehe auch

3270 

3271* [SDK-Übersicht](/de/agent-sdk/overview) - Allgemeine SDK-Konzepte

3272* [TypeScript SDK-Referenz](/de/agent-sdk/typescript) - TypeScript SDK-Dokumentation

3273* [CLI-Referenz](/de/cli-reference) - Befehlszeilenschnittstelle

3274* [Häufige Workflows](/de/common-workflows) - Schritt-für-Schritt-Anleitungen

agent-sdk/quickstart.md +333 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Schnellstart

6 

7> Erste Schritte mit dem Python- oder TypeScript-Agent-SDK zum Erstellen von KI-Agenten, die autonom funktionieren

8 

9Verwenden Sie das Agent SDK, um einen KI-Agenten zu erstellen, der Ihren Code liest, Fehler findet und behebt – alles ohne manuelle Eingriffe.

10 

11**Das werden Sie tun:**

12 

131. Ein Projekt mit dem Agent SDK einrichten

142. Eine Datei mit fehlerhaftem Code erstellen

153. Einen Agenten ausführen, der Fehler automatisch findet und behebt

16 

17## Voraussetzungen

18 

19* **Node.js 18+** oder **Python 3.10+**

20* Ein **Anthropic-Konto** ([hier registrieren](https://platform.claude.com/))

21 

22## Einrichtung

23 

24<Steps>

25 <Step title="Erstellen Sie einen Projektordner">

26 Erstellen Sie ein neues Verzeichnis für diesen Schnellstart:

27 

28 ```bash theme={null}

29 mkdir my-agent && cd my-agent

30 ```

31 

32 Für Ihre eigenen Projekte können Sie das SDK aus jedem Ordner ausführen; es hat standardmäßig Zugriff auf Dateien in diesem Verzeichnis und seinen Unterverzeichnissen.

33 </Step>

34 

35 <Step title="Installieren Sie das SDK">

36 Installieren Sie das Agent SDK-Paket für Ihre Sprache:

37 

38 <Tabs>

39 <Tab title="TypeScript">

40 ```bash theme={null}

41 npm install @anthropic-ai/claude-agent-sdk

42 ```

43 </Tab>

44 

45 <Tab title="Python (uv)">

46 [uv Python-Paketmanager](https://docs.astral.sh/uv/) ist ein schneller Python-Paketmanager, der virtuelle Umgebungen automatisch verwaltet:

47 

48 ```bash theme={null}

49 uv init && uv add claude-agent-sdk

50 ```

51 </Tab>

52 

53 <Tab title="Python (pip)">

54 Erstellen Sie zunächst eine virtuelle Umgebung und installieren Sie dann:

55 

56 ```bash theme={null}

57 python3 -m venv .venv && source .venv/bin/activate

58 pip3 install claude-agent-sdk

59 ```

60 </Tab>

61 </Tabs>

62 

63 <Note>

64 Das TypeScript SDK bündelt eine native Claude Code-Binärdatei für Ihre Plattform als optionale Abhängigkeit, sodass Sie Claude Code nicht separat installieren müssen.

65 </Note>

66 </Step>

67 

68 <Step title="Legen Sie Ihren API-Schlüssel fest">

69 Rufen Sie einen API-Schlüssel von der [Claude-Konsole](https://platform.claude.com/) ab und erstellen Sie dann eine `.env`-Datei in Ihrem Projektverzeichnis:

70 

71 ```bash theme={null}

72 ANTHROPIC_API_KEY=your-api-key

73 ```

74 

75 Das SDK unterstützt auch Authentifizierung über Drittanbieter-API-Anbieter:

76 

77 * **Amazon Bedrock**: Setzen Sie die Umgebungsvariable `CLAUDE_CODE_USE_BEDROCK=1` und konfigurieren Sie AWS-Anmeldedaten

78 * **Google Vertex AI**: Setzen Sie die Umgebungsvariable `CLAUDE_CODE_USE_VERTEX=1` und konfigurieren Sie Google Cloud-Anmeldedaten

79 * **Microsoft Azure**: Setzen Sie die Umgebungsvariable `CLAUDE_CODE_USE_FOUNDRY=1` und konfigurieren Sie Azure-Anmeldedaten

80 

81 Weitere Informationen finden Sie in den Einrichtungsleitfäden für [Bedrock](/de/amazon-bedrock), [Vertex AI](/de/google-vertex-ai) oder [Azure AI Foundry](/de/microsoft-foundry).

82 

83 <Note>

84 Sofern nicht zuvor genehmigt, erlaubt Anthropic Drittentwicklern nicht, claude.ai-Anmeldungen oder Ratenlimits für ihre Produkte anzubieten, einschließlich Agenten, die auf dem Claude Agent SDK basieren. Verwenden Sie stattdessen die in diesem Dokument beschriebenen API-Schlüssel-Authentifizierungsmethoden.

85 </Note>

86 </Step>

87</Steps>

88 

89## Erstellen Sie eine fehlerhafte Datei

90 

91Dieser Schnellstart führt Sie durch die Erstellung eines Agenten, der Fehler im Code finden und beheben kann. Zunächst benötigen Sie eine Datei mit einigen absichtlichen Fehlern, die der Agent beheben kann. Erstellen Sie `utils.py` im Verzeichnis `my-agent` und fügen Sie den folgenden Code ein:

92 

93```python theme={null}

94def calculate_average(numbers):

95 total = 0

96 for num in numbers:

97 total += num

98 return total / len(numbers)

99 

100 

101def get_user_name(user):

102 return user["name"].upper()

103```

104 

105Dieser Code hat zwei Fehler:

106 

1071. `calculate_average([])` stürzt mit Division durch Null ab

1082. `get_user_name(None)` stürzt mit einem TypeError ab

109 

110## Erstellen Sie einen Agenten, der Fehler findet und behebt

111 

112Erstellen Sie `agent.py`, wenn Sie das Python SDK verwenden, oder `agent.ts` für TypeScript:

113 

114<CodeGroup>

115 ```python Python theme={null}

116 import asyncio

117 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage

118 

119 

120 async def main():

121 # Agentic loop: streams messages as Claude works

122 async for message in query(

123 prompt="Review utils.py for bugs that would cause crashes. Fix any issues you find.",

124 options=ClaudeAgentOptions(

125 allowed_tools=["Read", "Edit", "Glob"], # Tools Claude can use

126 permission_mode="acceptEdits", # Auto-approve file edits

127 ),

128 ):

129 # Print human-readable output

130 if isinstance(message, AssistantMessage):

131 for block in message.content:

132 if hasattr(block, "text"):

133 print(block.text) # Claude's reasoning

134 elif hasattr(block, "name"):

135 print(f"Tool: {block.name}") # Tool being called

136 elif isinstance(message, ResultMessage):

137 print(f"Done: {message.subtype}") # Final result

138 

139 

140 asyncio.run(main())

141 ```

142 

143 ```typescript TypeScript theme={null}

144 import { query } from "@anthropic-ai/claude-agent-sdk";

145 

146 // Agentic loop: streams messages as Claude works

147 for await (const message of query({

148 prompt: "Review utils.py for bugs that would cause crashes. Fix any issues you find.",

149 options: {

150 allowedTools: ["Read", "Edit", "Glob"], // Tools Claude can use

151 permissionMode: "acceptEdits" // Auto-approve file edits

152 }

153 })) {

154 // Print human-readable output

155 if (message.type === "assistant" && message.message?.content) {

156 for (const block of message.message.content) {

157 if ("text" in block) {

158 console.log(block.text); // Claude's reasoning

159 } else if ("name" in block) {

160 console.log(`Tool: ${block.name}`); // Tool being called

161 }

162 }

163 } else if (message.type === "result") {

164 console.log(`Done: ${message.subtype}`); // Final result

165 }

166 }

167 ```

168</CodeGroup>

169 

170Dieser Code hat drei Hauptteile:

171 

1721. **`query`**: der Haupteinstiegspunkt, der die agentic loop erstellt. Er gibt einen asynchronen Iterator zurück, daher verwenden Sie `async for`, um Nachrichten zu streamen, während Claude arbeitet. Siehe die vollständige API in der [Python](/de/agent-sdk/python#query) oder [TypeScript](/de/agent-sdk/typescript#query) SDK-Referenz.

173 

1742. **`prompt`**: was Sie Claude tun möchten. Claude ermittelt basierend auf der Aufgabe, welche Tools verwendet werden sollen.

175 

1763. **`options`**: Konfiguration für den Agenten. Dieses Beispiel verwendet `allowedTools`, um `Read`, `Edit` und `Glob` vorab zu genehmigen, und `permissionMode: "acceptEdits"`, um Dateiänderungen automatisch zu genehmigen. Weitere Optionen sind `systemPrompt`, `mcpServers` und mehr. Siehe alle Optionen für [Python](/de/agent-sdk/python#claude-agent-options) oder [TypeScript](/de/agent-sdk/typescript#options).

177 

178Die `async for`-Schleife läuft weiter, während Claude denkt, Tools aufruft, Ergebnisse beobachtet und entscheidet, was als nächstes zu tun ist. Jede Iteration ergibt eine Nachricht: Claudes Überlegung, ein Tool-Aufruf, ein Tool-Ergebnis oder das endgültige Ergebnis. Das SDK verwaltet die Orchestrierung (Tool-Ausführung, Kontextverwaltung, Wiederholungen), sodass Sie einfach den Stream verbrauchen. Die Schleife endet, wenn Claude die Aufgabe abschließt oder auf einen Fehler stößt.

179 

180Die Nachrichtenbehandlung in der Schleife filtert nach benutzerfreundlicher Ausgabe. Ohne Filterung würden Sie rohe Nachrichtenobjekte sehen, einschließlich Systeminitialisierung und internem Status, was zum Debuggen nützlich ist, aber sonst störend wirkt.

181 

182<Note>

183 Dieses Beispiel verwendet Streaming, um den Fortschritt in Echtzeit anzuzeigen. Wenn Sie keine Live-Ausgabe benötigen (z. B. für Hintergrundaufträge oder CI-Pipelines), können Sie alle Nachrichten auf einmal sammeln. Weitere Informationen finden Sie unter [Streaming vs. Single-Turn-Modus](/de/agent-sdk/streaming-vs-single-mode).

184</Note>

185 

186### Führen Sie Ihren Agenten aus

187 

188Ihr Agent ist bereit. Führen Sie ihn mit dem folgenden Befehl aus:

189 

190<Tabs>

191 <Tab title="Python">

192 ```bash theme={null}

193 python3 agent.py

194 ```

195 </Tab>

196 

197 <Tab title="TypeScript">

198 ```bash theme={null}

199 npx tsx agent.ts

200 ```

201 </Tab>

202</Tabs>

203 

204Nach der Ausführung überprüfen Sie `utils.py`. Sie sehen defensiven Code, der leere Listen und Null-Benutzer verarbeitet. Ihr Agent hat autonom:

205 

2061. **Gelesen** `utils.py`, um den Code zu verstehen

2072. **Analysiert** die Logik und identifiziert Grenzfälle, die zum Absturz führen würden

2083. **Bearbeitet** die Datei, um ordnungsgemäße Fehlerbehandlung hinzuzufügen

209 

210Das macht das Agent SDK anders: Claude führt Tools direkt aus, anstatt Sie zu bitten, sie zu implementieren.

211 

212<Note>

213 Wenn Sie „API-Schlüssel nicht gefunden" sehen, stellen Sie sicher, dass Sie die Umgebungsvariable `ANTHROPIC_API_KEY` in Ihrer `.env`-Datei oder Shell-Umgebung gesetzt haben. Weitere Hilfe finden Sie im [vollständigen Fehlerbehebungsleitfaden](/de/troubleshooting).

214</Note>

215 

216### Versuchen Sie andere Prompts

217 

218Jetzt, da Ihr Agent eingerichtet ist, versuchen Sie einige verschiedene Prompts:

219 

220* `"Add docstrings to all functions in utils.py"`

221* `"Add type hints to all functions in utils.py"`

222* `"Create a README.md documenting the functions in utils.py"`

223 

224### Passen Sie Ihren Agenten an

225 

226Sie können das Verhalten Ihres Agenten ändern, indem Sie die Optionen ändern. Hier sind einige Beispiele:

227 

228**Fügen Sie Web-Suchfunktion hinzu:**

229 

230<CodeGroup>

231 ```python Python theme={null}

232 options = ClaudeAgentOptions(

233 allowed_tools=["Read", "Edit", "Glob", "WebSearch"], permission_mode="acceptEdits"

234 )

235 ```

236 

237 ```typescript TypeScript hidelines={1,-1} theme={null}

238 const _ = {

239 options: {

240 allowedTools: ["Read", "Edit", "Glob", "WebSearch"],

241 permissionMode: "acceptEdits"

242 }

243 };

244 ```

245</CodeGroup>

246 

247**Geben Sie Claude einen benutzerdefinierten System-Prompt:**

248 

249<CodeGroup>

250 ```python Python theme={null}

251 options = ClaudeAgentOptions(

252 allowed_tools=["Read", "Edit", "Glob"],

253 permission_mode="acceptEdits",

254 system_prompt="You are a senior Python developer. Always follow PEP 8 style guidelines.",

255 )

256 ```

257 

258 ```typescript TypeScript hidelines={1,-1} theme={null}

259 const _ = {

260 options: {

261 allowedTools: ["Read", "Edit", "Glob"],

262 permissionMode: "acceptEdits",

263 systemPrompt: "You are a senior Python developer. Always follow PEP 8 style guidelines."

264 }

265 };

266 ```

267</CodeGroup>

268 

269**Führen Sie Befehle im Terminal aus:**

270 

271<CodeGroup>

272 ```python Python theme={null}

273 options = ClaudeAgentOptions(

274 allowed_tools=["Read", "Edit", "Glob", "Bash"], permission_mode="acceptEdits"

275 )

276 ```

277 

278 ```typescript TypeScript hidelines={1,-1} theme={null}

279 const _ = {

280 options: {

281 allowedTools: ["Read", "Edit", "Glob", "Bash"],

282 permissionMode: "acceptEdits"

283 }

284 };

285 ```

286</CodeGroup>

287 

288Mit aktiviertem `Bash` versuchen Sie: `"Write unit tests for utils.py, run them, and fix any failures"`

289 

290## Wichtige Konzepte

291 

292**Tools** steuern, was Ihr Agent tun kann:

293 

294| Tools | Was der Agent tun kann |

295| -------------------------------------- | ---------------------------- |

296| `Read`, `Glob`, `Grep` | Schreibgeschützte Analyse |

297| `Read`, `Edit`, `Glob` | Code analysieren und ändern |

298| `Read`, `Edit`, `Bash`, `Glob`, `Grep` | Vollständige Automatisierung |

299 

300**Genehmigungsmodi** steuern, wie viel menschliche Aufsicht Sie möchten:

301 

302| Modus | Verhalten | Anwendungsfall |

303| ----------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |

304| `acceptEdits` | Genehmigt Dateibearbeitungen und häufige Dateisystembefehle automatisch, fragt nach anderen Aktionen | Vertrauenswürdige Entwicklungs-Workflows |

305| `dontAsk` | Lehnt alles ab, das nicht in `allowedTools` enthalten ist | Gesperrte Headless-Agenten |

306| `auto` (nur TypeScript) | Ein Modell-Klassifizierer genehmigt oder lehnt jeden Tool-Aufruf ab | Autonome Agenten mit Sicherheitsvorkehrungen |

307| `bypassPermissions` | Führt jedes Tool ohne Eingabeaufforderungen aus | Sandboxed CI, vollständig vertrauenswürdige Umgebungen |

308| `default` | Erfordert einen `canUseTool`-Callback zur Genehmigungsbehandlung | Benutzerdefinierte Genehmigungsabläufe |

309 

310Das obige Beispiel verwendet den `acceptEdits`-Modus, der Dateivorgänge automatisch genehmigt, damit der Agent ohne interaktive Eingabeaufforderungen ausgeführt werden kann. Wenn Sie Benutzer zur Genehmigung auffordern möchten, verwenden Sie den `default`-Modus und stellen Sie einen [`canUseTool`-Callback](/de/agent-sdk/user-input) bereit, der Benutzereingaben sammelt. Für mehr Kontrolle siehe [Berechtigungen](/de/agent-sdk/permissions).

311 

312## Fehlerbehebung

313 

314### API-Fehler `thinking.type.enabled` wird für dieses Modell nicht unterstützt

315 

316Claude Opus 4.7 ersetzt `thinking.type.enabled` durch `thinking.type.adaptive`. Ältere Agent SDK-Versionen schlagen mit dem folgenden API-Fehler fehl, wenn Sie `claude-opus-4-7` auswählen:

317 

318```text theme={null}

319API Error: 400 {"type":"invalid_request_error","message":"\"thinking.type.enabled\" is not supported for this model. Use \"thinking.type.adaptive\" and \"output_config.effort\" to control thinking behavior."}

320```

321 

322Aktualisieren Sie auf Agent SDK v0.2.111 oder später, um Opus 4.7 zu verwenden.

323 

324## Nächste Schritte

325 

326Jetzt, da Sie Ihren ersten Agenten erstellt haben, erfahren Sie, wie Sie seine Funktionen erweitern und ihn an Ihren Anwendungsfall anpassen:

327 

328* **[Berechtigungen](/de/agent-sdk/permissions)**: Steuern Sie, was Ihr Agent tun kann und wann er Genehmigung benötigt

329* **[Hooks](/de/agent-sdk/hooks)**: Führen Sie benutzerdefinierten Code vor oder nach Tool-Aufrufen aus

330* **[Sitzungen](/de/agent-sdk/sessions)**: Erstellen Sie Multi-Turn-Agenten, die den Kontext beibehalten

331* **[MCP-Server](/de/agent-sdk/mcp)**: Verbinden Sie sich mit Datenbanken, Browsern, APIs und anderen externen Systemen

332* **[Hosting](/de/agent-sdk/hosting)**: Stellen Sie Agenten in Docker, Cloud und CI/CD bereit

333* **[Beispiel-Agenten](https://github.com/anthropics/claude-agent-sdk-demos)**: Siehe vollständige Beispiele: E-Mail-Assistent, Forschungsagent und mehr

agent-sdk/slash-commands.md +444 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Slash Commands im SDK

6 

7> Erfahren Sie, wie Sie Slash Commands verwenden, um Claude Code-Sitzungen über das SDK zu steuern

8 

9Slash Commands bieten eine Möglichkeit, Claude Code-Sitzungen mit speziellen Befehlen zu steuern, die mit `/` beginnen. Diese Befehle können über das SDK gesendet werden, um Aktionen wie das Komprimieren von Kontext, das Auflisten der Kontextnutzung oder das Aufrufen benutzerdefinierter Befehle auszuführen. Nur Befehle, die ohne ein interaktives Terminal funktionieren, können über das SDK versendet werden; die `system/init`-Nachricht listet die in Ihrer Sitzung verfügbaren auf.

10 

11## Verfügbare Slash Commands entdecken

12 

13Das Claude Agent SDK stellt Informationen über verfügbare Slash Commands in der Systeminitalisierungsnachricht bereit. Greifen Sie auf diese Informationen zu, wenn Ihre Sitzung startet:

14 

15<CodeGroup>

16 ```typescript TypeScript theme={null}

17 import { query } from "@anthropic-ai/claude-agent-sdk";

18 

19 for await (const message of query({

20 prompt: "Hello Claude",

21 options: { maxTurns: 1 }

22 })) {

23 if (message.type === "system" && message.subtype === "init") {

24 console.log("Available slash commands:", message.slash_commands);

25 // Example output: ["/compact", "/context", "/usage"]

26 }

27 }

28 ```

29 

30 ```python Python theme={null}

31 import asyncio

32 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage

33 

34 

35 async def main():

36 async for message in query(prompt="Hello Claude", options=ClaudeAgentOptions(max_turns=1)):

37 if isinstance(message, SystemMessage) and message.subtype == "init":

38 print("Available slash commands:", message.data["slash_commands"])

39 # Example output: ["/compact", "/context", "/usage"]

40 

41 

42 asyncio.run(main())

43 ```

44</CodeGroup>

45 

46## Slash Commands senden

47 

48Senden Sie Slash Commands, indem Sie sie in Ihre Eingabeaufforderung einbeziehen, genau wie normalen Text:

49 

50<CodeGroup>

51 ```typescript TypeScript theme={null}

52 import { query } from "@anthropic-ai/claude-agent-sdk";

53 

54 // Send a slash command

55 for await (const message of query({

56 prompt: "/compact",

57 options: { maxTurns: 1 }

58 })) {

59 if (message.type === "result") {

60 console.log("Command executed:", message.result);

61 }

62 }

63 ```

64 

65 ```python Python theme={null}

66 import asyncio

67 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

68 

69 

70 async def main():

71 # Send a slash command

72 async for message in query(prompt="/compact", options=ClaudeAgentOptions(max_turns=1)):

73 if isinstance(message, ResultMessage):

74 print("Command executed:", message.result)

75 

76 

77 asyncio.run(main())

78 ```

79</CodeGroup>

80 

81## Häufige Slash Commands

82 

83### `/compact` - Konversationsverlauf komprimieren

84 

85Der `/compact`-Befehl reduziert die Größe Ihres Konversationsverlaufs, indem er ältere Nachrichten zusammenfasst und dabei wichtigen Kontext bewahrt:

86 

87<CodeGroup>

88 ```typescript TypeScript theme={null}

89 import { query } from "@anthropic-ai/claude-agent-sdk";

90 

91 for await (const message of query({

92 prompt: "/compact",

93 options: { maxTurns: 1 }

94 })) {

95 if (message.type === "system" && message.subtype === "compact_boundary") {

96 console.log("Compaction completed");

97 console.log("Pre-compaction tokens:", message.compact_metadata.pre_tokens);

98 console.log("Trigger:", message.compact_metadata.trigger);

99 }

100 }

101 ```

102 

103 ```python Python theme={null}

104 import asyncio

105 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage

106 

107 

108 async def main():

109 async for message in query(prompt="/compact", options=ClaudeAgentOptions(max_turns=1)):

110 if isinstance(message, SystemMessage) and message.subtype == "compact_boundary":

111 print("Compaction completed")

112 print("Pre-compaction tokens:", message.data["compact_metadata"]["pre_tokens"])

113 print("Trigger:", message.data["compact_metadata"]["trigger"])

114 

115 

116 asyncio.run(main())

117 ```

118</CodeGroup>

119 

120### Konversation löschen

121 

122Der interaktive `/clear`-Befehl ist im SDK nicht verfügbar. Jeder `query()`-Aufruf startet bereits eine neue Konversation, daher müssen Sie zum Löschen von Kontext den aktuellen `query()`-Aufruf beenden und einen neuen starten. Die vorherige Konversation bleibt auf der Festplatte gespeichert und kann durch Übergabe ihrer Sitzungs-ID an die [`resume`-Option](/de/agent-sdk/sessions#resume-by-id) wieder aufgerufen werden.

123 

124## Benutzerdefinierte Slash Commands erstellen

125 

126Zusätzlich zur Verwendung integrierter Slash Commands können Sie Ihre eigenen benutzerdefinierten Befehle erstellen, die über das SDK verfügbar sind. Benutzerdefinierte Befehle werden als Markdown-Dateien in bestimmten Verzeichnissen definiert, ähnlich wie Subagenten konfiguriert werden.

127 

128<Note>

129 Das `.claude/commands/`-Verzeichnis ist das Legacy-Format. Das empfohlene Format ist `.claude/skills/<name>/SKILL.md`, das die gleiche Slash-Command-Aufrufe (`/name`) plus autonome Aufrufe durch Claude unterstützt. Siehe [Skills](/de/agent-sdk/skills) für das aktuelle Format. Die CLI unterstützt weiterhin beide Formate, und die folgenden Beispiele bleiben für `.claude/commands/` genau.

130</Note>

131 

132### Dateispeicherorte

133 

134Benutzerdefinierte Slash Commands werden in bestimmten Verzeichnissen basierend auf ihrem Umfang gespeichert:

135 

136* **Projektbefehle**: `.claude/commands/` - Nur im aktuellen Projekt verfügbar (Legacy; bevorzugen Sie `.claude/skills/`)

137* **Persönliche Befehle**: `~/.claude/commands/` - Verfügbar in allen Ihren Projekten (Legacy; bevorzugen Sie `~/.claude/skills/`)

138 

139### Dateiformat

140 

141Jeder benutzerdefinierte Befehl ist eine Markdown-Datei, bei der:

142 

143* Der Dateiname (ohne `.md`-Erweiterung) zum Befehlsnamen wird

144* Der Dateiinhalt definiert, was der Befehl tut

145* Optionale YAML-Frontmatter bietet Konfiguration

146 

147#### Grundlegendes Beispiel

148 

149Erstellen Sie `.claude/commands/refactor.md`:

150 

151```markdown theme={null}

152Refactor the selected code to improve readability and maintainability.

153Focus on clean code principles and best practices.

154```

155 

156Dies erstellt den `/refactor`-Befehl, den Sie über das SDK verwenden können.

157 

158#### Mit Frontmatter

159 

160Erstellen Sie `.claude/commands/security-check.md`:

161 

162```markdown theme={null}

163---

164allowed-tools: Read, Grep, Glob

165description: Run security vulnerability scan

166model: claude-opus-4-7

167---

168 

169Analyze the codebase for security vulnerabilities including:

170- SQL injection risks

171- XSS vulnerabilities

172- Exposed credentials

173- Insecure configurations

174```

175 

176### Benutzerdefinierte Commands im SDK verwenden

177 

178Sobald sie im Dateisystem definiert sind, sind benutzerdefinierte Befehle automatisch über das SDK verfügbar:

179 

180<CodeGroup>

181 ```typescript TypeScript theme={null}

182 import { query } from "@anthropic-ai/claude-agent-sdk";

183 

184 // Use a custom command

185 for await (const message of query({

186 prompt: "/refactor src/auth/login.ts",

187 options: { maxTurns: 3 }

188 })) {

189 if (message.type === "assistant") {

190 console.log("Refactoring suggestions:", message.message);

191 }

192 }

193 

194 // Custom commands appear in the slash_commands list

195 for await (const message of query({

196 prompt: "Hello",

197 options: { maxTurns: 1 }

198 })) {

199 if (message.type === "system" && message.subtype === "init") {

200 // Will include both built-in and custom commands

201 console.log("Available commands:", message.slash_commands);

202 // Example: ["/compact", "/context", "/usage", "/refactor", "/security-check"]

203 }

204 }

205 ```

206 

207 ```python Python theme={null}

208 import asyncio

209 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, SystemMessage

210 

211 

212 async def main():

213 # Use a custom command

214 async for message in query(

215 prompt="/refactor src/auth/login.py", options=ClaudeAgentOptions(max_turns=3)

216 ):

217 if isinstance(message, AssistantMessage):

218 for block in message.content:

219 if hasattr(block, "text"):

220 print("Refactoring suggestions:", block.text)

221 

222 # Custom commands appear in the slash_commands list

223 async for message in query(prompt="Hello", options=ClaudeAgentOptions(max_turns=1)):

224 if isinstance(message, SystemMessage) and message.subtype == "init":

225 # Will include both built-in and custom commands

226 print("Available commands:", message.data["slash_commands"])

227 # Example: ["/compact", "/context", "/usage", "/refactor", "/security-check"]

228 

229 

230 asyncio.run(main())

231 ```

232</CodeGroup>

233 

234### Erweiterte Funktionen

235 

236#### Argumente und Platzhalter

237 

238Benutzerdefinierte Befehle unterstützen dynamische Argumente mit Platzhaltern:

239 

240Erstellen Sie `.claude/commands/fix-issue.md`:

241 

242```markdown theme={null}

243---

244argument-hint: [issue-number] [priority]

245description: Fix a GitHub issue

246---

247 

248Fix issue #$1 with priority $2.

249Check the issue description and implement the necessary changes.

250```

251 

252Verwendung im SDK:

253 

254<CodeGroup>

255 ```typescript TypeScript theme={null}

256 import { query } from "@anthropic-ai/claude-agent-sdk";

257 

258 // Pass arguments to custom command

259 for await (const message of query({

260 prompt: "/fix-issue 123 high",

261 options: { maxTurns: 5 }

262 })) {

263 // Command will process with $1="123" and $2="high"

264 if (message.type === "result") {

265 console.log("Issue fixed:", message.result);

266 }

267 }

268 ```

269 

270 ```python Python theme={null}

271 import asyncio

272 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

273 

274 

275 async def main():

276 # Pass arguments to custom command

277 async for message in query(prompt="/fix-issue 123 high", options=ClaudeAgentOptions(max_turns=5)):

278 # Command will process with $1="123" and $2="high"

279 if isinstance(message, ResultMessage):

280 print("Issue fixed:", message.result)

281 

282 

283 asyncio.run(main())

284 ```

285</CodeGroup>

286 

287#### Bash-Befehlsausführung

288 

289Benutzerdefinierte Befehle können Bash-Befehle ausführen und deren Ausgabe einbeziehen:

290 

291Erstellen Sie `.claude/commands/git-commit.md`:

292 

293```markdown theme={null}

294---

295allowed-tools: Bash(git add *), Bash(git status *), Bash(git commit *)

296description: Create a git commit

297---

298 

299## Context

300 

301- Current status: !`git status`

302- Current diff: !`git diff HEAD`

303 

304## Task

305 

306Create a git commit with appropriate message based on the changes.

307```

308 

309#### Dateireferenzen

310 

311Beziehen Sie Dateiinhalte mit dem `@`-Präfix ein:

312 

313Erstellen Sie `.claude/commands/review-config.md`:

314 

315```markdown theme={null}

316---

317description: Review configuration files

318---

319 

320Review the following configuration files for issues:

321- Package config: @package.json

322- TypeScript config: @tsconfig.json

323- Environment config: @.env

324 

325Check for security issues, outdated dependencies, and misconfigurations.

326```

327 

328### Organisation mit Namensräumen

329 

330Organisieren Sie Befehle in Unterverzeichnissen für bessere Struktur:

331 

332```bash theme={null}

333.claude/commands/

334├── frontend/

335│ ├── component.md # Creates /component (project:frontend)

336│ └── style-check.md # Creates /style-check (project:frontend)

337├── backend/

338│ ├── api-test.md # Creates /api-test (project:backend)

339│ └── db-migrate.md # Creates /db-migrate (project:backend)

340└── review.md # Creates /review (project)

341```

342 

343Das Unterverzeichnis wird in der Befehlsbeschreibung angezeigt, beeinflusst aber nicht den Befehlsnamen selbst.

344 

345### Praktische Beispiele

346 

347#### Code Review-Befehl

348 

349Erstellen Sie `.claude/commands/code-review.md`:

350 

351```markdown theme={null}

352---

353allowed-tools: Read, Grep, Glob, Bash(git diff *)

354description: Comprehensive code review

355---

356 

357## Changed Files

358!`git diff --name-only HEAD~1`

359 

360## Detailed Changes

361!`git diff HEAD~1`

362 

363## Review Checklist

364 

365Review the above changes for:

3661. Code quality and readability

3672. Security vulnerabilities

3683. Performance implications

3694. Test coverage

3705. Documentation completeness

371 

372Provide specific, actionable feedback organized by priority.

373```

374 

375#### Test Runner-Befehl

376 

377Erstellen Sie `.claude/commands/test.md`:

378 

379```markdown theme={null}

380---

381allowed-tools: Bash, Read, Edit

382argument-hint: [test-pattern]

383description: Run tests with optional pattern

384---

385 

386Run tests matching pattern: $ARGUMENTS

387 

3881. Detect the test framework (Jest, pytest, etc.)

3892. Run tests with the provided pattern

3903. If tests fail, analyze and fix them

3914. Re-run to verify fixes

392```

393 

394Verwenden Sie diese Befehle über das SDK:

395 

396<CodeGroup>

397 ```typescript TypeScript theme={null}

398 import { query } from "@anthropic-ai/claude-agent-sdk";

399 

400 // Run code review

401 for await (const message of query({

402 prompt: "/code-review",

403 options: { maxTurns: 3 }

404 })) {

405 // Process review feedback

406 }

407 

408 // Run specific tests

409 for await (const message of query({

410 prompt: "/test auth",

411 options: { maxTurns: 5 }

412 })) {

413 // Handle test results

414 }

415 ```

416 

417 ```python Python theme={null}

418 import asyncio

419 from claude_agent_sdk import query, ClaudeAgentOptions

420 

421 

422 async def main():

423 # Run code review

424 async for message in query(prompt="/code-review", options=ClaudeAgentOptions(max_turns=3)):

425 # Process review feedback

426 pass

427 

428 # Run specific tests

429 async for message in query(prompt="/test auth", options=ClaudeAgentOptions(max_turns=5)):

430 # Handle test results

431 pass

432 

433 

434 asyncio.run(main())

435 ```

436</CodeGroup>

437 

438## Siehe auch

439 

440* [Slash Commands](/de/skills) - Vollständige Dokumentation zu Slash Commands

441* [Subagenten im SDK](/de/agent-sdk/subagents) - Ähnliche dateisystembasierte Konfiguration für Subagenten

442* [TypeScript SDK-Referenz](/de/agent-sdk/typescript) - Vollständige API-Dokumentation

443* [SDK-Übersicht](/de/agent-sdk/overview) - Allgemeine SDK-Konzepte

444* [CLI-Referenz](/de/cli-reference) - Befehlszeilenschnittstelle

agent-sdk/typescript.md +2975 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Agent SDK Referenz - TypeScript

6 

7> Vollständige API-Referenz für das TypeScript Agent SDK, einschließlich aller Funktionen, Typen und Schnittstellen.

8 

9<script src="/components/typescript-sdk-type-links.js" defer />

10 

11<Note>

12 **Probieren Sie die neue V2-Schnittstelle (Vorschau):** Eine vereinfachte Schnittstelle mit `send()`- und `stream()`-Mustern ist jetzt verfügbar und macht Multi-Turn-Konversationen einfacher. [Erfahren Sie mehr über die TypeScript V2-Vorschau](/de/agent-sdk/typescript-v2-preview)

13</Note>

14 

15## Installation

16 

17```bash theme={null}

18npm install @anthropic-ai/claude-agent-sdk

19```

20 

21<Note>

22 Das SDK bündelt eine native Claude Code-Binärdatei für Ihre Plattform als optionale Abhängigkeit wie `@anthropic-ai/claude-agent-sdk-darwin-arm64`. Sie müssen Claude Code nicht separat installieren. Wenn Ihr Paketmanager optionale Abhängigkeiten überspringt, wirft das SDK `Native CLI binary for <platform> not found`; setzen Sie stattdessen [`pathToClaudeCodeExecutable`](#options) auf eine separat installierte `claude`-Binärdatei.

23</Note>

24 

25## Funktionen

26 

27### `query()`

28 

29Die primäre Funktion für die Interaktion mit Claude Code. Erstellt einen asynchronen Generator, der Nachrichten streamt, wenn sie ankommen.

30 

31```typescript theme={null}

32function query({

33 prompt,

34 options

35}: {

36 prompt: string | AsyncIterable<SDKUserMessage>;

37 options?: Options;

38}): Query;

39```

40 

41#### Parameter

42 

43| Parameter | Typ | Beschreibung |

44| :-------- | :---------------------------------------------------------------- | :----------------------------------------------------------------------------------------- |

45| `prompt` | `string \| AsyncIterable<`[`SDKUserMessage`](#sdkuser-message)`>` | Die Eingabeaufforderung als Zeichenkette oder asynchrones Iterable für den Streaming-Modus |

46| `options` | [`Options`](#options) | Optionales Konfigurationsobjekt (siehe Options-Typ unten) |

47 

48#### Rückgabewert

49 

50Gibt ein [`Query`](#query-object)-Objekt zurück, das `AsyncGenerator<`[`SDKMessage`](#sdk-message)`, void>` mit zusätzlichen Methoden erweitert.

51 

52### `startup()`

53 

54Wärmt den CLI-Unterprozess vor, indem er ihn spawnt und den Initialize-Handshake abschließt, bevor eine Eingabeaufforderung verfügbar ist. Das zurückgegebene [`WarmQuery`](#warm-query)-Handle akzeptiert später eine Eingabeaufforderung und schreibt sie in einen bereits bereiten Prozess, sodass der erste `query()`-Aufruf ohne Kosten für das Spawnen und Initialisieren des Unterprozesses aufgelöst wird.

55 

56```typescript theme={null}

57function startup(params?: {

58 options?: Options;

59 initializeTimeoutMs?: number;

60}): Promise<WarmQuery>;

61```

62 

63#### Parameter

64 

65| Parameter | Typ | Beschreibung |

66| :-------------------- | :-------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

67| `options` | [`Options`](#options) | Optionales Konfigurationsobjekt. Gleich wie der `options`-Parameter für `query()` |

68| `initializeTimeoutMs` | `number` | Maximale Zeit in Millisekunden zum Warten auf die Unterprozessinitialisierung. Standardwert ist `60000`. Wenn die Initialisierung nicht rechtzeitig abgeschlossen wird, lehnt das Promise mit einem Timeout-Fehler ab |

69 

70#### Rückgabewert

71 

72Gibt ein `Promise<`[`WarmQuery`](#warm-query)`>` zurück, das aufgelöst wird, sobald der Unterprozess gespawnt wurde und seinen Initialize-Handshake abgeschlossen hat.

73 

74#### Beispiel

75 

76Rufen Sie `startup()` früh auf, beispielsweise beim Anwendungsstart, und rufen Sie dann `.query()` auf dem zurückgegebenen Handle auf, sobald eine Eingabeaufforderung bereit ist. Dies verschiebt das Spawnen und die Initialisierung des Unterprozesses aus dem kritischen Pfad.

77 

78```typescript theme={null}

79import { startup } from "@anthropic-ai/claude-agent-sdk";

80 

81// Bezahlen Sie die Startup-Kosten im Voraus

82const warm = await startup({ options: { maxTurns: 3 } });

83 

84// Später, wenn eine Eingabeaufforderung bereit ist, ist dies sofort

85for await (const message of warm.query("What files are here?")) {

86 console.log(message);

87}

88```

89 

90### `tool()`

91 

92Erstellt eine typsichere MCP-Tool-Definition zur Verwendung mit SDK MCP-Servern.

93 

94```typescript theme={null}

95function tool<Schema extends AnyZodRawShape>(

96 name: string,

97 description: string,

98 inputSchema: Schema,

99 handler: (args: InferShape<Schema>, extra: unknown) => Promise<CallToolResult>,

100 extras?: { annotations?: ToolAnnotations }

101): SdkMcpToolDefinition<Schema>;

102```

103 

104#### Parameter

105 

106| Parameter | Typ | Beschreibung |

107| :------------ | :------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------- |

108| `name` | `string` | Der Name des Tools |

109| `description` | `string` | Eine Beschreibung, was das Tool tut |

110| `inputSchema` | `Schema extends AnyZodRawShape` | Zod-Schema, das die Eingabeparameter des Tools definiert (unterstützt sowohl Zod 3 als auch Zod 4) |

111| `handler` | `(args, extra) => Promise<`[`CallToolResult`](#call-tool-result)`>` | Asynchrone Funktion, die die Tool-Logik ausführt |

112| `extras` | `{ annotations?: `[`ToolAnnotations`](#tool-annotations)` }` | Optionale MCP-Tool-Anmerkungen, die Verhaltenshinweise für Clients bereitstellen |

113 

114#### `ToolAnnotations`

115 

116Erneut exportiert aus `@modelcontextprotocol/sdk/types.js`. Alle Felder sind optionale Hinweise; Clients sollten sich nicht auf sie für Sicherheitsentscheidungen verlassen.

117 

118| Feld | Typ | Standard | Beschreibung |

119| :---------------- | :-------- | :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------- |

120| `title` | `string` | `undefined` | Benutzerfreundlicher Titel für das Tool |

121| `readOnlyHint` | `boolean` | `false` | Wenn `true`, ändert das Tool seine Umgebung nicht |

122| `destructiveHint` | `boolean` | `true` | Wenn `true`, kann das Tool destruktive Updates durchführen (nur sinnvoll, wenn `readOnlyHint` `false` ist) |

123| `idempotentHint` | `boolean` | `false` | Wenn `true`, haben wiederholte Aufrufe mit denselben Argumenten keine zusätzliche Auswirkung (nur sinnvoll, wenn `readOnlyHint` `false` ist) |

124| `openWorldHint` | `boolean` | `true` | Wenn `true`, interagiert das Tool mit externen Entitäten (z. B. Websuche). Wenn `false`, ist die Domäne des Tools geschlossen (z. B. ein Memory-Tool) |

125 

126```typescript theme={null}

127import { tool } from "@anthropic-ai/claude-agent-sdk";

128import { z } from "zod";

129 

130const searchTool = tool(

131 "search",

132 "Search the web",

133 { query: z.string() },

134 async ({ query }) => {

135 return { content: [{ type: "text", text: `Results for: ${query}` }] };

136 },

137 { annotations: { readOnlyHint: true, openWorldHint: true } }

138);

139```

140 

141### `createSdkMcpServer()`

142 

143Erstellt eine MCP-Server-Instanz, die im selben Prozess wie Ihre Anwendung ausgeführt wird.

144 

145```typescript theme={null}

146function createSdkMcpServer(options: {

147 name: string;

148 version?: string;

149 tools?: Array<SdkMcpToolDefinition<any>>;

150}): McpSdkServerConfigWithInstance;

151```

152 

153#### Parameter

154 

155| Parameter | Typ | Beschreibung |

156| :---------------- | :---------------------------- | :--------------------------------------------------------------------- |

157| `options.name` | `string` | Der Name des MCP-Servers |

158| `options.version` | `string` | Optionale Versionsnummer |

159| `options.tools` | `Array<SdkMcpToolDefinition>` | Array von Tool-Definitionen, die mit [`tool()`](#tool) erstellt wurden |

160 

161### `listSessions()`

162 

163Entdeckt und listet vergangene Sitzungen mit leichten Metadaten auf. Filtern Sie nach Projektverzeichnis oder listen Sie Sitzungen über alle Projekte auf.

164 

165```typescript theme={null}

166function listSessions(options?: ListSessionsOptions): Promise<SDKSessionInfo[]>;

167```

168 

169#### Parameter

170 

171| Parameter | Typ | Standard | Beschreibung |

172| :------------------------- | :-------- | :---------- | :---------------------------------------------------------------------------------------------------------------------------- |

173| `options.dir` | `string` | `undefined` | Verzeichnis, für das Sitzungen aufgelistet werden sollen. Wenn weggelassen, werden Sitzungen über alle Projekte zurückgegeben |

174| `options.limit` | `number` | `undefined` | Maximale Anzahl der zurückzugebenden Sitzungen |

175| `options.includeWorktrees` | `boolean` | `true` | Wenn `dir` sich in einem Git-Repository befindet, Sitzungen aus allen Worktree-Pfaden einbeziehen |

176 

177#### Rückgabetyp: `SDKSessionInfo`

178 

179| Eigenschaft | Typ | Beschreibung |

180| :------------- | :-------------------- | :------------------------------------------------------------------------------------------------------------- |

181| `sessionId` | `string` | Eindeutige Sitzungs-ID (UUID) |

182| `summary` | `string` | Anzeigetitel: benutzerdefinierter Titel, automatisch generierte Zusammenfassung oder erste Eingabeaufforderung |

183| `lastModified` | `number` | Letzte Änderungszeit in Millisekunden seit Epoch |

184| `fileSize` | `number \| undefined` | Sitzungsdateigröße in Bytes. Nur für lokale JSONL-Speicherung gefüllt |

185| `customTitle` | `string \| undefined` | Vom Benutzer festgelegter Sitzungstitel (über `/rename`) |

186| `firstPrompt` | `string \| undefined` | Erste aussagekräftige Benutzer-Eingabeaufforderung in der Sitzung |

187| `gitBranch` | `string \| undefined` | Git-Branch am Ende der Sitzung |

188| `cwd` | `string \| undefined` | Arbeitsverzeichnis für die Sitzung |

189| `tag` | `string \| undefined` | Vom Benutzer festgelegtes Sitzungs-Tag (siehe [`tagSession()`](#tag-session)) |

190| `createdAt` | `number \| undefined` | Erstellungszeit in Millisekunden seit Epoch, vom Zeitstempel des ersten Eintrags |

191 

192#### Beispiel

193 

194Geben Sie die 10 neuesten Sitzungen für ein Projekt aus. Ergebnisse werden nach `lastModified` absteigend sortiert, sodass das erste Element das neueste ist. Lassen Sie `dir` weg, um über alle Projekte zu suchen.

195 

196```typescript theme={null}

197import { listSessions } from "@anthropic-ai/claude-agent-sdk";

198 

199const sessions = await listSessions({ dir: "/path/to/project", limit: 10 });

200 

201for (const session of sessions) {

202 console.log(`${session.summary} (${session.sessionId})`);

203}

204```

205 

206### `getSessionMessages()`

207 

208Liest Benutzer- und Assistenten-Nachrichten aus einem vergangenen Sitzungstranskript.

209 

210```typescript theme={null}

211function getSessionMessages(

212 sessionId: string,

213 options?: GetSessionMessagesOptions

214): Promise<SessionMessage[]>;

215```

216 

217#### Parameter

218 

219| Parameter | Typ | Standard | Beschreibung |

220| :--------------- | :------- | :----------- | :------------------------------------------------------------------------------------------------------ |

221| `sessionId` | `string` | erforderlich | Sitzungs-UUID zum Lesen (siehe `listSessions()`) |

222| `options.dir` | `string` | `undefined` | Projektverzeichnis, in dem die Sitzung zu finden ist. Wenn weggelassen, werden alle Projekte durchsucht |

223| `options.limit` | `number` | `undefined` | Maximale Anzahl der zurückzugebenden Nachrichten |

224| `options.offset` | `number` | `undefined` | Anzahl der Nachrichten, die vom Anfang übersprungen werden sollen |

225 

226#### Rückgabetyp: `SessionMessage`

227 

228| Eigenschaft | Typ | Beschreibung |

229| :------------------- | :---------------------- | :---------------------------------------- |

230| `type` | `"user" \| "assistant"` | Nachrichtenrolle |

231| `uuid` | `string` | Eindeutige Nachrichten-ID |

232| `session_id` | `string` | Sitzung, zu der diese Nachricht gehört |

233| `message` | `unknown` | Rohe Nachricht-Payload aus dem Transkript |

234| `parent_tool_use_id` | `null` | Reserviert |

235 

236#### Beispiel

237 

238```typescript theme={null}

239import { listSessions, getSessionMessages } from "@anthropic-ai/claude-agent-sdk";

240 

241const [latest] = await listSessions({ dir: "/path/to/project", limit: 1 });

242 

243if (latest) {

244 const messages = await getSessionMessages(latest.sessionId, {

245 dir: "/path/to/project",

246 limit: 20

247 });

248 

249 for (const msg of messages) {

250 console.log(`[${msg.type}] ${msg.uuid}`);

251 }

252}

253```

254 

255### `getSessionInfo()`

256 

257Liest Metadaten für eine einzelne Sitzung nach ID, ohne das vollständige Projektverzeichnis zu scannen.

258 

259```typescript theme={null}

260function getSessionInfo(

261 sessionId: string,

262 options?: GetSessionInfoOptions

263): Promise<SDKSessionInfo | undefined>;

264```

265 

266#### Parameter

267 

268| Parameter | Typ | Standard | Beschreibung |

269| :------------ | :------- | :----------- | :------------------------------------------------------------------------------------ |

270| `sessionId` | `string` | erforderlich | UUID der zu suchenden Sitzung |

271| `options.dir` | `string` | `undefined` | Projektverzeichnispfad. Wenn weggelassen, werden alle Projektverzeichnisse durchsucht |

272 

273Gibt [`SDKSessionInfo`](#return-type-sdk-session-info) zurück, oder `undefined`, wenn die Sitzung nicht gefunden wird.

274 

275### `renameSession()`

276 

277Benennt eine Sitzung um, indem ein benutzerdefinierter Titeleintrag angehängt wird. Wiederholte Aufrufe sind sicher; der neueste Titel gewinnt.

278 

279```typescript theme={null}

280function renameSession(

281 sessionId: string,

282 title: string,

283 options?: SessionMutationOptions

284): Promise<void>;

285```

286 

287#### Parameter

288 

289| Parameter | Typ | Standard | Beschreibung |

290| :------------ | :------- | :----------- | :------------------------------------------------------------------------------------ |

291| `sessionId` | `string` | erforderlich | UUID der umzubenennenden Sitzung |

292| `title` | `string` | erforderlich | Neuer Titel. Muss nach dem Trimmen von Leerzeichen nicht leer sein |

293| `options.dir` | `string` | `undefined` | Projektverzeichnispfad. Wenn weggelassen, werden alle Projektverzeichnisse durchsucht |

294 

295### `tagSession()`

296 

297Taggt eine Sitzung. Übergeben Sie `null`, um das Tag zu löschen. Wiederholte Aufrufe sind sicher; das neueste Tag gewinnt.

298 

299```typescript theme={null}

300function tagSession(

301 sessionId: string,

302 tag: string | null,

303 options?: SessionMutationOptions

304): Promise<void>;

305```

306 

307#### Parameter

308 

309| Parameter | Typ | Standard | Beschreibung |

310| :------------ | :--------------- | :----------- | :------------------------------------------------------------------------------------ |

311| `sessionId` | `string` | erforderlich | UUID der zu taggenden Sitzung |

312| `tag` | `string \| null` | erforderlich | Tag-Zeichenkette oder `null` zum Löschen |

313| `options.dir` | `string` | `undefined` | Projektverzeichnispfad. Wenn weggelassen, werden alle Projektverzeichnisse durchsucht |

314 

315## Typen

316 

317### `Options`

318 

319Konfigurationsobjekt für die `query()`-Funktion.

320 

321| Eigenschaft | Typ | Standard | Beschreibung |

322| :-------------------------------- | :------------------------------------------------------------------------------------------------------- | :------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

323| `abortController` | `AbortController` | `new AbortController()` | Controller zum Abbrechen von Operationen |

324| `additionalDirectories` | `string[]` | `[]` | Zusätzliche Verzeichnisse, auf die Claude zugreifen kann |

325| `agent` | `string` | `undefined` | Agent-Name für den Hauptthread. Der Agent muss in der `agents`-Option oder in den Einstellungen definiert sein |

326| `agents` | `Record<string, [`AgentDefinition`](#agent-definition)>` | `undefined` | Programmatische Definition von Subagenten |

327| `allowDangerouslySkipPermissions` | `boolean` | `false` | Aktivieren Sie das Umgehen von Berechtigungen. Erforderlich bei Verwendung von `permissionMode: 'bypassPermissions'` |

328| `allowedTools` | `string[]` | `[]` | Tools, die automatisch genehmigt werden, ohne zu fragen. Dies beschränkt Claude nicht nur auf diese Tools; nicht aufgelistete Tools fallen durch `permissionMode` und `canUseTool`. Verwenden Sie `disallowedTools`, um Tools zu blockieren. Siehe [Berechtigungen](/de/agent-sdk/permissions#allow-and-deny-rules) |

329| `betas` | [`SdkBeta`](#sdk-beta)`[]` | `[]` | Beta-Funktionen aktivieren |

330| `canUseTool` | [`CanUseTool`](#can-use-tool) | `undefined` | Benutzerdefinierte Berechtigungsfunktion für die Tool-Nutzung |

331| `continue` | `boolean` | `false` | Setzen Sie die neueste Konversation fort |

332| `cwd` | `string` | `process.cwd()` | Aktuelles Arbeitsverzeichnis |

333| `debug` | `boolean` | `false` | Aktivieren Sie den Debug-Modus für den Claude Code-Prozess |

334| `debugFile` | `string` | `undefined` | Schreiben Sie Debug-Protokolle in einen bestimmten Dateipfad. Aktiviert implizit den Debug-Modus |

335| `disallowedTools` | `string[]` | `[]` | Tools, die immer verweigert werden. Deny-Regeln werden zuerst überprüft und überschreiben `allowedTools` und `permissionMode` (einschließlich `bypassPermissions`) |

336| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `'high'` | Steuert, wie viel Aufwand Claude in seine Antwort investiert. Funktioniert mit adaptivem Denken, um die Denktiefe zu lenken |

337| `enableFileCheckpointing` | `boolean` | `false` | Aktivieren Sie die Dateienänderungsverfolgung zum Zurückspulen. Siehe [Datei-Checkpointing](/de/agent-sdk/file-checkpointing) |

338| `env` | `Record<string, string \| undefined>` | `process.env` | Umgebungsvariablen. Siehe [Umgebungsvariablen](/de/env-vars) für Variablen, die die zugrunde liegende CLI liest. Setzen Sie `CLAUDE_AGENT_SDK_CLIENT_APP`, um Ihre App im User-Agent-Header zu identifizieren |

339| `executable` | `'bun' \| 'deno' \| 'node'` | Automatisch erkannt | JavaScript-Laufzeit zum Verwenden |

340| `executableArgs` | `string[]` | `[]` | Argumente, die an die ausführbare Datei übergeben werden sollen |

341| `extraArgs` | `Record<string, string \| null>` | `{}` | Zusätzliche Argumente |

342| `fallbackModel` | `string` | `undefined` | Modell, das verwendet werden soll, wenn das primäre fehlschlägt |

343| `forkSession` | `boolean` | `false` | Beim Fortsetzen mit `resume` zu einer neuen Sitzungs-ID verzweigen, anstatt die ursprüngliche Sitzung fortzusetzen |

344| `hooks` | `Partial<Record<`[`HookEvent`](#hook-event)`, `[`HookCallbackMatcher`](#hook-callback-matcher)`[]>>` | `{}` | Hook-Callbacks für Ereignisse |

345| `includePartialMessages` | `boolean` | `false` | Teilweise Nachrichtenereignisse einbeziehen |

346| `maxBudgetUsd` | `number` | `undefined` | Beenden Sie die Abfrage, wenn die clientseitige Kostenschätzung diesen USD-Wert erreicht. Verglichen mit derselben Schätzung wie `total_cost_usd`; siehe [Kosten und Nutzung verfolgen](/de/agent-sdk/cost-tracking) für Genauigkeitsvorbehalt |

347| `maxThinkingTokens` | `number` | `undefined` | *Veraltet:* Verwenden Sie stattdessen `thinking`. Maximale Token für den Denkprozess |

348| `maxTurns` | `number` | `undefined` | Maximale agentengesteuerte Turns (Tool-Use-Roundtrips) |

349| `mcpServers` | `Record<string, [`McpServerConfig`](#mcp-server-config)>` | `{}` | MCP-Server-Konfigurationen |

350| `model` | `string` | Standard aus CLI | Claude-Modell zum Verwenden |

351| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Definieren Sie das Ausgabeformat für Agent-Ergebnisse. Siehe [Strukturierte Ausgaben](/de/agent-sdk/structured-outputs) für Details |

352| `pathToClaudeCodeExecutable` | `string` | Automatisch aufgelöst aus gebündelter nativer Binärdatei | Pfad zur Claude Code-Ausführungsdatei. Nur erforderlich, wenn optionale Abhängigkeiten während der Installation übersprungen wurden oder Ihre Plattform nicht in der unterstützten Menge enthalten ist |

353| `permissionMode` | [`PermissionMode`](#permission-mode) | `'default'` | Berechtigungsmodus für die Sitzung |

354| `permissionPromptToolName` | `string` | `undefined` | MCP-Tool-Name für Berechtigungsaufforderungen |

355| `persistSession` | `boolean` | `true` | Wenn `false`, deaktiviert die Sitzungspersistenz auf der Festplatte. Sitzungen können später nicht fortgesetzt werden |

356| `plugins` | [`SdkPluginConfig`](#sdk-plugin-config)`[]` | `[]` | Laden Sie benutzerdefinierte Plugins aus lokalen Pfaden. Siehe [Plugins](/de/agent-sdk/plugins) für Details |

357| `promptSuggestions` | `boolean` | `false` | Aktivieren Sie Eingabeaufforderungsvorschläge. Gibt nach jedem Turn eine `prompt_suggestion`-Nachricht mit einer vorhergesagten nächsten Benutzer-Eingabeaufforderung aus |

358| `resume` | `string` | `undefined` | Sitzungs-ID zum Fortsetzen |

359| `resumeSessionAt` | `string` | `undefined` | Sitzung bei einer bestimmten Nachrichten-UUID fortsetzen |

360| `sandbox` | [`SandboxSettings`](#sandbox-settings) | `undefined` | Konfigurieren Sie das Sandbox-Verhalten programmatisch. Siehe [Sandbox-Einstellungen](#sandbox-settings) für Details |

361| `sessionId` | `string` | Automatisch generiert | Verwenden Sie eine bestimmte UUID für die Sitzung, anstatt eine zu generieren |

362| `sessionStore` | [`SessionStore`](/de/agent-sdk/session-storage#the-session-store-interface) | `undefined` | Spiegeln Sie Sitzungstranskripte auf einem externen Backend, damit jeder Host sie fortsetzen kann. Siehe [Sitzungen im externen Speicher persistieren](/de/agent-sdk/session-storage) |

363| `settingSources` | [`SettingSource`](#setting-source)`[]` | CLI-Standards (alle Quellen) | Steuern Sie, welche Dateisystem-Einstellungen geladen werden. Übergeben Sie `[]`, um Benutzer-, Projekt- und lokale Einstellungen zu deaktivieren. Verwaltete Richtlinieneinstellungen werden unabhängig davon geladen. Siehe [Claude Code-Funktionen verwenden](/de/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

364| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Benutzerdefinierte Funktion zum Spawnen des Claude Code-Prozesses. Verwenden Sie, um Claude Code in VMs, Containern oder Remote-Umgebungen auszuführen |

365| `stderr` | `(data: string) => void` | `undefined` | Callback für Stderr-Ausgabe |

366| `strictMcpConfig` | `boolean` | `false` | Erzwingen Sie strikte MCP-Validierung |

367| `systemPrompt` | `string \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean }` | `undefined` (minimale Eingabeaufforderung) | Konfiguration der Systemeingabeaufforderung. Übergeben Sie eine Zeichenkette für eine benutzerdefinierte Eingabeaufforderung oder `{ type: 'preset', preset: 'claude_code' }`, um die Systemeingabeaufforderung von Claude Code zu verwenden. Bei Verwendung der Preset-Objektform fügen Sie `append` hinzu, um sie mit zusätzlichen Anweisungen zu erweitern, und setzen Sie `excludeDynamicSections: true`, um sitzungsspezifischen Kontext in die erste Benutzer-Nachricht zu verschieben, um [bessere Prompt-Cache-Wiederverwendung über Maschinen hinweg](/de/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |

368| `thinking` | [`ThinkingConfig`](#thinking-config) | `{ type: 'adaptive' }` für unterstützte Modelle | Steuert das Denk-/Reasoning-Verhalten von Claude. Siehe [`ThinkingConfig`](#thinking-config) für Optionen |

369| `toolConfig` | [`ToolConfig`](#tool-config) | `undefined` | Konfiguration für das Verhalten integrierter Tools. Siehe [`ToolConfig`](#tool-config) für Details |

370| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | Tool-Konfiguration. Übergeben Sie ein Array von Tool-Namen oder verwenden Sie die Voreinstellung, um die Standard-Tools von Claude Code zu erhalten |

371 

372### `Query`-Objekt

373 

374Schnittstelle, die von der `query()`-Funktion zurückgegeben wird.

375 

376```typescript theme={null}

377interface Query extends AsyncGenerator<SDKMessage, void> {

378 interrupt(): Promise<void>;

379 rewindFiles(

380 userMessageId: string,

381 options?: { dryRun?: boolean }

382 ): Promise<RewindFilesResult>;

383 setPermissionMode(mode: PermissionMode): Promise<void>;

384 setModel(model?: string): Promise<void>;

385 setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;

386 initializationResult(): Promise<SDKControlInitializeResponse>;

387 supportedCommands(): Promise<SlashCommand[]>;

388 supportedModels(): Promise<ModelInfo[]>;

389 supportedAgents(): Promise<AgentInfo[]>;

390 mcpServerStatus(): Promise<McpServerStatus[]>;

391 accountInfo(): Promise<AccountInfo>;

392 reconnectMcpServer(serverName: string): Promise<void>;

393 toggleMcpServer(serverName: string, enabled: boolean): Promise<void>;

394 setMcpServers(servers: Record<string, McpServerConfig>): Promise<McpSetServersResult>;

395 streamInput(stream: AsyncIterable<SDKUserMessage>): Promise<void>;

396 stopTask(taskId: string): Promise<void>;

397 close(): void;

398}

399```

400 

401#### Methoden

402 

403| Methode | Beschreibung |

404| :------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

405| `interrupt()` | Unterbricht die Abfrage (nur im Streaming-Eingabemodus verfügbar) |

406| `rewindFiles(userMessageId, options?)` | Stellt Dateien in ihren Zustand bei der angegebenen Benutzer-Nachricht wieder her. Übergeben Sie `{ dryRun: true }`, um Änderungen in der Vorschau anzuzeigen. Erfordert `enableFileCheckpointing: true`. Siehe [Datei-Checkpointing](/de/agent-sdk/file-checkpointing) |

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

408| `setModel()` | Ändert das Modell (nur im Streaming-Eingabemodus verfügbar) |

409| `setMaxThinkingTokens()` | *Veraltet:* Verwenden Sie stattdessen die `thinking`-Option. Ändert die maximalen Denk-Token |

410| `initializationResult()` | Gibt das vollständige Initialisierungsergebnis zurück, einschließlich unterstützter Befehle, Modelle, Kontoinformationen und Ausgabestil-Konfiguration |

411| `supportedCommands()` | Gibt verfügbare Slash-Befehle zurück |

412| `supportedModels()` | Gibt verfügbare Modelle mit Anzeigeinformationen zurück |

413| `supportedAgents()` | Gibt verfügbare Subagenten als [`AgentInfo`](#agent-info)`[]` zurück |

414| `mcpServerStatus()` | Gibt den Status verbundener MCP-Server zurück |

415| `accountInfo()` | Gibt Kontoinformationen zurück |

416| `reconnectMcpServer(serverName)` | Verbinden Sie einen MCP-Server nach Name erneut |

417| `toggleMcpServer(serverName, enabled)` | Aktivieren oder deaktivieren Sie einen MCP-Server nach Name |

418| `setMcpServers(servers)` | Ersetzen Sie dynamisch die Menge der MCP-Server für diese Sitzung. Gibt Informationen darüber zurück, welche Server hinzugefügt, entfernt und welche Fehler aufgetreten sind |

419| `streamInput(stream)` | Streamen Sie Eingabenachrichten zur Abfrage für Multi-Turn-Konversationen |

420| `stopTask(taskId)` | Beenden Sie eine laufende Hintergrund-Aufgabe nach ID |

421| `close()` | Schließen Sie die Abfrage und beenden Sie den zugrunde liegenden Prozess. Beendet die Abfrage erzwungen und bereinigt alle Ressourcen |

422 

423### `WarmQuery`

424 

425Handle, das von [`startup()`](#startup) zurückgegeben wird. Der Unterprozess ist bereits gespawnt und initialisiert, sodass das Aufrufen von `query()` auf diesem Handle die Eingabeaufforderung direkt in einen bereiten Prozess ohne Startup-Latenz schreibt.

426 

427```typescript theme={null}

428interface WarmQuery extends AsyncDisposable {

429 query(prompt: string | AsyncIterable<SDKUserMessage>): Query;

430 close(): void;

431}

432```

433 

434#### Methoden

435 

436| Methode | Beschreibung |

437| :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

438| `query(prompt)` | Senden Sie eine Eingabeaufforderung an den vorgewärmten Unterprozess und geben Sie ein [`Query`](#query-object) zurück. Kann nur einmal pro `WarmQuery` aufgerufen werden |

439| `close()` | Schließen Sie den Unterprozess, ohne eine Eingabeaufforderung zu senden. Verwenden Sie dies, um eine warme Abfrage zu verwerfen, die nicht mehr benötigt wird |

440 

441`WarmQuery` implementiert `AsyncDisposable`, sodass es mit `await using` für automatische Bereinigung verwendet werden kann.

442 

443### `SDKControlInitializeResponse`

444 

445Rückgabetyp von `initializationResult()`. Enthält Sitzungsinitialisierungsdaten.

446 

447```typescript theme={null}

448type SDKControlInitializeResponse = {

449 commands: SlashCommand[];

450 agents: AgentInfo[];

451 output_style: string;

452 available_output_styles: string[];

453 models: ModelInfo[];

454 account: AccountInfo;

455 fast_mode_state?: "off" | "cooldown" | "on";

456};

457```

458 

459### `AgentDefinition`

460 

461Konfiguration für einen programmatisch definierten Subagenten.

462 

463```typescript theme={null}

464type AgentDefinition = {

465 description: string;

466 tools?: string[];

467 disallowedTools?: string[];

468 prompt: string;

469 model?: string;

470 mcpServers?: AgentMcpServerSpec[];

471 skills?: string[];

472 initialPrompt?: string;

473 maxTurns?: number;

474 background?: boolean;

475 memory?: "user" | "project" | "local";

476 effort?: "low" | "medium" | "high" | "xhigh" | "max" | number;

477 permissionMode?: PermissionMode;

478 criticalSystemReminder_EXPERIMENTAL?: string;

479};

480```

481 

482| Feld | Erforderlich | Beschreibung |

483| :------------------------------------ | :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

484| `description` | Ja | Natürlichsprachige Beschreibung, wann dieser Agent verwendet werden soll |

485| `tools` | Nein | Array von zulässigen Tool-Namen. Wenn weggelassen, erbt alle Tools vom übergeordneten Element |

486| `disallowedTools` | Nein | Array von Tool-Namen, die für diesen Agent explizit nicht zulässig sind |

487| `prompt` | Ja | Die Systemeingabeaufforderung des Agenten |

488| `model` | Nein | Modellüberschreibung für diesen Agenten. Akzeptiert einen Alias wie `'sonnet'`, `'opus'`, `'haiku'`, `'inherit'` oder eine vollständige Modell-ID. Wenn weggelassen oder `'inherit'`, verwendet das Hauptmodell |

489| `mcpServers` | Nein | MCP-Server-Spezifikationen für diesen Agenten |

490| `skills` | Nein | Array von Skill-Namen, die in den Agent-Kontext vorgeladen werden sollen |

491| `initialPrompt` | Nein | Wird automatisch als erster Benutzer-Turn eingereicht, wenn dieser Agent als Hauptthread-Agent ausgeführt wird |

492| `maxTurns` | Nein | Maximale Anzahl agentengesteuerter Turns (API-Roundtrips) vor dem Stoppen |

493| `background` | Nein | Führen Sie diesen Agent als nicht-blockierende Hintergrund-Aufgabe aus, wenn er aufgerufen wird |

494| `memory` | Nein | Speicherquelle für diesen Agent: `'user'`, `'project'` oder `'local'` |

495| `effort` | Nein | Reasoning-Aufwandsstufe für diesen Agent. Akzeptiert eine benannte Stufe oder eine Ganzzahl |

496| `permissionMode` | Nein | Berechtigungsmodus für die Tool-Ausführung innerhalb dieses Agenten. Siehe [`PermissionMode`](#permission-mode) |

497| `criticalSystemReminder_EXPERIMENTAL` | Nein | Experimentell: Kritische Erinnerung, die zur Systemeingabeaufforderung hinzugefügt wird |

498 

499### `AgentMcpServerSpec`

500 

501Gibt MCP-Server an, die einem Subagenten zur Verfügung stehen. Kann ein Server-Name (Zeichenkette, die auf einen Server aus der `mcpServers`-Konfiguration des übergeordneten Elements verweist) oder eine Inline-Server-Konfiguration sein, die Server-Namen auf Konfigurationen abbildet.

502 

503```typescript theme={null}

504type AgentMcpServerSpec = string | Record<string, McpServerConfigForProcessTransport>;

505```

506 

507Wobei `McpServerConfigForProcessTransport` `McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig` ist.

508 

509### `SettingSource`

510 

511Steuert, welche dateisystembasierte Konfigurationsquellen das SDK Einstellungen aus lädt.

512 

513```typescript theme={null}

514type SettingSource = "user" | "project" | "local";

515```

516 

517| Wert | Beschreibung | Ort |

518| :---------- | :----------------------------------------------------- | :---------------------------- |

519| `'user'` | Globale Benutzereinstellungen | `~/.claude/settings.json` |

520| `'project'` | Gemeinsame Projekteinstellungen (versionskontrolliert) | `.claude/settings.json` |

521| `'local'` | Lokale Projekteinstellungen (gitignoriert) | `.claude/settings.local.json` |

522 

523#### Standardverhalten

524 

525Wenn `settingSources` weggelassen oder `undefined` ist, lädt `query()` die gleichen Dateisystem-Einstellungen wie die Claude Code CLI: Benutzer, Projekt und lokal. Verwaltete Richtlinieneinstellungen werden in allen Fällen geladen. Siehe [Was settingSources nicht steuert](/de/agent-sdk/claude-code-features#what-settingsources-does-not-control) für Eingaben, die unabhängig von dieser Option gelesen werden, und wie man sie deaktiviert.

526 

527#### Warum settingSources verwenden

528 

529**Dateisystem-Einstellungen deaktivieren:**

530 

531```typescript theme={null}

532// Laden Sie keine Benutzer-, Projekt- oder lokalen Einstellungen von der Festplatte

533const result = query({

534 prompt: "Analyze this code",

535 options: { settingSources: [] }

536});

537```

538 

539**Alle Dateisystem-Einstellungen explizit laden:**

540 

541```typescript theme={null}

542const result = query({

543 prompt: "Analyze this code",

544 options: {

545 settingSources: ["user", "project", "local"] // Laden Sie alle Einstellungen

546 }

547});

548```

549 

550**Nur bestimmte Einstellungsquellen laden:**

551 

552```typescript theme={null}

553// Laden Sie nur Projekteinstellungen, ignorieren Sie Benutzer und lokal

554const result = query({

555 prompt: "Run CI checks",

556 options: {

557 settingSources: ["project"] // Nur .claude/settings.json

558 }

559});

560```

561 

562**Test- und CI-Umgebungen:**

563 

564```typescript theme={null}

565// Stellen Sie konsistentes Verhalten in CI sicher, indem Sie lokale Einstellungen ausschließen

566const result = query({

567 prompt: "Run tests",

568 options: {

569 settingSources: ["project"], // Nur teamweit gemeinsame Einstellungen

570 permissionMode: "bypassPermissions"

571 }

572});

573```

574 

575**SDK-only-Anwendungen:**

576 

577```typescript theme={null}

578// Definieren Sie alles programmatisch.

579// Übergeben Sie [], um sich von Dateisystem-Einstellungsquellen abzumelden.

580const result = query({

581 prompt: "Review this PR",

582 options: {

583 settingSources: [],

584 agents: {

585 /* ... */

586 },

587 mcpServers: {

588 /* ... */

589 },

590 allowedTools: ["Read", "Grep", "Glob"]

591 }

592});

593```

594 

595**Laden von CLAUDE.md-Projektanweisungen:**

596 

597```typescript theme={null}

598// Laden Sie Projekteinstellungen, um CLAUDE.md-Dateien einzubeziehen

599const result = query({

600 prompt: "Add a new feature following project conventions",

601 options: {

602 systemPrompt: {

603 type: "preset",

604 preset: "claude_code" // Verwenden Sie die Systemeingabeaufforderung von Claude Code

605 },

606 settingSources: ["project"], // Lädt CLAUDE.md aus dem Projektverzeichnis

607 allowedTools: ["Read", "Write", "Edit"]

608 }

609});

610```

611 

612#### Einstellungspriorität

613 

614Wenn mehrere Quellen geladen werden, werden Einstellungen mit dieser Priorität zusammengeführt (höchste zu niedrigste):

615 

6161. Lokale Einstellungen (`.claude/settings.local.json`)

6172. Projekteinstellungen (`.claude/settings.json`)

6183. Benutzereinstellungen (`~/.claude/settings.json`)

619 

620Programmatische Optionen wie `agents` und `allowedTools` überschreiben Benutzer-, Projekt- und lokale Dateisystem-Einstellungen. Verwaltete Richtlinieneinstellungen haben Vorrang vor programmatischen Optionen.

621 

622### `PermissionMode`

623 

624```typescript theme={null}

625type PermissionMode =

626 | "default" // Standardberechtigungsverhalten

627 | "acceptEdits" // Dateibearbeitungen automatisch akzeptieren

628 | "bypassPermissions" // Alle Berechtigungsprüfungen umgehen

629 | "plan" // Planungsmodus - keine Ausführung

630 | "dontAsk" // Fragen Sie nicht nach Berechtigungen, verweigern Sie, wenn nicht vorab genehmigt

631 | "auto"; // Verwenden Sie einen Modell-Klassifizierer, um jeden Tool-Aufruf zu genehmigen oder zu verweigern

632```

633 

634### `CanUseTool`

635 

636Benutzerdefinierte Berechtigungsfunktionstyp zur Steuerung der Tool-Nutzung.

637 

638```typescript theme={null}

639type CanUseTool = (

640 toolName: string,

641 input: Record<string, unknown>,

642 options: {

643 signal: AbortSignal;

644 suggestions?: PermissionUpdate[];

645 blockedPath?: string;

646 decisionReason?: string;

647 toolUseID: string;

648 agentID?: string;

649 }

650) => Promise<PermissionResult>;

651```

652 

653| Option | Typ | Beschreibung |

654| :--------------- | :------------------------------------------- | :-------------------------------------------------------------------------------------------------------------- |

655| `signal` | `AbortSignal` | Signalisiert, wenn die Operation abgebrochen werden soll |

656| `suggestions` | [`PermissionUpdate`](#permission-update)`[]` | Vorgeschlagene Berechtigungsaktualisierungen, damit der Benutzer nicht erneut für dieses Tool aufgefordert wird |

657| `blockedPath` | `string` | Der Dateipfad, der die Berechtigungsanfrage ausgelöst hat, falls zutreffend |

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

659| `toolUseID` | `string` | Eindeutige ID für diesen spezifischen Tool-Aufruf innerhalb der Assistenten-Nachricht |

660| `agentID` | `string` | Wenn innerhalb eines Sub-Agenten ausgeführt, die ID des Sub-Agenten |

661 

662### `PermissionResult`

663 

664Ergebnis einer Berechtigungsprüfung.

665 

666```typescript theme={null}

667type PermissionResult =

668 | {

669 behavior: "allow";

670 updatedInput?: Record<string, unknown>;

671 updatedPermissions?: PermissionUpdate[];

672 toolUseID?: string;

673 }

674 | {

675 behavior: "deny";

676 message: string;

677 interrupt?: boolean;

678 toolUseID?: string;

679 };

680```

681 

682### `ToolConfig`

683 

684Konfiguration für das Verhalten integrierter Tools.

685 

686```typescript theme={null}

687type ToolConfig = {

688 askUserQuestion?: {

689 previewFormat?: "markdown" | "html";

690 };

691};

692```

693 

694| Feld | Typ | Beschreibung |

695| :------------------------------ | :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

696| `askUserQuestion.previewFormat` | `'markdown' \| 'html'` | Aktiviert das `preview`-Feld auf [`AskUserQuestion`](/de/agent-sdk/user-input#question-format)-Optionen und legt sein Inhaltsformat fest. Wenn nicht gesetzt, gibt Claude keine Vorschau aus |

697 

698### `McpServerConfig`

699 

700Konfiguration für MCP-Server.

701 

702```typescript theme={null}

703type McpServerConfig =

704 | McpStdioServerConfig

705 | McpSSEServerConfig

706 | McpHttpServerConfig

707 | McpSdkServerConfigWithInstance;

708```

709 

710#### `McpStdioServerConfig`

711 

712```typescript theme={null}

713type McpStdioServerConfig = {

714 type?: "stdio";

715 command: string;

716 args?: string[];

717 env?: Record<string, string>;

718};

719```

720 

721#### `McpSSEServerConfig`

722 

723```typescript theme={null}

724type McpSSEServerConfig = {

725 type: "sse";

726 url: string;

727 headers?: Record<string, string>;

728};

729```

730 

731#### `McpHttpServerConfig`

732 

733```typescript theme={null}

734type McpHttpServerConfig = {

735 type: "http";

736 url: string;

737 headers?: Record<string, string>;

738};

739```

740 

741#### `McpSdkServerConfigWithInstance`

742 

743```typescript theme={null}

744type McpSdkServerConfigWithInstance = {

745 type: "sdk";

746 name: string;

747 instance: McpServer;

748};

749```

750 

751#### `McpClaudeAIProxyServerConfig`

752 

753```typescript theme={null}

754type McpClaudeAIProxyServerConfig = {

755 type: "claudeai-proxy";

756 url: string;

757 id: string;

758};

759```

760 

761### `SdkPluginConfig`

762 

763Konfiguration zum Laden von Plugins im SDK.

764 

765```typescript theme={null}

766type SdkPluginConfig = {

767 type: "local";

768 path: string;

769};

770```

771 

772| Feld | Typ | Beschreibung |

773| :----- | :-------- | :----------------------------------------------------------- |

774| `type` | `'local'` | Muss `'local'` sein (derzeit nur lokale Plugins unterstützt) |

775| `path` | `string` | Absoluter oder relativer Pfad zum Plugin-Verzeichnis |

776 

777**Beispiel:**

778 

779```typescript theme={null}

780plugins: [

781 { type: "local", path: "./my-plugin" },

782 { type: "local", path: "/absolute/path/to/plugin" }

783];

784```

785 

786Vollständige Informationen zum Erstellen und Verwenden von Plugins finden Sie unter [Plugins](/de/agent-sdk/plugins).

787 

788## Nachrichtentypen

789 

790### `SDKMessage`

791 

792Union-Typ aller möglichen Nachrichten, die von der Abfrage zurückgegeben werden.

793 

794```typescript theme={null}

795type SDKMessage =

796 | SDKAssistantMessage

797 | SDKUserMessage

798 | SDKUserMessageReplay

799 | SDKResultMessage

800 | SDKSystemMessage

801 | SDKPartialAssistantMessage

802 | SDKCompactBoundaryMessage

803 | SDKStatusMessage

804 | SDKLocalCommandOutputMessage

805 | SDKHookStartedMessage

806 | SDKHookProgressMessage

807 | SDKHookResponseMessage

808 | SDKPluginInstallMessage

809 | SDKToolProgressMessage

810 | SDKAuthStatusMessage

811 | SDKTaskNotificationMessage

812 | SDKTaskStartedMessage

813 | SDKTaskProgressMessage

814 | SDKTaskUpdatedMessage

815 | SDKFilesPersistedEvent

816 | SDKToolUseSummaryMessage

817 | SDKRateLimitEvent

818 | SDKPromptSuggestionMessage;

819```

820 

821### `SDKAssistantMessage`

822 

823Assistenten-Antwortnachricht.

824 

825```typescript theme={null}

826type SDKAssistantMessage = {

827 type: "assistant";

828 uuid: UUID;

829 session_id: string;

830 message: BetaMessage; // Aus Anthropic SDK

831 parent_tool_use_id: string | null;

832 error?: SDKAssistantMessageError;

833};

834```

835 

836Das `message`-Feld ist eine [`BetaMessage`](https://platform.claude.com/docs/de/api/messages/create) aus dem Anthropic SDK. Es enthält Felder wie `id`, `content`, `model`, `stop_reason` und `usage`.

837 

838`SDKAssistantMessageError` ist einer von: `'authentication_failed'`, `'oauth_org_not_allowed'`, `'billing_error'`, `'rate_limit'`, `'invalid_request'`, `'server_error'`, `'max_output_tokens'` oder `'unknown'`.

839 

840### `SDKUserMessage`

841 

842Benutzer-Eingabenachricht.

843 

844```typescript theme={null}

845type SDKUserMessage = {

846 type: "user";

847 uuid?: UUID;

848 session_id: string;

849 message: MessageParam; // Aus Anthropic SDK

850 parent_tool_use_id: string | null;

851 isSynthetic?: boolean;

852 shouldQuery?: boolean;

853 tool_use_result?: unknown;

854 origin?: SDKMessageOrigin;

855};

856```

857 

858Setzen Sie `shouldQuery` auf `false`, um die Nachricht zum Transkript hinzuzufügen, ohne einen Assistenten-Turn auszulösen. Die Nachricht wird gehalten und in die nächste Benutzer-Nachricht zusammengeführt, die einen Turn auslöst. Verwenden Sie dies, um Kontext einzufügen, z. B. die Ausgabe eines Befehls, den Sie außerhalb des Bands ausgeführt haben, ohne einen Modell-Aufruf dafür auszugeben.

859 

860### `SDKUserMessageReplay`

861 

862Wiedergegebene Benutzer-Nachricht mit erforderlicher UUID.

863 

864```typescript theme={null}

865type SDKUserMessageReplay = {

866 type: "user";

867 uuid: UUID;

868 session_id: string;

869 message: MessageParam;

870 parent_tool_use_id: string | null;

871 isSynthetic?: boolean;

872 tool_use_result?: unknown;

873 origin?: SDKMessageOrigin;

874 isReplay: true;

875};

876```

877 

878### `SDKResultMessage`

879 

880Endgültige Ergebnis-Nachricht.

881 

882```typescript theme={null}

883type SDKResultMessage =

884 | {

885 type: "result";

886 subtype: "success";

887 uuid: UUID;

888 session_id: string;

889 duration_ms: number;

890 duration_api_ms: number;

891 is_error: boolean;

892 num_turns: number;

893 result: string;

894 stop_reason: string | null;

895 total_cost_usd: number;

896 usage: NonNullableUsage;

897 modelUsage: { [modelName: string]: ModelUsage };

898 permission_denials: SDKPermissionDenial[];

899 structured_output?: unknown;

900 deferred_tool_use?: { id: string; name: string; input: Record<string, unknown> };

901 origin?: SDKMessageOrigin;

902 }

903 | {

904 type: "result";

905 subtype:

906 | "error_max_turns"

907 | "error_during_execution"

908 | "error_max_budget_usd"

909 | "error_max_structured_output_retries";

910 uuid: UUID;

911 session_id: string;

912 duration_ms: number;

913 duration_api_ms: number;

914 is_error: boolean;

915 num_turns: number;

916 stop_reason: string | null;

917 total_cost_usd: number;

918 usage: NonNullableUsage;

919 modelUsage: { [modelName: string]: ModelUsage };

920 permission_denials: SDKPermissionDenial[];

921 errors: string[];

922 origin?: SDKMessageOrigin;

923 };

924```

925 

926Das `origin`-Feld leitet die [`SDKMessageOrigin`](#sdkmessageorigin) der Benutzer-Nachricht weiter, die dieses Ergebnis ausgelöst hat. Wenn eine Hintergrund-Aufgabe beendet wird und das SDK einen synthetischen Follow-up-Turn einfügt, trägt die resultierende `SDKResultMessage` `origin: { kind: "task-notification" }`. Überprüfen Sie dieses Feld, um Ergebnisse zu unterscheiden, die Ihre Eingabeaufforderung beantworten, von Ergebnissen, die für Hintergrund-Aufgaben-Follow-ups ausgegeben werden, damit Sie letztere weiterleiten oder unterdrücken können. Das Feld fehlt bei Ergebnissen, die vor einem Benutzer-Turn ausgegeben werden, z. B. Startfehler.

927 

928Wenn ein `PreToolUse`-Hook `permissionDecision: "defer"` zurückgibt, hat das Ergebnis `stop_reason: "tool_deferred"` und `deferred_tool_use` enthält die `id`, den `name` und die `input` des ausstehenden Tools. Lesen Sie dieses Feld, um die Anfrage in Ihrer eigenen Benutzeroberfläche anzuzeigen, und setzen Sie dann mit derselben `session_id` fort, um fortzufahren. Siehe [Einen Tool-Aufruf für später aufschieben](/de/hooks#defer-a-tool-call-for-later) für die vollständige Runde.

929 

930### `SDKSystemMessage`

931 

932System-Initialisierungsnachricht.

933 

934```typescript theme={null}

935type SDKSystemMessage = {

936 type: "system";

937 subtype: "init";

938 uuid: UUID;

939 session_id: string;

940 agents?: string[];

941 apiKeySource: ApiKeySource;

942 betas?: string[];

943 claude_code_version: string;

944 cwd: string;

945 tools: string[];

946 mcp_servers: {

947 name: string;

948 status: string;

949 }[];

950 model: string;

951 permissionMode: PermissionMode;

952 slash_commands: string[];

953 output_style: string;

954 skills: string[];

955 plugins: { name: string; path: string }[];

956};

957```

958 

959### `SDKPartialAssistantMessage`

960 

961Streaming-Teilnachricht (nur wenn `includePartialMessages` true ist).

962 

963```typescript theme={null}

964type SDKPartialAssistantMessage = {

965 type: "stream_event";

966 event: BetaRawMessageStreamEvent; // Aus Anthropic SDK

967 parent_tool_use_id: string | null;

968 uuid: UUID;

969 session_id: string;

970};

971```

972 

973### `SDKCompactBoundaryMessage`

974 

975Nachricht, die eine Konversations-Komprimierungsgrenze anzeigt.

976 

977```typescript theme={null}

978type SDKCompactBoundaryMessage = {

979 type: "system";

980 subtype: "compact_boundary";

981 uuid: UUID;

982 session_id: string;

983 compact_metadata: {

984 trigger: "manual" | "auto";

985 pre_tokens: number;

986 };

987};

988```

989 

990### `SDKPluginInstallMessage`

991 

992Plugin-Installationsfortschritt-Ereignis. Wird ausgegeben, wenn [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/de/env-vars) gesetzt ist, damit Ihre Agent SDK-Anwendung die Marketplace-Plugin-Installation vor dem ersten Turn verfolgen kann. Die `started`- und `completed`-Status klammern die Gesamtinstallation. Die `installed`- und `failed`-Status melden einzelne Marketplaces und enthalten `name`.

993 

994```typescript theme={null}

995type SDKPluginInstallMessage = {

996 type: "system";

997 subtype: "plugin_install";

998 status: "started" | "installed" | "failed" | "completed";

999 name?: string;

1000 error?: string;

1001 uuid: UUID;

1002 session_id: string;

1003};

1004```

1005 

1006### `SDKPermissionDenial`

1007 

1008Informationen über einen verweigerten Tool-Einsatz.

1009 

1010```typescript theme={null}

1011type SDKPermissionDenial = {

1012 tool_name: string;

1013 tool_use_id: string;

1014 tool_input: Record<string, unknown>;

1015};

1016```

1017 

1018### `SDKMessageOrigin`

1019 

1020Herkunft einer Benutzer-Rolle-Nachricht. Dies erscheint als `origin` auf [`SDKUserMessage`](#sdkusermessage) und wird an die entsprechende [`SDKResultMessage`](#sdkresultmessage) weitergeleitet, damit Sie erkennen können, was einen bestimmten Turn ausgelöst hat.

1021 

1022```typescript theme={null}

1023type SDKMessageOrigin =

1024 | { kind: "human" }

1025 | { kind: "channel"; server: string }

1026 | { kind: "peer"; from: string; name?: string }

1027 | { kind: "task-notification" }

1028 | { kind: "coordinator" };

1029```

1030 

1031| `kind` | Bedeutung |

1032| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |

1033| `human` | Direkte Eingabe vom Endbenutzer. Bei Benutzer-Nachrichten bedeutet auch eine fehlende `origin` menschliche Eingabe. |

1034| `channel` | Nachricht, die auf einem [Kanal](/de/channels) ankommt. `server` ist der Name des Quell-MCP-Servers. |

1035| `peer` | Nachricht von einer anderen Agent-Sitzung über `SendMessage`. `from` ist die Absenderadresse; `name` ist der Anzeigename des Absenders, wenn verfügbar. |

1036| `task-notification` | Synthetischer Turn, der nach Abschluss einer Hintergrund-Aufgabe eingefügt wird. Siehe [`SDKTaskNotificationMessage`](#sdktasknotificationmessage). |

1037| `coordinator` | Nachricht von einem Team-Koordinator in einem [Agent-Team](/de/agent-teams). |

1038 

1039## Hook-Typen

1040 

1041Einen umfassenden Leitfaden zur Verwendung von Hooks mit Beispielen und häufigen Mustern finden Sie im [Hooks-Leitfaden](/de/agent-sdk/hooks).

1042 

1043### `HookEvent`

1044 

1045Verfügbare Hook-Ereignisse.

1046 

1047```typescript theme={null}

1048type HookEvent =

1049 | "PreToolUse"

1050 | "PostToolUse"

1051 | "PostToolUseFailure"

1052 | "PostToolBatch"

1053 | "Notification"

1054 | "UserPromptSubmit"

1055 | "SessionStart"

1056 | "SessionEnd"

1057 | "Stop"

1058 | "SubagentStart"

1059 | "SubagentStop"

1060 | "PreCompact"

1061 | "PermissionRequest"

1062 | "Setup"

1063 | "TeammateIdle"

1064 | "TaskCompleted"

1065 | "ConfigChange"

1066 | "WorktreeCreate"

1067 | "WorktreeRemove";

1068```

1069 

1070### `HookCallback`

1071 

1072Hook-Callback-Funktionstyp.

1073 

1074```typescript theme={null}

1075type HookCallback = (

1076 input: HookInput, // Union aller Hook-Eingabetypen

1077 toolUseID: string | undefined,

1078 options: { signal: AbortSignal }

1079) => Promise<HookJSONOutput>;

1080```

1081 

1082### `HookCallbackMatcher`

1083 

1084Hook-Konfiguration mit optionalem Matcher.

1085 

1086```typescript theme={null}

1087interface HookCallbackMatcher {

1088 matcher?: string;

1089 hooks: HookCallback[];

1090 timeout?: number; // Timeout in Sekunden für alle Hooks in diesem Matcher

1091}

1092```

1093 

1094### `HookInput`

1095 

1096Union-Typ aller Hook-Eingabetypen.

1097 

1098```typescript theme={null}

1099type HookInput =

1100 | PreToolUseHookInput

1101 | PostToolUseHookInput

1102 | PostToolUseFailureHookInput

1103 | PostToolBatchHookInput

1104 | NotificationHookInput

1105 | UserPromptSubmitHookInput

1106 | SessionStartHookInput

1107 | SessionEndHookInput

1108 | StopHookInput

1109 | SubagentStartHookInput

1110 | SubagentStopHookInput

1111 | PreCompactHookInput

1112 | PermissionRequestHookInput

1113 | SetupHookInput

1114 | TeammateIdleHookInput

1115 | TaskCompletedHookInput

1116 | ConfigChangeHookInput

1117 | WorktreeCreateHookInput

1118 | WorktreeRemoveHookInput;

1119```

1120 

1121### `BaseHookInput`

1122 

1123Basis-Schnittstelle, die alle Hook-Eingabetypen erweitern.

1124 

1125```typescript theme={null}

1126type BaseHookInput = {

1127 session_id: string;

1128 transcript_path: string;

1129 cwd: string;

1130 permission_mode?: string;

1131 agent_id?: string;

1132 agent_type?: string;

1133};

1134```

1135 

1136#### `PreToolUseHookInput`

1137 

1138```typescript theme={null}

1139type PreToolUseHookInput = BaseHookInput & {

1140 hook_event_name: "PreToolUse";

1141 tool_name: string;

1142 tool_input: unknown;

1143 tool_use_id: string;

1144};

1145```

1146 

1147#### `PostToolUseHookInput`

1148 

1149```typescript theme={null}

1150type PostToolUseHookInput = BaseHookInput & {

1151 hook_event_name: "PostToolUse";

1152 tool_name: string;

1153 tool_input: unknown;

1154 tool_response: unknown;

1155 tool_use_id: string;

1156 duration_ms?: number;

1157};

1158```

1159 

1160#### `PostToolUseFailureHookInput`

1161 

1162```typescript theme={null}

1163type PostToolUseFailureHookInput = BaseHookInput & {

1164 hook_event_name: "PostToolUseFailure";

1165 tool_name: string;

1166 tool_input: unknown;

1167 tool_use_id: string;

1168 error: string;

1169 is_interrupt?: boolean;

1170 duration_ms?: number;

1171};

1172```

1173 

1174#### `PostToolBatchHookInput`

1175 

1176Wird einmal ausgelöst, nachdem jeder Werkzeugaufruf in einem Batch aufgelöst wurde, bevor die nächste Modellanfrage erfolgt. `tool_response` enthält den serialisierten `tool_result`-Inhalt, den das Modell sieht; die Form unterscheidet sich vom strukturierten `Output`-Objekt von `PostToolUseHookInput`.

1177 

1178```typescript theme={null}

1179type PostToolBatchHookInput = BaseHookInput & {

1180 hook_event_name: "PostToolBatch";

1181 tool_calls: PostToolBatchToolCall[];

1182};

1183 

1184type PostToolBatchToolCall = {

1185 tool_name: string;

1186 tool_input: unknown;

1187 tool_use_id: string;

1188 tool_response?: unknown;

1189};

1190```

1191 

1192#### `NotificationHookInput`

1193 

1194```typescript theme={null}

1195type NotificationHookInput = BaseHookInput & {

1196 hook_event_name: "Notification";

1197 message: string;

1198 title?: string;

1199 notification_type: string;

1200};

1201```

1202 

1203#### `UserPromptSubmitHookInput`

1204 

1205```typescript theme={null}

1206type UserPromptSubmitHookInput = BaseHookInput & {

1207 hook_event_name: "UserPromptSubmit";

1208 prompt: string;

1209};

1210```

1211 

1212#### `SessionStartHookInput`

1213 

1214```typescript theme={null}

1215type SessionStartHookInput = BaseHookInput & {

1216 hook_event_name: "SessionStart";

1217 source: "startup" | "resume" | "clear" | "compact";

1218 agent_type?: string;

1219 model?: string;

1220};

1221```

1222 

1223#### `SessionEndHookInput`

1224 

1225```typescript theme={null}

1226type SessionEndHookInput = BaseHookInput & {

1227 hook_event_name: "SessionEnd";

1228 reason: ExitReason; // String aus EXIT_REASONS-Array

1229};

1230```

1231 

1232#### `StopHookInput`

1233 

1234```typescript theme={null}

1235type StopHookInput = BaseHookInput & {

1236 hook_event_name: "Stop";

1237 stop_hook_active: boolean;

1238 last_assistant_message?: string;

1239};

1240```

1241 

1242#### `SubagentStartHookInput`

1243 

1244```typescript theme={null}

1245type SubagentStartHookInput = BaseHookInput & {

1246 hook_event_name: "SubagentStart";

1247 agent_id: string;

1248 agent_type: string;

1249};

1250```

1251 

1252#### `SubagentStopHookInput`

1253 

1254```typescript theme={null}

1255type SubagentStopHookInput = BaseHookInput & {

1256 hook_event_name: "SubagentStop";

1257 stop_hook_active: boolean;

1258 agent_id: string;

1259 agent_transcript_path: string;

1260 agent_type: string;

1261 last_assistant_message?: string;

1262};

1263```

1264 

1265#### `PreCompactHookInput`

1266 

1267```typescript theme={null}

1268type PreCompactHookInput = BaseHookInput & {

1269 hook_event_name: "PreCompact";

1270 trigger: "manual" | "auto";

1271 custom_instructions: string | null;

1272};

1273```

1274 

1275#### `PermissionRequestHookInput`

1276 

1277```typescript theme={null}

1278type PermissionRequestHookInput = BaseHookInput & {

1279 hook_event_name: "PermissionRequest";

1280 tool_name: string;

1281 tool_input: unknown;

1282 permission_suggestions?: PermissionUpdate[];

1283};

1284```

1285 

1286#### `SetupHookInput`

1287 

1288```typescript theme={null}

1289type SetupHookInput = BaseHookInput & {

1290 hook_event_name: "Setup";

1291 trigger: "init" | "maintenance";

1292};

1293```

1294 

1295#### `TeammateIdleHookInput`

1296 

1297```typescript theme={null}

1298type TeammateIdleHookInput = BaseHookInput & {

1299 hook_event_name: "TeammateIdle";

1300 teammate_name: string;

1301 team_name: string;

1302};

1303```

1304 

1305#### `TaskCompletedHookInput`

1306 

1307```typescript theme={null}

1308type TaskCompletedHookInput = BaseHookInput & {

1309 hook_event_name: "TaskCompleted";

1310 task_id: string;

1311 task_subject: string;

1312 task_description?: string;

1313 teammate_name?: string;

1314 team_name?: string;

1315};

1316```

1317 

1318#### `ConfigChangeHookInput`

1319 

1320```typescript theme={null}

1321type ConfigChangeHookInput = BaseHookInput & {

1322 hook_event_name: "ConfigChange";

1323 source:

1324 | "user_settings"

1325 | "project_settings"

1326 | "local_settings"

1327 | "policy_settings"

1328 | "skills";

1329 file_path?: string;

1330};

1331```

1332 

1333#### `WorktreeCreateHookInput`

1334 

1335```typescript theme={null}

1336type WorktreeCreateHookInput = BaseHookInput & {

1337 hook_event_name: "WorktreeCreate";

1338 name: string;

1339};

1340```

1341 

1342#### `WorktreeRemoveHookInput`

1343 

1344```typescript theme={null}

1345type WorktreeRemoveHookInput = BaseHookInput & {

1346 hook_event_name: "WorktreeRemove";

1347 worktree_path: string;

1348};

1349```

1350 

1351### `HookJSONOutput`

1352 

1353Hook-Rückgabewert.

1354 

1355```typescript theme={null}

1356type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;

1357```

1358 

1359#### `AsyncHookJSONOutput`

1360 

1361```typescript theme={null}

1362type AsyncHookJSONOutput = {

1363 async: true;

1364 asyncTimeout?: number;

1365};

1366```

1367 

1368#### `SyncHookJSONOutput`

1369 

1370```typescript theme={null}

1371type SyncHookJSONOutput = {

1372 continue?: boolean;

1373 suppressOutput?: boolean;

1374 stopReason?: string;

1375 decision?: "approve" | "block";

1376 systemMessage?: string;

1377 reason?: string;

1378 hookSpecificOutput?:

1379 | {

1380 hookEventName: "PreToolUse";

1381 permissionDecision?: "allow" | "deny" | "ask" | "defer";

1382 permissionDecisionReason?: string;

1383 updatedInput?: Record<string, unknown>;

1384 additionalContext?: string;

1385 }

1386 | {

1387 hookEventName: "UserPromptSubmit";

1388 additionalContext?: string;

1389 }

1390 | {

1391 hookEventName: "SessionStart";

1392 additionalContext?: string;

1393 }

1394 | {

1395 hookEventName: "Setup";

1396 additionalContext?: string;

1397 }

1398 | {

1399 hookEventName: "SubagentStart";

1400 additionalContext?: string;

1401 }

1402 | {

1403 hookEventName: "PostToolUse";

1404 additionalContext?: string;

1405 updatedToolOutput?: unknown;

1406 /** @deprecated Verwenden Sie `updatedToolOutput`, das für alle Tools funktioniert. */

1407 updatedMCPToolOutput?: unknown;

1408 }

1409 | {

1410 hookEventName: "PostToolUseFailure";

1411 additionalContext?: string;

1412 }

1413 | {

1414 hookEventName: "PostToolBatch";

1415 additionalContext?: string;

1416 }

1417 | {

1418 hookEventName: "Notification";

1419 additionalContext?: string;

1420 }

1421 | {

1422 hookEventName: "PermissionRequest";

1423 decision:

1424 | {

1425 behavior: "allow";

1426 updatedInput?: Record<string, unknown>;

1427 updatedPermissions?: PermissionUpdate[];

1428 }

1429 | {

1430 behavior: "deny";

1431 message?: string;

1432 interrupt?: boolean;

1433 };

1434 };

1435};

1436```

1437 

1438## Tool-Eingabetypen

1439 

1440Dokumentation von Eingabeschemas für alle integrierten Claude Code-Tools. Diese Typen werden aus `@anthropic-ai/claude-agent-sdk` exportiert und können für typsichere Tool-Interaktionen verwendet werden.

1441 

1442### `ToolInputSchemas`

1443 

1444Union aller Tool-Eingabetypen, exportiert aus `@anthropic-ai/claude-agent-sdk`.

1445 

1446```typescript theme={null}

1447type ToolInputSchemas =

1448 | AgentInput

1449 | AskUserQuestionInput

1450 | BashInput

1451 | TaskOutputInput

1452 | EnterWorktreeInput

1453 | ExitPlanModeInput

1454 | FileEditInput

1455 | FileReadInput

1456 | FileWriteInput

1457 | GlobInput

1458 | GrepInput

1459 | ListMcpResourcesInput

1460 | McpInput

1461 | MonitorInput

1462 | NotebookEditInput

1463 | ReadMcpResourceInput

1464 | SubscribeMcpResourceInput

1465 | SubscribePollingInput

1466 | TaskStopInput

1467 | TodoWriteInput

1468 | UnsubscribeMcpResourceInput

1469 | UnsubscribePollingInput

1470 | WebFetchInput

1471 | WebSearchInput;

1472```

1473 

1474### Agent

1475 

1476**Tool-Name:** `Agent` (zuvor `Task`, das immer noch als Alias akzeptiert wird)

1477 

1478```typescript theme={null}

1479type AgentInput = {

1480 description: string;

1481 prompt: string;

1482 subagent_type: string;

1483 model?: "sonnet" | "opus" | "haiku";

1484 resume?: string;

1485 run_in_background?: boolean;

1486 max_turns?: number;

1487 name?: string;

1488 team_name?: string;

1489 mode?: "acceptEdits" | "bypassPermissions" | "default" | "dontAsk" | "plan";

1490 isolation?: "worktree";

1491};

1492```

1493 

1494Startet einen neuen Agenten, um komplexe, mehrstufige Aufgaben autonom zu bewältigen.

1495 

1496### AskUserQuestion

1497 

1498**Tool-Name:** `AskUserQuestion`

1499 

1500```typescript theme={null}

1501type AskUserQuestionInput = {

1502 questions: Array<{

1503 question: string;

1504 header: string;

1505 options: Array<{ label: string; description: string; preview?: string }>;

1506 multiSelect: boolean;

1507 }>;

1508};

1509```

1510 

1511Stellt dem Benutzer während der Ausführung Klärungsfragen. Siehe [Genehmigungen und Benutzereingaben verarbeiten](/de/agent-sdk/user-input#handle-clarifying-questions) für Verwendungsdetails.

1512 

1513### Bash

1514 

1515**Tool-Name:** `Bash`

1516 

1517```typescript theme={null}

1518type BashInput = {

1519 command: string;

1520 timeout?: number;

1521 description?: string;

1522 run_in_background?: boolean;

1523 dangerouslyDisableSandbox?: boolean;

1524};

1525```

1526 

1527Führt Bash-Befehle in einer persistenten Shell-Sitzung mit optionalem Timeout und Hintergrundausführung aus.

1528 

1529### Monitor

1530 

1531**Tool-Name:** `Monitor`

1532 

1533```typescript theme={null}

1534type MonitorInput = {

1535 command: string;

1536 description: string;

1537 timeout_ms?: number;

1538 persistent?: boolean;

1539};

1540```

1541 

1542Führt ein Hintergrund-Skript aus und liefert jede Stdout-Zeile an Claude als Ereignis, damit es reagieren kann, ohne zu pollen. Setzen Sie `persistent: true` für Sitzungslängen-Watches wie Log-Tails. Monitor folgt den gleichen Berechtigungsregeln wie Bash. Siehe die [Monitor-Tool-Referenz](/de/tools-reference#monitor-tool) für Verhalten und Anbieter-Verfügbarkeit.

1543 

1544### TaskOutput

1545 

1546**Tool-Name:** `TaskOutput`

1547 

1548```typescript theme={null}

1549type TaskOutputInput = {

1550 task_id: string;

1551 block: boolean;

1552 timeout: number;

1553};

1554```

1555 

1556Ruft die Ausgabe einer laufenden oder abgeschlossenen Hintergrund-Aufgabe ab.

1557 

1558### Edit

1559 

1560**Tool-Name:** `Edit`

1561 

1562```typescript theme={null}

1563type FileEditInput = {

1564 file_path: string;

1565 old_string: string;

1566 new_string: string;

1567 replace_all?: boolean;

1568};

1569```

1570 

1571Führt exakte String-Ersetzungen in Dateien durch.

1572 

1573### Read

1574 

1575**Tool-Name:** `Read`

1576 

1577```typescript theme={null}

1578type FileReadInput = {

1579 file_path: string;

1580 offset?: number;

1581 limit?: number;

1582 pages?: string;

1583};

1584```

1585 

1586Liest Dateien aus dem lokalen Dateisystem, einschließlich Text, Bilder, PDFs und Jupyter-Notebooks. Verwenden Sie `pages` für PDF-Seitenbereiche (z. B. `"1-5"`).

1587 

1588### Write

1589 

1590**Tool-Name:** `Write`

1591 

1592```typescript theme={null}

1593type FileWriteInput = {

1594 file_path: string;

1595 content: string;

1596};

1597```

1598 

1599Schreibt eine Datei in das lokale Dateisystem, überschreibt, falls vorhanden.

1600 

1601### Glob

1602 

1603**Tool-Name:** `Glob`

1604 

1605```typescript theme={null}

1606type GlobInput = {

1607 pattern: string;

1608 path?: string;

1609};

1610```

1611 

1612Schnelle Datei-Musterabstimmung, die mit jeder Codebasis-Größe funktioniert.

1613 

1614### Grep

1615 

1616**Tool-Name:** `Grep`

1617 

1618```typescript theme={null}

1619type GrepInput = {

1620 pattern: string;

1621 path?: string;

1622 glob?: string;

1623 type?: string;

1624 output_mode?: "content" | "files_with_matches" | "count";

1625 "-i"?: boolean;

1626 "-n"?: boolean;

1627 "-B"?: number;

1628 "-A"?: number;

1629 "-C"?: number;

1630 context?: number;

1631 head_limit?: number;

1632 offset?: number;

1633 multiline?: boolean;

1634};

1635```

1636 

1637Leistungsstarkes Suchtool, das auf ripgrep mit Regex-Unterstützung basiert.

1638 

1639### TaskStop

1640 

1641**Tool-Name:** `TaskStop`

1642 

1643```typescript theme={null}

1644type TaskStopInput = {

1645 task_id?: string;

1646 shell_id?: string; // Veraltet: Verwenden Sie task_id

1647};

1648```

1649 

1650Beendet eine laufende Hintergrund-Aufgabe oder Shell nach ID.

1651 

1652### NotebookEdit

1653 

1654**Tool-Name:** `NotebookEdit`

1655 

1656```typescript theme={null}

1657type NotebookEditInput = {

1658 notebook_path: string;

1659 cell_id?: string;

1660 new_source: string;

1661 cell_type?: "code" | "markdown";

1662 edit_mode?: "replace" | "insert" | "delete";

1663};

1664```

1665 

1666Bearbeitet Zellen in Jupyter-Notebook-Dateien.

1667 

1668### WebFetch

1669 

1670**Tool-Name:** `WebFetch`

1671 

1672```typescript theme={null}

1673type WebFetchInput = {

1674 url: string;

1675 prompt: string;

1676};

1677```

1678 

1679Ruft Inhalte von einer URL ab und verarbeitet sie mit einem KI-Modell.

1680 

1681### WebSearch

1682 

1683**Tool-Name:** `WebSearch`

1684 

1685```typescript theme={null}

1686type WebSearchInput = {

1687 query: string;

1688 allowed_domains?: string[];

1689 blocked_domains?: string[];

1690};

1691```

1692 

1693Durchsucht das Web und gibt formatierte Ergebnisse zurück.

1694 

1695### TodoWrite

1696 

1697**Tool-Name:** `TodoWrite`

1698 

1699```typescript theme={null}

1700type TodoWriteInput = {

1701 todos: Array<{

1702 content: string;

1703 status: "pending" | "in_progress" | "completed";

1704 activeForm: string;

1705 }>;

1706};

1707```

1708 

1709Erstellt und verwaltet eine strukturierte Aufgabenliste zum Verfolgen des Fortschritts.

1710 

1711### ExitPlanMode

1712 

1713**Tool-Name:** `ExitPlanMode`

1714 

1715```typescript theme={null}

1716type ExitPlanModeInput = {

1717 allowedPrompts?: Array<{

1718 tool: "Bash";

1719 prompt: string;

1720 }>;

1721};

1722```

1723 

1724Beendet den Planungsmodus. Optional gibt Eingabeaufforderungsbasierte Berechtigungen an, die zur Implementierung des Plans erforderlich sind.

1725 

1726### ListMcpResources

1727 

1728**Tool-Name:** `ListMcpResources`

1729 

1730```typescript theme={null}

1731type ListMcpResourcesInput = {

1732 server?: string;

1733};

1734```

1735 

1736Listet verfügbare MCP-Ressourcen von verbundenen Servern auf.

1737 

1738### ReadMcpResource

1739 

1740**Tool-Name:** `ReadMcpResource`

1741 

1742```typescript theme={null}

1743type ReadMcpResourceInput = {

1744 server: string;

1745 uri: string;

1746};

1747```

1748 

1749Liest eine bestimmte MCP-Ressource von einem Server.

1750 

1751### EnterWorktree

1752 

1753**Tool-Name:** `EnterWorktree`

1754 

1755```typescript theme={null}

1756type EnterWorktreeInput = {

1757 name?: string;

1758 path?: string;

1759};

1760```

1761 

1762Erstellt und betritt einen temporären Git-Worktree für isolierte Arbeit. Übergeben Sie `path`, um stattdessen in einen vorhandenen Worktree des aktuellen Repositorys zu wechseln. `name` und `path` schließen sich gegenseitig aus.

1763 

1764## Tool-Ausgabetypen

1765 

1766Dokumentation von Ausgabeschemas für alle integrierten Claude Code-Tools. Diese Typen werden aus `@anthropic-ai/claude-agent-sdk` exportiert und stellen die tatsächlichen Antwortdaten dar, die von jedem Tool zurückgegeben werden.

1767 

1768### `ToolOutputSchemas`

1769 

1770Union aller Tool-Ausgabetypen.

1771 

1772```typescript theme={null}

1773type ToolOutputSchemas =

1774 | AgentOutput

1775 | AskUserQuestionOutput

1776 | BashOutput

1777 | EnterWorktreeOutput

1778 | ExitPlanModeOutput

1779 | FileEditOutput

1780 | FileReadOutput

1781 | FileWriteOutput

1782 | GlobOutput

1783 | GrepOutput

1784 | ListMcpResourcesOutput

1785 | MonitorOutput

1786 | NotebookEditOutput

1787 | ReadMcpResourceOutput

1788 | TaskStopOutput

1789 | TodoWriteOutput

1790 | WebFetchOutput

1791 | WebSearchOutput;

1792```

1793 

1794### Agent

1795 

1796**Tool-Name:** `Agent` (zuvor `Task`, das immer noch als Alias akzeptiert wird)

1797 

1798```typescript theme={null}

1799type AgentOutput =

1800 | {

1801 status: "completed";

1802 agentId: string;

1803 content: Array<{ type: "text"; text: string }>;

1804 totalToolUseCount: number;

1805 totalDurationMs: number;

1806 totalTokens: number;

1807 usage: {

1808 input_tokens: number;

1809 output_tokens: number;

1810 cache_creation_input_tokens: number | null;

1811 cache_read_input_tokens: number | null;

1812 server_tool_use: {

1813 web_search_requests: number;

1814 web_fetch_requests: number;

1815 } | null;

1816 service_tier: ("standard" | "priority" | "batch") | null;

1817 cache_creation: {

1818 ephemeral_1h_input_tokens: number;

1819 ephemeral_5m_input_tokens: number;

1820 } | null;

1821 };

1822 prompt: string;

1823 }

1824 | {

1825 status: "async_launched";

1826 agentId: string;

1827 description: string;

1828 prompt: string;

1829 outputFile: string;

1830 canReadOutputFile?: boolean;

1831 }

1832 | {

1833 status: "sub_agent_entered";

1834 description: string;

1835 message: string;

1836 };

1837```

1838 

1839Gibt das Ergebnis vom Subagenten zurück. Diskriminiert nach dem `status`-Feld: `"completed"` für abgeschlossene Aufgaben, `"async_launched"` für Hintergrund-Aufgaben und `"sub_agent_entered"` für interaktive Subagenten.

1840 

1841### AskUserQuestion

1842 

1843**Tool-Name:** `AskUserQuestion`

1844 

1845```typescript theme={null}

1846type AskUserQuestionOutput = {

1847 questions: Array<{

1848 question: string;

1849 header: string;

1850 options: Array<{ label: string; description: string; preview?: string }>;

1851 multiSelect: boolean;

1852 }>;

1853 answers: Record<string, string>;

1854};

1855```

1856 

1857Gibt die gestellten Fragen und die Antworten des Benutzers zurück.

1858 

1859### Bash

1860 

1861**Tool-Name:** `Bash`

1862 

1863```typescript theme={null}

1864type BashOutput = {

1865 stdout: string;

1866 stderr: string;

1867 rawOutputPath?: string;

1868 interrupted: boolean;

1869 isImage?: boolean;

1870 backgroundTaskId?: string;

1871 backgroundedByUser?: boolean;

1872 dangerouslyDisableSandbox?: boolean;

1873 returnCodeInterpretation?: string;

1874 structuredContent?: unknown[];

1875 persistedOutputPath?: string;

1876 persistedOutputSize?: number;

1877};

1878```

1879 

1880Gibt Befehlsausgabe mit aufgeteiltem Stdout/Stderr zurück. Hintergrund-Befehle enthalten eine `backgroundTaskId`.

1881 

1882### Monitor

1883 

1884**Tool-Name:** `Monitor`

1885 

1886```typescript theme={null}

1887type MonitorOutput = {

1888 taskId: string;

1889 timeoutMs: number;

1890 persistent?: boolean;

1891};

1892```

1893 

1894Gibt die Hintergrund-Aufgaben-ID für den laufenden Monitor zurück. Verwenden Sie diese ID mit `TaskStop`, um die Watch früh zu stornieren.

1895 

1896### Edit

1897 

1898**Tool-Name:** `Edit`

1899 

1900```typescript theme={null}

1901type FileEditOutput = {

1902 filePath: string;

1903 oldString: string;

1904 newString: string;

1905 originalFile: string;

1906 structuredPatch: Array<{

1907 oldStart: number;

1908 oldLines: number;

1909 newStart: number;

1910 newLines: number;

1911 lines: string[];

1912 }>;

1913 userModified: boolean;

1914 replaceAll: boolean;

1915 gitDiff?: {

1916 filename: string;

1917 status: "modified" | "added";

1918 additions: number;

1919 deletions: number;

1920 changes: number;

1921 patch: string;

1922 };

1923};

1924```

1925 

1926Gibt den strukturierten Diff der Bearbeitungsoperation zurück.

1927 

1928### Read

1929 

1930**Tool-Name:** `Read`

1931 

1932```typescript theme={null}

1933type FileReadOutput =

1934 | {

1935 type: "text";

1936 file: {

1937 filePath: string;

1938 content: string;

1939 numLines: number;

1940 startLine: number;

1941 totalLines: number;

1942 };

1943 }

1944 | {

1945 type: "image";

1946 file: {

1947 base64: string;

1948 type: "image/jpeg" | "image/png" | "image/gif" | "image/webp";

1949 originalSize: number;

1950 dimensions?: {

1951 originalWidth?: number;

1952 originalHeight?: number;

1953 displayWidth?: number;

1954 displayHeight?: number;

1955 };

1956 };

1957 }

1958 | {

1959 type: "notebook";

1960 file: {

1961 filePath: string;

1962 cells: unknown[];

1963 };

1964 }

1965 | {

1966 type: "pdf";

1967 file: {

1968 filePath: string;

1969 base64: string;

1970 originalSize: number;

1971 };

1972 }

1973 | {

1974 type: "parts";

1975 file: {

1976 filePath: string;

1977 originalSize: number;

1978 count: number;

1979 outputDir: string;

1980 };

1981 };

1982```

1983 

1984Gibt Dateiinhalte in einem Format zurück, das für den Dateityp geeignet ist. Diskriminiert nach dem `type`-Feld.

1985 

1986### Write

1987 

1988**Tool-Name:** `Write`

1989 

1990```typescript theme={null}

1991type FileWriteOutput = {

1992 type: "create" | "update";

1993 filePath: string;

1994 content: string;

1995 structuredPatch: Array<{

1996 oldStart: number;

1997 oldLines: number;

1998 newStart: number;

1999 newLines: number;

2000 lines: string[];

2001 }>;

2002 originalFile: string | null;

2003 gitDiff?: {

2004 filename: string;

2005 status: "modified" | "added";

2006 additions: number;

2007 deletions: number;

2008 changes: number;

2009 patch: string;

2010 };

2011};

2012```

2013 

2014Gibt das Schreib-Ergebnis mit strukturierten Diff-Informationen zurück.

2015 

2016### Glob

2017 

2018**Tool-Name:** `Glob`

2019 

2020```typescript theme={null}

2021type GlobOutput = {

2022 durationMs: number;

2023 numFiles: number;

2024 filenames: string[];

2025 truncated: boolean;

2026};

2027```

2028 

2029Gibt Dateipfade zurück, die dem Glob-Muster entsprechen, sortiert nach Änderungszeit.

2030 

2031### Grep

2032 

2033**Tool-Name:** `Grep`

2034 

2035```typescript theme={null}

2036type GrepOutput = {

2037 mode?: "content" | "files_with_matches" | "count";

2038 numFiles: number;

2039 filenames: string[];

2040 content?: string;

2041 numLines?: number;

2042 numMatches?: number;

2043 appliedLimit?: number;

2044 appliedOffset?: number;

2045};

2046```

2047 

2048Gibt Suchergebnisse zurück. Die Form variiert je nach `mode`: Dateiliste, Inhalt mit Übereinstimmungen oder Übereinstimmungszahlen.

2049 

2050### TaskStop

2051 

2052**Tool-Name:** `TaskStop`

2053 

2054```typescript theme={null}

2055type TaskStopOutput = {

2056 message: string;

2057 task_id: string;

2058 task_type: string;

2059 command?: string;

2060};

2061```

2062 

2063Gibt Bestätigung nach dem Stoppen der Hintergrund-Aufgabe zurück.

2064 

2065### NotebookEdit

2066 

2067**Tool-Name:** `NotebookEdit`

2068 

2069```typescript theme={null}

2070type NotebookEditOutput = {

2071 new_source: string;

2072 cell_id?: string;

2073 cell_type: "code" | "markdown";

2074 language: string;

2075 edit_mode: string;

2076 error?: string;

2077 notebook_path: string;

2078 original_file: string;

2079 updated_file: string;

2080};

2081```

2082 

2083Gibt das Ergebnis der Notebook-Bearbeitung mit ursprünglichen und aktualisierten Dateiinhalten zurück.

2084 

2085### WebFetch

2086 

2087**Tool-Name:** `WebFetch`

2088 

2089```typescript theme={null}

2090type WebFetchOutput = {

2091 bytes: number;

2092 code: number;

2093 codeText: string;

2094 result: string;

2095 durationMs: number;

2096 url: string;

2097};

2098```

2099 

2100Gibt den abgerufenen Inhalt mit HTTP-Status und Metadaten zurück.

2101 

2102### WebSearch

2103 

2104**Tool-Name:** `WebSearch`

2105 

2106```typescript theme={null}

2107type WebSearchOutput = {

2108 query: string;

2109 results: Array<

2110 | {

2111 tool_use_id: string;

2112 content: Array<{ title: string; url: string }>;

2113 }

2114 | string

2115 >;

2116 durationSeconds: number;

2117};

2118```

2119 

2120Gibt Suchergebnisse aus dem Web zurück.

2121 

2122### TodoWrite

2123 

2124**Tool-Name:** `TodoWrite`

2125 

2126```typescript theme={null}

2127type TodoWriteOutput = {

2128 oldTodos: Array<{

2129 content: string;

2130 status: "pending" | "in_progress" | "completed";

2131 activeForm: string;

2132 }>;

2133 newTodos: Array<{

2134 content: string;

2135 status: "pending" | "in_progress" | "completed";

2136 activeForm: string;

2137 }>;

2138};

2139```

2140 

2141Gibt die vorherigen und aktualisierten Aufgabenlisten zurück.

2142 

2143### ExitPlanMode

2144 

2145**Tool-Name:** `ExitPlanMode`

2146 

2147```typescript theme={null}

2148type ExitPlanModeOutput = {

2149 plan: string | null;

2150 isAgent: boolean;

2151 filePath?: string;

2152 hasTaskTool?: boolean;

2153 awaitingLeaderApproval?: boolean;

2154 requestId?: string;

2155};

2156```

2157 

2158Gibt den Planzustand nach dem Beenden des Planungsmodus zurück.

2159 

2160### ListMcpResources

2161 

2162**Tool-Name:** `ListMcpResources`

2163 

2164```typescript theme={null}

2165type ListMcpResourcesOutput = Array<{

2166 uri: string;

2167 name: string;

2168 mimeType?: string;

2169 description?: string;

2170 server: string;

2171}>;

2172```

2173 

2174Gibt ein Array verfügbarer MCP-Ressourcen zurück.

2175 

2176### ReadMcpResource

2177 

2178**Tool-Name:** `ReadMcpResource`

2179 

2180```typescript theme={null}

2181type ReadMcpResourceOutput = {

2182 contents: Array<{

2183 uri: string;

2184 mimeType?: string;

2185 text?: string;

2186 }>;

2187};

2188```

2189 

2190Gibt die Inhalte der angeforderten MCP-Ressource zurück.

2191 

2192### EnterWorktree

2193 

2194**Tool-Name:** `EnterWorktree`

2195 

2196```typescript theme={null}

2197type EnterWorktreeOutput = {

2198 worktreePath: string;

2199 worktreeBranch?: string;

2200 message: string;

2201};

2202```

2203 

2204Gibt Informationen über den Git-Worktree zurück.

2205 

2206## Berechtigungstypen

2207 

2208### `PermissionUpdate`

2209 

2210Operationen zum Aktualisieren von Berechtigungen.

2211 

2212```typescript theme={null}

2213type PermissionUpdate =

2214 | {

2215 type: "addRules";

2216 rules: PermissionRuleValue[];

2217 behavior: PermissionBehavior;

2218 destination: PermissionUpdateDestination;

2219 }

2220 | {

2221 type: "replaceRules";

2222 rules: PermissionRuleValue[];

2223 behavior: PermissionBehavior;

2224 destination: PermissionUpdateDestination;

2225 }

2226 | {

2227 type: "removeRules";

2228 rules: PermissionRuleValue[];

2229 behavior: PermissionBehavior;

2230 destination: PermissionUpdateDestination;

2231 }

2232 | {

2233 type: "setMode";

2234 mode: PermissionMode;

2235 destination: PermissionUpdateDestination;

2236 }

2237 | {

2238 type: "addDirectories";

2239 directories: string[];

2240 destination: PermissionUpdateDestination;

2241 }

2242 | {

2243 type: "removeDirectories";

2244 directories: string[];

2245 destination: PermissionUpdateDestination;

2246 };

2247```

2248 

2249### `PermissionBehavior`

2250 

2251```typescript theme={null}

2252type PermissionBehavior = "allow" | "deny" | "ask";

2253```

2254 

2255### `PermissionUpdateDestination`

2256 

2257```typescript theme={null}

2258type PermissionUpdateDestination =

2259 | "userSettings" // Globale Benutzereinstellungen

2260 | "projectSettings" // Pro-Verzeichnis-Projekteinstellungen

2261 | "localSettings" // Gitignorierte lokale Einstellungen

2262 | "session" // Nur aktuelle Sitzung

2263 | "cliArg"; // CLI-Argument

2264```

2265 

2266### `PermissionRuleValue`

2267 

2268```typescript theme={null}

2269type PermissionRuleValue = {

2270 toolName: string;

2271 ruleContent?: string;

2272};

2273```

2274 

2275## Andere Typen

2276 

2277### `ApiKeySource`

2278 

2279```typescript theme={null}

2280type ApiKeySource = "user" | "project" | "org" | "temporary" | "oauth";

2281```

2282 

2283### `SdkBeta`

2284 

2285Verfügbare Beta-Funktionen, die über die `betas`-Option aktiviert werden können. Siehe [Beta-Header](https://platform.claude.com/docs/de/api/beta-headers) für weitere Informationen.

2286 

2287```typescript theme={null}

2288type SdkBeta = "context-1m-2025-08-07";

2289```

2290 

2291<Warning>

2292 Das `context-1m-2025-08-07`-Beta ist ab dem 30. April 2026 veraltet. Das Übergeben dieses Wertes mit Claude Sonnet 4.5 oder Sonnet 4 hat keine Auswirkung, und Anfragen, die das Standard-200k-Token-Kontextfenster überschreiten, geben einen Fehler zurück. Um ein 1M-Token-Kontextfenster zu verwenden, migrieren Sie zu [Claude Sonnet 4.6, Claude Opus 4.6 oder Claude Opus 4.7](https://platform.claude.com/docs/de/about-claude/models/overview), die 1M-Kontext zu Standardpreisen ohne Beta-Header enthalten.

2293</Warning>

2294 

2295### `SlashCommand`

2296 

2297Informationen über einen verfügbaren Slash-Befehl.

2298 

2299```typescript theme={null}

2300type SlashCommand = {

2301 name: string;

2302 description: string;

2303 argumentHint: string;

2304 aliases?: string[];

2305};

2306```

2307 

2308### `ModelInfo`

2309 

2310Informationen über ein verfügbares Modell.

2311 

2312```typescript theme={null}

2313type ModelInfo = {

2314 value: string;

2315 displayName: string;

2316 description: string;

2317 supportsEffort?: boolean;

2318 supportedEffortLevels?: ("low" | "medium" | "high" | "xhigh" | "max")[];

2319 supportsAdaptiveThinking?: boolean;

2320 supportsFastMode?: boolean;

2321};

2322```

2323 

2324### `AgentInfo`

2325 

2326Informationen über einen verfügbaren Subagenten, der über das Agent-Tool aufgerufen werden kann.

2327 

2328```typescript theme={null}

2329type AgentInfo = {

2330 name: string;

2331 description: string;

2332 model?: string;

2333};

2334```

2335 

2336| Feld | Typ | Beschreibung |

2337| :------------ | :-------------------- | :---------------------------------------------------------------------------------------- |

2338| `name` | `string` | Agent-Typ-Identifikator (z. B. `"Explore"`, `"general-purpose"`) |

2339| `description` | `string` | Beschreibung, wann dieser Agent verwendet werden soll |

2340| `model` | `string \| undefined` | Modell-Alias, den dieser Agent verwendet. Wenn weggelassen, erbt das übergeordnete Modell |

2341 

2342### `McpServerStatus`

2343 

2344Status eines verbundenen MCP-Servers.

2345 

2346```typescript theme={null}

2347type McpServerStatus = {

2348 name: string;

2349 status: "connected" | "failed" | "needs-auth" | "pending" | "disabled";

2350 serverInfo?: {

2351 name: string;

2352 version: string;

2353 };

2354 error?: string;

2355 config?: McpServerStatusConfig;

2356 scope?: string;

2357 tools?: {

2358 name: string;

2359 description?: string;

2360 annotations?: {

2361 readOnly?: boolean;

2362 destructive?: boolean;

2363 openWorld?: boolean;

2364 };

2365 }[];

2366};

2367```

2368 

2369### `McpServerStatusConfig`

2370 

2371Die Konfiguration eines MCP-Servers, wie von `mcpServerStatus()` gemeldet. Dies ist die Union aller MCP-Server-Transporttypen.

2372 

2373```typescript theme={null}

2374type McpServerStatusConfig =

2375 | McpStdioServerConfig

2376 | McpSSEServerConfig

2377 | McpHttpServerConfig

2378 | McpSdkServerConfig

2379 | McpClaudeAIProxyServerConfig;

2380```

2381 

2382Siehe [`McpServerConfig`](#mcp-server-config) für Details zu jedem Transporttyp.

2383 

2384### `AccountInfo`

2385 

2386Kontoinformationen für den authentifizierten Benutzer.

2387 

2388```typescript theme={null}

2389type AccountInfo = {

2390 email?: string;

2391 organization?: string;

2392 subscriptionType?: string;

2393 tokenSource?: string;

2394 apiKeySource?: string;

2395};

2396```

2397 

2398### `ModelUsage`

2399 

2400Pro-Modell-Nutzungsstatistiken, die in Ergebnis-Nachrichten zurückgegeben werden. Der `costUSD`-Wert ist eine clientseitige Schätzung. Siehe [Kosten und Nutzung verfolgen](/de/agent-sdk/cost-tracking) für Abrechnungsvorbehalt.

2401 

2402```typescript theme={null}

2403type ModelUsage = {

2404 inputTokens: number;

2405 outputTokens: number;

2406 cacheReadInputTokens: number;

2407 cacheCreationInputTokens: number;

2408 webSearchRequests: number;

2409 costUSD: number;

2410 contextWindow: number;

2411 maxOutputTokens: number;

2412};

2413```

2414 

2415### `ConfigScope`

2416 

2417```typescript theme={null}

2418type ConfigScope = "local" | "user" | "project";

2419```

2420 

2421### `NonNullableUsage`

2422 

2423Eine Version von [`Usage`](#usage) mit allen nullable Feldern, die nicht nullable gemacht werden.

2424 

2425```typescript theme={null}

2426type NonNullableUsage = {

2427 [K in keyof Usage]: NonNullable<Usage[K]>;

2428};

2429```

2430 

2431### `Usage`

2432 

2433Token-Nutzungsstatistiken (aus `@anthropic-ai/sdk`).

2434 

2435```typescript theme={null}

2436type Usage = {

2437 input_tokens: number | null;

2438 output_tokens: number | null;

2439 cache_creation_input_tokens?: number | null;

2440 cache_read_input_tokens?: number | null;

2441};

2442```

2443 

2444### `CallToolResult`

2445 

2446MCP-Tool-Ergebnistyp (aus `@modelcontextprotocol/sdk/types.js`).

2447 

2448```typescript theme={null}

2449type CallToolResult = {

2450 content: Array<{

2451 type: "text" | "image" | "resource";

2452 // Zusätzliche Felder variieren je nach Typ

2453 }>;

2454 isError?: boolean;

2455};

2456```

2457 

2458### `ThinkingConfig`

2459 

2460Steuert das Denk-/Reasoning-Verhalten von Claude. Hat Vorrang vor dem veralteten `maxThinkingTokens`.

2461 

2462```typescript theme={null}

2463type ThinkingConfig =

2464 | { type: "adaptive" } // Das Modell bestimmt, wann und wie viel zu denken ist (Opus 4.6+)

2465 | { type: "enabled"; budgetTokens?: number } // Festes Denk-Token-Budget

2466 | { type: "disabled" }; // Kein erweitertes Denken

2467```

2468 

2469### `SpawnedProcess`

2470 

2471Schnittstelle für benutzerdefiniertes Process-Spawning (verwendet mit `spawnClaudeCodeProcess`-Option). `ChildProcess` erfüllt bereits diese Schnittstelle.

2472 

2473```typescript theme={null}

2474interface SpawnedProcess {

2475 stdin: Writable;

2476 stdout: Readable;

2477 readonly killed: boolean;

2478 readonly exitCode: number | null;

2479 kill(signal: NodeJS.Signals): boolean;

2480 on(

2481 event: "exit",

2482 listener: (code: number | null, signal: NodeJS.Signals | null) => void

2483 ): void;

2484 on(event: "error", listener: (error: Error) => void): void;

2485 once(

2486 event: "exit",

2487 listener: (code: number | null, signal: NodeJS.Signals | null) => void

2488 ): void;

2489 once(event: "error", listener: (error: Error) => void): void;

2490 off(

2491 event: "exit",

2492 listener: (code: number | null, signal: NodeJS.Signals | null) => void

2493 ): void;

2494 off(event: "error", listener: (error: Error) => void): void;

2495}

2496```

2497 

2498### `SpawnOptions`

2499 

2500Optionen, die an die benutzerdefinierte Spawn-Funktion übergeben werden.

2501 

2502```typescript theme={null}

2503interface SpawnOptions {

2504 command: string;

2505 args: string[];

2506 cwd?: string;

2507 env: Record<string, string | undefined>;

2508 signal: AbortSignal;

2509}

2510```

2511 

2512### `McpSetServersResult`

2513 

2514Ergebnis einer `setMcpServers()`-Operation.

2515 

2516```typescript theme={null}

2517type McpSetServersResult = {

2518 added: string[];

2519 removed: string[];

2520 errors: Record<string, string>;

2521};

2522```

2523 

2524### `RewindFilesResult`

2525 

2526Ergebnis einer `rewindFiles()`-Operation.

2527 

2528```typescript theme={null}

2529type RewindFilesResult = {

2530 canRewind: boolean;

2531 error?: string;

2532 filesChanged?: string[];

2533 insertions?: number;

2534 deletions?: number;

2535};

2536```

2537 

2538### `SDKStatusMessage`

2539 

2540Status-Update-Nachricht (z. B. Komprimierung).

2541 

2542```typescript theme={null}

2543type SDKStatusMessage = {

2544 type: "system";

2545 subtype: "status";

2546 status: "compacting" | null;

2547 permissionMode?: PermissionMode;

2548 uuid: UUID;

2549 session_id: string;

2550};

2551```

2552 

2553### `SDKTaskNotificationMessage`

2554 

2555Benachrichtigung, wenn eine Hintergrund-Aufgabe abgeschlossen, fehlgeschlagen oder gestoppt wird. Hintergrund-Aufgaben umfassen `run_in_background` Bash-Befehle, [Monitor](#monitor)-Watches und Hintergrund-Subagenten.

2556 

2557```typescript theme={null}

2558type SDKTaskNotificationMessage = {

2559 type: "system";

2560 subtype: "task_notification";

2561 task_id: string;

2562 tool_use_id?: string;

2563 status: "completed" | "failed" | "stopped";

2564 output_file: string;

2565 summary: string;

2566 usage?: {

2567 total_tokens: number;

2568 tool_uses: number;

2569 duration_ms: number;

2570 };

2571 uuid: UUID;

2572 session_id: string;

2573};

2574```

2575 

2576### `SDKToolUseSummaryMessage`

2577 

2578Zusammenfassung der Tool-Nutzung in einer Konversation.

2579 

2580```typescript theme={null}

2581type SDKToolUseSummaryMessage = {

2582 type: "tool_use_summary";

2583 summary: string;

2584 preceding_tool_use_ids: string[];

2585 uuid: UUID;

2586 session_id: string;

2587};

2588```

2589 

2590### `SDKHookStartedMessage`

2591 

2592Wird ausgegeben, wenn ein Hook mit der Ausführung beginnt.

2593 

2594```typescript theme={null}

2595type SDKHookStartedMessage = {

2596 type: "system";

2597 subtype: "hook_started";

2598 hook_id: string;

2599 hook_name: string;

2600 hook_event: string;

2601 uuid: UUID;

2602 session_id: string;

2603};

2604```

2605 

2606### `SDKHookProgressMessage`

2607 

2608Wird ausgegeben, während ein Hook läuft, mit Stdout/Stderr-Ausgabe.

2609 

2610```typescript theme={null}

2611type SDKHookProgressMessage = {

2612 type: "system";

2613 subtype: "hook_progress";

2614 hook_id: string;

2615 hook_name: string;

2616 hook_event: string;

2617 stdout: string;

2618 stderr: string;

2619 output: string;

2620 uuid: UUID;

2621 session_id: string;

2622};

2623```

2624 

2625### `SDKHookResponseMessage`

2626 

2627Wird ausgegeben, wenn ein Hook die Ausführung beendet.

2628 

2629```typescript theme={null}

2630type SDKHookResponseMessage = {

2631 type: "system";

2632 subtype: "hook_response";

2633 hook_id: string;

2634 hook_name: string;

2635 hook_event: string;

2636 output: string;

2637 stdout: string;

2638 stderr: string;

2639 exit_code?: number;

2640 outcome: "success" | "error" | "cancelled";

2641 uuid: UUID;

2642 session_id: string;

2643};

2644```

2645 

2646### `SDKToolProgressMessage`

2647 

2648Wird regelmäßig ausgegeben, während ein Tool ausgeführt wird, um Fortschritt anzuzeigen.

2649 

2650```typescript theme={null}

2651type SDKToolProgressMessage = {

2652 type: "tool_progress";

2653 tool_use_id: string;

2654 tool_name: string;

2655 parent_tool_use_id: string | null;

2656 elapsed_time_seconds: number;

2657 task_id?: string;

2658 uuid: UUID;

2659 session_id: string;

2660};

2661```

2662 

2663### `SDKAuthStatusMessage`

2664 

2665Wird während Authentifizierungsflüssen ausgegeben.

2666 

2667```typescript theme={null}

2668type SDKAuthStatusMessage = {

2669 type: "auth_status";

2670 isAuthenticating: boolean;

2671 output: string[];

2672 error?: string;

2673 uuid: UUID;

2674 session_id: string;

2675};

2676```

2677 

2678### `SDKTaskStartedMessage`

2679 

2680Wird ausgegeben, wenn eine Hintergrund-Aufgabe beginnt. Das `task_type`-Feld ist `"local_bash"` für Hintergrund-Bash-Befehle und [Monitor](#monitor)-Watches, `"local_agent"` für Subagenten oder `"remote_agent"`.

2681 

2682```typescript theme={null}

2683type SDKTaskStartedMessage = {

2684 type: "system";

2685 subtype: "task_started";

2686 task_id: string;

2687 tool_use_id?: string;

2688 description: string;

2689 task_type?: string;

2690 uuid: UUID;

2691 session_id: string;

2692};

2693```

2694 

2695### `SDKTaskProgressMessage`

2696 

2697Wird regelmäßig ausgegeben, während eine Hintergrund-Aufgabe läuft.

2698 

2699```typescript theme={null}

2700type SDKTaskProgressMessage = {

2701 type: "system";

2702 subtype: "task_progress";

2703 task_id: string;

2704 tool_use_id?: string;

2705 description: string;

2706 usage: {

2707 total_tokens: number;

2708 tool_uses: number;

2709 duration_ms: number;

2710 };

2711 last_tool_name?: string;

2712 uuid: UUID;

2713 session_id: string;

2714};

2715```

2716 

2717### `SDKTaskUpdatedMessage`

2718 

2719Wird ausgegeben, wenn sich der Status einer Hintergrund-Aufgabe ändert, z. B. wenn sie von `running` zu `completed` übergeht. Führen Sie `patch` in Ihre lokale Aufgabenkarte zusammen, die nach `task_id` indiziert ist. Das `end_time`-Feld ist ein Unix-Epoch-Zeitstempel in Millisekunden, vergleichbar mit `Date.now()`.

2720 

2721```typescript theme={null}

2722type SDKTaskUpdatedMessage = {

2723 type: "system";

2724 subtype: "task_updated";

2725 task_id: string;

2726 patch: {

2727 status?: "pending" | "running" | "completed" | "failed" | "killed";

2728 description?: string;

2729 end_time?: number;

2730 total_paused_ms?: number;

2731 error?: string;

2732 is_backgrounded?: boolean;

2733 };

2734 uuid: UUID;

2735 session_id: string;

2736};

2737```

2738 

2739### `SDKFilesPersistedEvent`

2740 

2741Wird ausgegeben, wenn Datei-Checkpoints auf der Festplatte persistiert werden.

2742 

2743```typescript theme={null}

2744type SDKFilesPersistedEvent = {

2745 type: "system";

2746 subtype: "files_persisted";

2747 files: { filename: string; file_id: string }[];

2748 failed: { filename: string; error: string }[];

2749 processed_at: string;

2750 uuid: UUID;

2751 session_id: string;

2752};

2753```

2754 

2755### `SDKRateLimitEvent`

2756 

2757Wird ausgegeben, wenn die Sitzung auf ein Ratenlimit trifft.

2758 

2759```typescript theme={null}

2760type SDKRateLimitEvent = {

2761 type: "rate_limit_event";

2762 rate_limit_info: {

2763 status: "allowed" | "allowed_warning" | "rejected";

2764 resetsAt?: number;

2765 utilization?: number;

2766 };

2767 uuid: UUID;

2768 session_id: string;

2769};

2770```

2771 

2772### `SDKLocalCommandOutputMessage`

2773 

2774Ausgabe aus einem lokalen Slash-Befehl (z. B. `/voice` oder `/usage`). Wird als Assistenten-ähnlicher Text im Transkript angezeigt.

2775 

2776```typescript theme={null}

2777type SDKLocalCommandOutputMessage = {

2778 type: "system";

2779 subtype: "local_command_output";

2780 content: string;

2781 uuid: UUID;

2782 session_id: string;

2783};

2784```

2785 

2786### `SDKPromptSuggestionMessage`

2787 

2788Wird nach jedem Turn ausgegeben, wenn `promptSuggestions` aktiviert ist. Enthält eine vorhergesagte nächste Benutzer-Eingabeaufforderung.

2789 

2790```typescript theme={null}

2791type SDKPromptSuggestionMessage = {

2792 type: "prompt_suggestion";

2793 suggestion: string;

2794 uuid: UUID;

2795 session_id: string;

2796};

2797```

2798 

2799### `AbortError`

2800 

2801Benutzerdefinierte Fehlerklasse für Abbruchoperationen.

2802 

2803```typescript theme={null}

2804class AbortError extends Error {}

2805```

2806 

2807## Sandbox-Konfiguration

2808 

2809### `SandboxSettings`

2810 

2811Konfiguration für Sandbox-Verhalten. Verwenden Sie dies, um Command-Sandboxing zu aktivieren und Netzwerkbeschränkungen programmatisch zu konfigurieren.

2812 

2813```typescript theme={null}

2814type SandboxSettings = {

2815 enabled?: boolean;

2816 autoAllowBashIfSandboxed?: boolean;

2817 excludedCommands?: string[];

2818 allowUnsandboxedCommands?: boolean;

2819 network?: SandboxNetworkConfig;

2820 filesystem?: SandboxFilesystemConfig;

2821 ignoreViolations?: Record<string, string[]>;

2822 enableWeakerNestedSandbox?: boolean;

2823 ripgrep?: { command: string; args?: string[] };

2824};

2825```

2826 

2827| Eigenschaft | Typ | Standard | Beschreibung |

2828| :-------------------------- | :------------------------------------------------------ | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2829| `enabled` | `boolean` | `false` | Aktivieren Sie den Sandbox-Modus für die Befehlsausführung |

2830| `autoAllowBashIfSandboxed` | `boolean` | `true` | Bash-Befehle automatisch genehmigen, wenn Sandbox aktiviert ist |

2831| `excludedCommands` | `string[]` | `[]` | Befehle, die immer Sandbox-Beschränkungen umgehen (z. B. `['docker']`). Diese werden automatisch ohne Modellbeteiligung unsandboxed ausgeführt |

2832| `allowUnsandboxedCommands` | `boolean` | `true` | Erlauben Sie dem Modell, die Ausführung von Befehlen außerhalb der Sandbox anzufordern. Wenn `true`, kann das Modell `dangerouslyDisableSandbox` in der Tool-Eingabe setzen, was auf das [Berechtigungssystem](#permissions-fallback-for-unsandboxed-commands) zurückfällt |

2833| `network` | [`SandboxNetworkConfig`](#sandbox-network-config) | `undefined` | Netzwerkspezifische Sandbox-Konfiguration |

2834| `filesystem` | [`SandboxFilesystemConfig`](#sandbox-filesystem-config) | `undefined` | Dateisystemspezifische Sandbox-Konfiguration für Lese-/Schreibbeschränkungen |

2835| `ignoreViolations` | `Record<string, string[]>` | `undefined` | Zuordnung von Verletzungskategorien zu Mustern zum Ignorieren (z. B. `{ file: ['/tmp/*'], network: ['localhost'] }`) |

2836| `enableWeakerNestedSandbox` | `boolean` | `false` | Aktivieren Sie eine schwächere verschachtelte Sandbox für Kompatibilität |

2837| `ripgrep` | `{ command: string; args?: string[] }` | `undefined` | Benutzerdefinierte ripgrep-Binärkonfiguration für Sandbox-Umgebungen |

2838 

2839#### Beispielverwendung

2840 

2841```typescript theme={null}

2842import { query } from "@anthropic-ai/claude-agent-sdk";

2843 

2844for await (const message of query({

2845 prompt: "Build and test my project",

2846 options: {

2847 sandbox: {

2848 enabled: true,

2849 autoAllowBashIfSandboxed: true,

2850 network: {

2851 allowLocalBinding: true

2852 }

2853 }

2854 }

2855})) {

2856 if ("result" in message) console.log(message.result);

2857}

2858```

2859 

2860<Warning>

2861 **Unix-Socket-Sicherheit:** Die `allowUnixSockets`-Option kann Zugriff auf leistungsstarke Systemdienste gewähren. Beispielsweise gewährt das Zulassen von `/var/run/docker.sock` effektiv vollständigen Host-Systemzugriff über die Docker-API und umgeht die Sandbox-Isolierung. Lassen Sie nur Unix-Sockets zu, die unbedingt erforderlich sind, und verstehen Sie die Sicherheitsauswirkungen jedes einzelnen.

2862</Warning>

2863 

2864### `SandboxNetworkConfig`

2865 

2866Netzwerkspezifische Konfiguration für den Sandbox-Modus.

2867 

2868```typescript theme={null}

2869type SandboxNetworkConfig = {

2870 allowedDomains?: string[];

2871 deniedDomains?: string[];

2872 allowManagedDomainsOnly?: boolean;

2873 allowLocalBinding?: boolean;

2874 allowUnixSockets?: string[];

2875 allowAllUnixSockets?: boolean;

2876 httpProxyPort?: number;

2877 socksProxyPort?: number;

2878};

2879```

2880 

2881| Eigenschaft | Typ | Standard | Beschreibung |

2882| :------------------------ | :--------- | :---------- | :---------------------------------------------------------------------------------------------- |

2883| `allowedDomains` | `string[]` | `[]` | Domänennamen, auf die Sandbox-Prozesse zugreifen können |

2884| `deniedDomains` | `string[]` | `[]` | Domänennamen, auf die Sandbox-Prozesse nicht zugreifen können. Hat Vorrang vor `allowedDomains` |

2885| `allowManagedDomainsOnly` | `boolean` | `false` | Beschränken Sie den Netzwerkzugriff nur auf die Domänen in `allowedDomains` |

2886| `allowLocalBinding` | `boolean` | `false` | Erlauben Sie Prozessen, sich an lokale Ports zu binden (z. B. für Dev-Server) |

2887| `allowUnixSockets` | `string[]` | `[]` | Unix-Socket-Pfade, auf die Prozesse zugreifen können (z. B. Docker-Socket) |

2888| `allowAllUnixSockets` | `boolean` | `false` | Erlauben Sie Zugriff auf alle Unix-Sockets |

2889| `httpProxyPort` | `number` | `undefined` | HTTP-Proxy-Port für Netzwerkanfragen |

2890| `socksProxyPort` | `number` | `undefined` | SOCKS-Proxy-Port für Netzwerkanfragen |

2891 

2892<Note>

2893 Der integrierte Sandbox-Proxy erzwingt `allowedDomains` basierend auf dem angeforderten Hostnamen und beendet oder inspiziert keinen TLS-Verkehr, daher können Techniken wie [Domain Fronting](https://en.wikipedia.org/wiki/Domain_fronting) ihn möglicherweise umgehen. Siehe [Sandboxing-Sicherheitsbeschränkungen](/de/sandboxing#security-limitations) für Details und [Sichere Bereitstellung](/de/agent-sdk/secure-deployment#traffic-forwarding) für die Konfiguration eines TLS-terminierenden Proxys.

2894</Note>

2895 

2896### `SandboxFilesystemConfig`

2897 

2898Dateisystemspezifische Konfiguration für den Sandbox-Modus.

2899 

2900```typescript theme={null}

2901type SandboxFilesystemConfig = {

2902 allowWrite?: string[];

2903 denyWrite?: string[];

2904 denyRead?: string[];

2905};

2906```

2907 

2908| Eigenschaft | Typ | Standard | Beschreibung |

2909| :----------- | :--------- | :------- | :------------------------------------------------ |

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

2911| `denyWrite` | `string[]` | `[]` | Dateipfadmuster, um Schreibzugriff zu verweigern |

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

2913 

2914### Berechtigungen-Fallback für Unsandboxed-Befehle

2915 

2916Wenn `allowUnsandboxedCommands` aktiviert ist, kann das Modell anfordern, Befehle außerhalb der Sandbox auszuführen, indem es `dangerouslyDisableSandbox: true` in der Tool-Eingabe setzt. Diese Anfragen fallen auf das bestehende Berechtigungssystem zurück, was bedeutet, dass Ihr `canUseTool`-Handler aufgerufen wird, sodass Sie benutzerdefinierte Autorisierungslogik implementieren können.

2917 

2918<Note>

2919 **`excludedCommands` vs `allowUnsandboxedCommands`:**

2920 

2921 * `excludedCommands`: Eine statische Liste von Befehlen, die immer automatisch die Sandbox umgehen (z. B. `['docker']`). Das Modell hat keine Kontrolle darüber.

2922 * `allowUnsandboxedCommands`: Lässt das Modell zur Laufzeit entscheiden, ob es die Ausführung außerhalb der Sandbox anfordert, indem es `dangerouslyDisableSandbox: true` in der Tool-Eingabe setzt.

2923</Note>

2924 

2925```typescript theme={null}

2926import { query } from "@anthropic-ai/claude-agent-sdk";

2927 

2928for await (const message of query({

2929 prompt: "Deploy my application",

2930 options: {

2931 sandbox: {

2932 enabled: true,

2933 allowUnsandboxedCommands: true // Modell kann unsandboxed Ausführung anfordern

2934 },

2935 permissionMode: "default",

2936 canUseTool: async (tool, input) => {

2937 // Überprüfen Sie, ob das Modell die Sandbox umgehen möchte

2938 if (tool === "Bash" && input.dangerouslyDisableSandbox) {

2939 // Das Modell fordert an, diesen Befehl außerhalb der Sandbox auszuführen

2940 console.log(`Unsandboxed command requested: ${input.command}`);

2941 

2942 if (isCommandAuthorized(input.command)) {

2943 return { behavior: "allow" as const, updatedInput: input };

2944 }

2945 return {

2946 behavior: "deny" as const,

2947 message: "Command not authorized for unsandboxed execution"

2948 };

2949 }

2950 return { behavior: "allow" as const, updatedInput: input };

2951 }

2952 }

2953})) {

2954 if ("result" in message) console.log(message.result);

2955}

2956```

2957 

2958Dieses Muster ermöglicht es Ihnen:

2959 

2960* **Modell-Anfragen prüfen:** Protokollieren Sie, wenn das Modell unsandboxed Ausführung anfordert

2961* **Allowlists implementieren:** Nur bestimmte Befehle dürfen unsandboxed ausgeführt werden

2962* **Genehmigungsworkflows hinzufügen:** Erfordern Sie explizite Autorisierung für privilegierte Operationen

2963 

2964<Warning>

2965 Befehle, die mit `dangerouslyDisableSandbox: true` ausgeführt werden, haben vollständigen Systemzugriff. Stellen Sie sicher, dass Ihr `canUseTool`-Handler diese Anfragen sorgfältig validiert.

2966 

2967 Wenn `permissionMode` auf `bypassPermissions` gesetzt ist und `allowUnsandboxedCommands` aktiviert ist, kann das Modell autonom Befehle außerhalb der Sandbox ausführen, ohne dass Genehmigungsaufforderungen erforderlich sind. Diese Kombination ermöglicht dem Modell effektiv, die Sandbox-Isolierung stillschweigend zu verlassen.

2968</Warning>

2969 

2970## Siehe auch

2971 

2972* [SDK-Übersicht](/de/agent-sdk/overview) - Allgemeine SDK-Konzepte

2973* [Python SDK-Referenz](/de/agent-sdk/python) - Python SDK-Dokumentation

2974* [CLI-Referenz](/de/cli-reference) - Befehlszeilenschnittstelle

2975* [Häufige Workflows](/de/common-workflows) - Schritt-für-Schritt-Anleitungen

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# TypeScript SDK V2 Schnittstelle (Vorschau)

6 

7> Vorschau der vereinfachten V2 TypeScript Agent SDK mit sitzungsbasiertem Send/Stream-Muster für mehrteilige Gespräche.

8 

9<Warning>

10 Die V2-Schnittstelle ist eine **instabile Vorschau**. APIs können sich basierend auf Feedback ändern, bevor sie stabil werden. Einige Funktionen wie Session-Forking sind nur im [V1 SDK](/de/agent-sdk/typescript) verfügbar.

11</Warning>

12 

13Das V2 Claude Agent TypeScript SDK entfernt die Notwendigkeit für asynchrone Generatoren und Yield-Koordination. Dies macht mehrteilige Gespräche einfacher, anstatt den Generator-Status über Turns hinweg zu verwalten, ist jeder Turn ein separater `send()`/`stream()`-Zyklus. Die API-Oberfläche reduziert sich auf drei Konzepte:

14 

15* `createSession()` / `resumeSession()`: Starten oder fortsetzen eines Gesprächs

16* `session.send()`: Eine Nachricht senden

17* `session.stream()`: Die Antwort abrufen

18 

19## Installation

20 

21Die V2-Schnittstelle ist im bestehenden SDK-Paket enthalten:

22 

23```bash theme={null}

24npm install @anthropic-ai/claude-agent-sdk

25```

26 

27<Note>

28 Das SDK bündelt eine native Claude Code-Binärdatei für Ihre Plattform als optionale Abhängigkeit, sodass Sie Claude Code nicht separat installieren müssen.

29</Note>

30 

31## Schnellstart

32 

33### Einmalige Anfrage

34 

35Für einfache Einzelturn-Abfragen, bei denen Sie keine Sitzung beibehalten müssen, verwenden Sie `unstable_v2_prompt()`. Dieses Beispiel sendet eine Mathefrage und protokolliert die Antwort:

36 

37```typescript theme={null}

38import { unstable_v2_prompt } from "@anthropic-ai/claude-agent-sdk";

39 

40const result = await unstable_v2_prompt("What is 2 + 2?", {

41 model: "claude-opus-4-7"

42});

43if (result.subtype === "success") {

44 console.log(result.result);

45}

46```

47 

48<details>

49 <summary>Siehe denselben Vorgang in V1</summary>

50 

51 ```typescript theme={null}

52 import { query } from "@anthropic-ai/claude-agent-sdk";

53 

54 const q = query({

55 prompt: "What is 2 + 2?",

56 options: { model: "claude-opus-4-7" }

57 });

58 

59 for await (const msg of q) {

60 if (msg.type === "result" && msg.subtype === "success") {

61 console.log(msg.result);

62 }

63 }

64 ```

65</details>

66 

67### Grundlegende Sitzung

68 

69Für Interaktionen über eine einzelne Anfrage hinaus erstellen Sie eine Sitzung. V2 trennt das Senden und Streamen in unterschiedliche Schritte:

70 

71* `send()` sendet Ihre Nachricht

72* `stream()` streamt die Antwort zurück

73 

74Diese explizite Trennung macht es einfacher, Logik zwischen Turns hinzuzufügen (wie das Verarbeiten von Antworten vor dem Senden von Folgefragen).

75 

76Das folgende Beispiel erstellt eine Sitzung, sendet „Hello!" an Claude und gibt die Textantwort aus. Es verwendet [`await using`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#using-declarations-and-explicit-resource-management) (TypeScript 5.2+), um die Sitzung automatisch zu schließen, wenn der Block beendet wird. Sie können auch `session.close()` manuell aufrufen.

77 

78```typescript theme={null}

79import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

80 

81await using session = unstable_v2_createSession({

82 model: "claude-opus-4-7"

83});

84 

85await session.send("Hello!");

86for await (const msg of session.stream()) {

87 // Filter for assistant messages to get human-readable output

88 if (msg.type === "assistant") {

89 const text = msg.message.content

90 .filter((block) => block.type === "text")

91 .map((block) => block.text)

92 .join("");

93 console.log(text);

94 }

95}

96```

97 

98<details>

99 <summary>Siehe denselben Vorgang in V1</summary>

100 

101 In V1 fließen sowohl Ein- als auch Ausgabe durch einen einzelnen asynchronen Generator. Für eine grundlegende Anfrage sieht dies ähnlich aus, aber das Hinzufügen von mehrteiliger Logik erfordert eine Umstrukturierung zur Verwendung eines Eingabegenerators.

102 

103 ```typescript theme={null}

104 import { query } from "@anthropic-ai/claude-agent-sdk";

105 

106 const q = query({

107 prompt: "Hello!",

108 options: { model: "claude-opus-4-7" }

109 });

110 

111 for await (const msg of q) {

112 if (msg.type === "assistant") {

113 const text = msg.message.content

114 .filter((block) => block.type === "text")

115 .map((block) => block.text)

116 .join("");

117 console.log(text);

118 }

119 }

120 ```

121</details>

122 

123### Mehrteiliges Gespräch

124 

125Sitzungen behalten den Kontext über mehrere Austausche hinweg bei. Um ein Gespräch fortzusetzen, rufen Sie `send()` erneut in derselben Sitzung auf. Claude merkt sich die vorherigen Turns.

126 

127Dieses Beispiel stellt eine Mathefrage und stellt dann eine Folgefrage, die sich auf die vorherige Antwort bezieht:

128 

129```typescript theme={null}

130import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

131 

132await using session = unstable_v2_createSession({

133 model: "claude-opus-4-7"

134});

135 

136// Turn 1

137await session.send("What is 5 + 3?");

138for await (const msg of session.stream()) {

139 // Filter for assistant messages to get human-readable output

140 if (msg.type === "assistant") {

141 const text = msg.message.content

142 .filter((block) => block.type === "text")

143 .map((block) => block.text)

144 .join("");

145 console.log(text);

146 }

147}

148 

149// Turn 2

150await session.send("Multiply that by 2");

151for await (const msg of session.stream()) {

152 if (msg.type === "assistant") {

153 const text = msg.message.content

154 .filter((block) => block.type === "text")

155 .map((block) => block.text)

156 .join("");

157 console.log(text);

158 }

159}

160```

161 

162<details>

163 <summary>Siehe denselben Vorgang in V1</summary>

164 

165 ```typescript theme={null}

166 import { query } from "@anthropic-ai/claude-agent-sdk";

167 

168 // Must create an async iterable to feed messages

169 async function* createInputStream() {

170 yield {

171 type: "user",

172 session_id: "",

173 message: { role: "user", content: [{ type: "text", text: "What is 5 + 3?" }] },

174 parent_tool_use_id: null

175 };

176 // Must coordinate when to yield next message

177 yield {

178 type: "user",

179 session_id: "",

180 message: { role: "user", content: [{ type: "text", text: "Multiply by 2" }] },

181 parent_tool_use_id: null

182 };

183 }

184 

185 const q = query({

186 prompt: createInputStream(),

187 options: { model: "claude-opus-4-7" }

188 });

189 

190 for await (const msg of q) {

191 if (msg.type === "assistant") {

192 const text = msg.message.content

193 .filter((block) => block.type === "text")

194 .map((block) => block.text)

195 .join("");

196 console.log(text);

197 }

198 }

199 ```

200</details>

201 

202### Sitzung fortsetzen

203 

204Wenn Sie eine Sitzungs-ID aus einer vorherigen Interaktion haben, können Sie diese später fortsetzen. Dies ist nützlich für langfristige Workflows oder wenn Sie Gespräche über Anwendungsneustarts hinweg beibehalten müssen.

205 

206Dieses Beispiel erstellt eine Sitzung, speichert ihre ID, schließt sie und setzt das Gespräch dann fort:

207 

208```typescript theme={null}

209import {

210 unstable_v2_createSession,

211 unstable_v2_resumeSession,

212 type SDKMessage

213} from "@anthropic-ai/claude-agent-sdk";

214 

215// Helper to extract text from assistant messages

216function getAssistantText(msg: SDKMessage): string | null {

217 if (msg.type !== "assistant") return null;

218 return msg.message.content

219 .filter((block) => block.type === "text")

220 .map((block) => block.text)

221 .join("");

222}

223 

224// Create initial session and have a conversation

225const session = unstable_v2_createSession({

226 model: "claude-opus-4-7"

227});

228 

229await session.send("Remember this number: 42");

230 

231// Get the session ID from any received message

232let sessionId: string | undefined;

233for await (const msg of session.stream()) {

234 sessionId = msg.session_id;

235 const text = getAssistantText(msg);

236 if (text) console.log("Initial response:", text);

237}

238 

239console.log("Session ID:", sessionId);

240session.close();

241 

242// Later: resume the session using the stored ID

243await using resumedSession = unstable_v2_resumeSession(sessionId!, {

244 model: "claude-opus-4-7"

245});

246 

247await resumedSession.send("What number did I ask you to remember?");

248for await (const msg of resumedSession.stream()) {

249 const text = getAssistantText(msg);

250 if (text) console.log("Resumed response:", text);

251}

252```

253 

254<details>

255 <summary>Siehe denselben Vorgang in V1</summary>

256 

257 ```typescript theme={null}

258 import { query } from "@anthropic-ai/claude-agent-sdk";

259 

260 // Create initial session

261 const initialQuery = query({

262 prompt: "Remember this number: 42",

263 options: { model: "claude-opus-4-7" }

264 });

265 

266 // Get session ID from any message

267 let sessionId: string | undefined;

268 for await (const msg of initialQuery) {

269 sessionId = msg.session_id;

270 if (msg.type === "assistant") {

271 const text = msg.message.content

272 .filter((block) => block.type === "text")

273 .map((block) => block.text)

274 .join("");

275 console.log("Initial response:", text);

276 }

277 }

278 

279 console.log("Session ID:", sessionId);

280 

281 // Later: resume the session

282 const resumedQuery = query({

283 prompt: "What number did I ask you to remember?",

284 options: {

285 model: "claude-opus-4-7",

286 resume: sessionId

287 }

288 });

289 

290 for await (const msg of resumedQuery) {

291 if (msg.type === "assistant") {

292 const text = msg.message.content

293 .filter((block) => block.type === "text")

294 .map((block) => block.text)

295 .join("");

296 console.log("Resumed response:", text);

297 }

298 }

299 ```

300</details>

301 

302### Bereinigung

303 

304Sitzungen können manuell oder automatisch mit [`await using`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#using-declarations-and-explicit-resource-management) geschlossen werden, einer TypeScript 5.2+-Funktion für automatische Ressourcenbereinigung. Wenn Sie eine ältere TypeScript-Version verwenden oder auf Kompatibilitätsprobleme stoßen, verwenden Sie stattdessen manuelle Bereinigung.

305 

306**Automatische Bereinigung (TypeScript 5.2+):**

307 

308```typescript theme={null}

309import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

310 

311await using session = unstable_v2_createSession({

312 model: "claude-opus-4-7"

313});

314// Session closes automatically when the block exits

315```

316 

317**Manuelle Bereinigung:**

318 

319```typescript theme={null}

320import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

321 

322const session = unstable_v2_createSession({

323 model: "claude-opus-4-7"

324});

325// ... use the session ...

326session.close();

327```

328 

329## API-Referenz

330 

331### `unstable_v2_createSession()`

332 

333Erstellt eine neue Sitzung für mehrteilige Gespräche.

334 

335```typescript theme={null}

336function unstable_v2_createSession(options: {

337 model: string;

338 // Additional options supported

339}): SDKSession;

340```

341 

342### `unstable_v2_resumeSession()`

343 

344Setzt eine vorhandene Sitzung nach ID fort.

345 

346```typescript theme={null}

347function unstable_v2_resumeSession(

348 sessionId: string,

349 options: {

350 model: string;

351 // Additional options supported

352 }

353): SDKSession;

354```

355 

356### `unstable_v2_prompt()`

357 

358Einmalige Komfortfunktion für Einzelturn-Abfragen.

359 

360```typescript theme={null}

361function unstable_v2_prompt(

362 prompt: string,

363 options: {

364 model: string;

365 // Additional options supported

366 }

367): Promise<SDKResultMessage>;

368```

369 

370### SDKSession-Schnittstelle

371 

372```typescript theme={null}

373interface SDKSession {

374 readonly sessionId: string;

375 send(message: string | SDKUserMessage): Promise<void>;

376 stream(): AsyncGenerator<SDKMessage, void>;

377 close(): void;

378}

379```

380 

381## Funktionsverfügbarkeit

382 

383Nicht alle V1-Funktionen sind in V2 noch verfügbar. Die folgenden erfordern die Verwendung des [V1 SDK](/de/agent-sdk/typescript):

384 

385* Session-Forking (`forkSession`-Option)

386* Einige erweiterte Streaming-Eingabemuster

387 

388## Feedback

389 

390Teilen Sie Ihr Feedback zur V2-Schnittstelle mit, bevor sie stabil wird. Melden Sie Probleme und Vorschläge über [GitHub Issues](https://github.com/anthropics/claude-code/issues).

391 

392## Siehe auch

393 

394* [TypeScript SDK-Referenz (V1)](/de/agent-sdk/typescript) - Vollständige V1 SDK-Dokumentation

395* [SDK-Übersicht](/de/agent-sdk/overview) - Allgemeine SDK-Konzepte

396* [V2-Beispiele auf GitHub](https://github.com/anthropics/claude-agent-sdk-demos/tree/main/hello-world-v2) - Funktionierende Code-Beispiele

agent-teams.md +424 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Orchestrieren Sie Teams von Claude Code-Sitzungen

6 

7> Koordinieren Sie mehrere Claude Code-Instanzen, die zusammen als Team arbeiten, mit gemeinsamen Aufgaben, Messaging zwischen Agenten und zentraler Verwaltung.

8 

9<Warning>

10 Agent-Teams sind experimentell und standardmäßig deaktiviert. Aktivieren Sie sie, indem Sie `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` zu Ihrer [settings.json](/de/settings) oder Umgebung hinzufügen. Agent-Teams haben [bekannte Einschränkungen](#limitations) bezüglich Sitzungswiederaufnahme, Aufgabenkoordination und Abschaltungsverhalten.

11</Warning>

12 

13Agent-Teams ermöglichen es Ihnen, mehrere Claude Code-Instanzen zu koordinieren, die zusammenarbeiten. Eine Sitzung fungiert als Team-Lead und koordiniert die Arbeit, weist Aufgaben zu und synthetisiert Ergebnisse. Teammates arbeiten unabhängig, jeder in seinem eigenen Kontextfenster, und kommunizieren direkt miteinander.

14 

15Im Gegensatz zu [subagents](/de/sub-agents), die innerhalb einer einzelnen Sitzung ausgeführt werden und nur an den Hauptagenten berichten können, können Sie auch direkt mit einzelnen Teammates interagieren, ohne den Lead einzubeziehen.

16 

17<Note>

18 Agent-Teams erfordern Claude Code v2.1.32 oder später. Überprüfen Sie Ihre Version mit `claude --version`.

19</Note>

20 

21Diese Seite behandelt:

22 

23* [Wann Agent-Teams verwendet werden](#when-to-use-agent-teams), einschließlich der besten Anwendungsfälle und wie sie sich mit subagents vergleichen

24* [Starten Sie Ihr erstes Agent-Team](#start-your-first-agent-team)

25* [Kontrolle Ihres Agent-Teams](#control-your-agent-team), einschließlich Anzeigemodi, Aufgabenzuweisung und Delegation

26* [Best Practices für parallele Arbeit](#best-practices)

27 

28## Wann Agent-Teams verwendet werden

29 

30Agent-Teams sind am effektivsten für Aufgaben, bei denen parallele Exploration echten Wert bietet. Siehe [Anwendungsbeispiele](#use-case-examples) für vollständige Szenarien. Die stärksten Anwendungsfälle sind:

31 

32* **Recherche und Überprüfung**: mehrere Teammates können verschiedene Aspekte eines Problems gleichzeitig untersuchen und dann ihre Erkenntnisse austauschen und in Frage stellen

33* **Neue Module oder Features**: Teammates können jeweils ein separates Stück besitzen, ohne sich gegenseitig zu behindern

34* **Debugging mit konkurrierenden Hypothesen**: Teammates testen verschiedene Theorien parallel und konvergieren schneller zur Antwort

35* **Schichtenübergreifende Koordination**: Änderungen, die Frontend, Backend und Tests umfassen, jeweils von einem anderen Teammate verwaltet

36 

37Agent-Teams fügen Koordinationsaufwand hinzu und verwenden deutlich mehr Tokens als eine einzelne Sitzung. Sie funktionieren am besten, wenn Teammates unabhängig arbeiten können. Für sequenzielle Aufgaben, Bearbeitungen in derselben Datei oder Arbeit mit vielen Abhängigkeiten sind eine einzelne Sitzung oder [subagents](/de/sub-agents) effektiver.

38 

39### Vergleich mit subagents

40 

41Sowohl Agent-Teams als auch [subagents](/de/sub-agents) ermöglichen es Ihnen, Arbeit zu parallelisieren, aber sie funktionieren unterschiedlich. Wählen Sie basierend darauf, ob Ihre Worker miteinander kommunizieren müssen:

42 

43<Frame caption="Subagents berichten Ergebnisse nur an den Hauptagenten zurück und sprechen nie miteinander. Bei Agent-Teams teilen sich Teammates eine Aufgabenliste, beanspruchen Arbeit und kommunizieren direkt miteinander.">

44 <img src="https://mintcdn.com/claude-code/nsvRFSDNfpSU5nT7/images/subagents-vs-agent-teams-light.png?fit=max&auto=format&n=nsvRFSDNfpSU5nT7&q=85&s=2f8db9b4f3705dd3ab931fbe2d96e42a" className="dark:hidden" alt="Diagramm zum Vergleich von Subagent- und Agent-Team-Architekturen. Subagents werden vom Hauptagenten erzeugt, führen Arbeit aus und berichten Ergebnisse zurück. Agent-Teams koordinieren sich über eine gemeinsame Aufgabenliste, wobei Teammates direkt miteinander kommunizieren." width="4245" height="1615" data-path="images/subagents-vs-agent-teams-light.png" />

45 

46 <img src="https://mintcdn.com/claude-code/nsvRFSDNfpSU5nT7/images/subagents-vs-agent-teams-dark.png?fit=max&auto=format&n=nsvRFSDNfpSU5nT7&q=85&s=d573a037540f2ada6a9ae7d8285b46fd" className="hidden dark:block" alt="Diagramm zum Vergleich von Subagent- und Agent-Team-Architekturen. Subagents werden vom Hauptagenten erzeugt, führen Arbeit aus und berichten Ergebnisse zurück. Agent-Teams koordinieren sich über eine gemeinsame Aufgabenliste, wobei Teammates direkt miteinander kommunizieren." width="4245" height="1615" data-path="images/subagents-vs-agent-teams-dark.png" />

47</Frame>

48 

49| | Subagents | Agent-Teams |

50| :---------------- | :------------------------------------------------------------ | :----------------------------------------------------------- |

51| **Kontext** | Eigenes Kontextfenster; Ergebnisse kehren zum Aufrufer zurück | Eigenes Kontextfenster; vollständig unabhängig |

52| **Kommunikation** | Berichte Ergebnisse nur an den Hauptagenten zurück | Teammates senden sich gegenseitig direkt Nachrichten |

53| **Koordination** | Hauptagent verwaltet alle Arbeiten | Gemeinsame Aufgabenliste mit Selbstkoordination |

54| **Am besten für** | Fokussierte Aufgaben, bei denen nur das Ergebnis zählt | Komplexe Arbeit, die Diskussion und Zusammenarbeit erfordert |

55| **Token-Kosten** | Niedriger: Ergebnisse werden zum Hauptkontext zusammengefasst | Höher: jeder Teammate ist eine separate Claude-Instanz |

56 

57Verwenden Sie subagents, wenn Sie schnelle, fokussierte Worker benötigen, die berichten. Verwenden Sie Agent-Teams, wenn Teammates Erkenntnisse austauschen, sich gegenseitig in Frage stellen und selbst koordinieren müssen.

58 

59## Agent-Teams aktivieren

60 

61Agent-Teams sind standardmäßig deaktiviert. Aktivieren Sie sie, indem Sie die Umgebungsvariable `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` auf `1` setzen, entweder in Ihrer Shell-Umgebung oder über [settings.json](/de/settings):

62 

63```json settings.json theme={null}

64{

65 "env": {

66 "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"

67 }

68}

69```

70 

71## Starten Sie Ihr erstes Agent-Team

72 

73Nach der Aktivierung von Agent-Teams teilen Sie Claude mit, dass Sie ein Agent-Team erstellen möchten, und beschreiben Sie die Aufgabe und die gewünschte Teamstruktur in natürlicher Sprache. Claude erstellt das Team, erzeugt Teammates und koordiniert die Arbeit basierend auf Ihrem Prompt.

74 

75Dieses Beispiel funktioniert gut, weil die drei Rollen unabhängig sind und das Problem erkunden können, ohne aufeinander zu warten:

76 

77```text theme={null}

78I'm designing a CLI tool that helps developers track TODO comments across

79their codebase. Create an agent team to explore this from different angles: one

80teammate on UX, one on technical architecture, one playing devil's advocate.

81```

82 

83Von dort aus erstellt Claude ein Team mit einer [gemeinsamen Aufgabenliste](/de/interactive-mode#task-list), erzeugt Teammates für jede Perspektive, lässt sie das Problem erkunden, synthetisiert Erkenntnisse und versucht, [das Team zu bereinigen](#clean-up-the-team), wenn es fertig ist.

84 

85Das Terminal des Leads listet alle Teammates und ihre aktuelle Arbeit auf. Verwenden Sie Shift+Down, um durch Teammates zu wechseln und ihnen direkt Nachrichten zu senden. Nach dem letzten Teammate wickelt Shift+Down zum Lead zurück.

86 

87Wenn Sie jeden Teammate in seinem eigenen Split-Pane haben möchten, siehe [Wählen Sie einen Anzeigemodus](#choose-a-display-mode).

88 

89## Kontrolle Ihres Agent-Teams

90 

91Teilen Sie dem Lead in natürlicher Sprache mit, was Sie möchten. Es kümmert sich um Teamkoordination, Aufgabenzuweisung und Delegation basierend auf Ihren Anweisungen.

92 

93### Wählen Sie einen Anzeigemodus

94 

95Agent-Teams unterstützen zwei Anzeigemodi:

96 

97* **In-Process**: alle Teammates laufen in Ihrem Hauptterminal. Verwenden Sie Shift+Down, um durch Teammates zu wechseln und geben Sie ein, um ihnen direkt eine Nachricht zu senden. Funktioniert in jedem Terminal, keine zusätzliche Einrichtung erforderlich.

98* **Split Panes**: jeder Teammate erhält seinen eigenen Pane. Sie können die Ausgabe aller gleichzeitig sehen und in einen Pane klicken, um direkt zu interagieren. Erfordert tmux oder iTerm2.

99 

100<Note>

101 `tmux` hat bekannte Einschränkungen auf bestimmten Betriebssystemen und funktioniert traditionell am besten auf macOS. Die Verwendung von `tmux -CC` in iTerm2 ist der empfohlene Einstiegspunkt in `tmux`.

102</Note>

103 

104Der Standard ist `"auto"`, der Split Panes verwendet, wenn Sie bereits in einer tmux-Sitzung ausgeführt werden, und ansonsten In-Process. Die Einstellung `"tmux"` aktiviert den Split-Pane-Modus und erkennt automatisch, ob tmux oder iTerm2 basierend auf Ihrem Terminal verwendet werden soll. Um zu überschreiben, setzen Sie [`teammateMode`](/de/settings#available-settings) in `~/.claude/settings.json`:

105 

106```json theme={null}

107{

108 "teammateMode": "in-process"

109}

110```

111 

112Um den In-Process-Modus für eine einzelne Sitzung zu erzwingen, übergeben Sie ihn als Flag:

113 

114```bash theme={null}

115claude --teammate-mode in-process

116```

117 

118Der Split-Pane-Modus erfordert entweder [tmux](https://github.com/tmux/tmux/wiki) oder iTerm2 mit der [`it2` CLI](https://github.com/mkusaka/it2). Zur manuellen Installation:

119 

120* **tmux**: installieren Sie über den Paketmanager Ihres Systems. Siehe das [tmux Wiki](https://github.com/tmux/tmux/wiki/Installing) für plattformspezifische Anweisungen.

121* **iTerm2**: installieren Sie die [`it2` CLI](https://github.com/mkusaka/it2), aktivieren Sie dann die Python-API in **iTerm2 → Settings → General → Magic → Enable Python API**.

122 

123### Geben Sie Teammates und Modelle an

124 

125Claude entscheidet die Anzahl der zu erzeugenden Teammates basierend auf Ihrer Aufgabe, oder Sie können genau angeben, was Sie möchten:

126 

127```text theme={null}

128Create a team with 4 teammates to refactor these modules in parallel.

129Use Sonnet for each teammate.

130```

131 

132### Genehmigung von Plänen für Teammates erforderlich

133 

134Für komplexe oder riskante Aufgaben können Sie verlangen, dass Teammates planen, bevor sie implementieren. Der Teammate arbeitet im schreibgeschützten Plan-Modus, bis der Lead seinen Ansatz genehmigt:

135 

136```text theme={null}

137Spawn an architect teammate to refactor the authentication module.

138Require plan approval before they make any changes.

139```

140 

141Wenn ein Teammate die Planung abgeschlossen hat, sendet er eine Genehmigungsanfrage an den Lead. Der Lead überprüft den Plan und genehmigt ihn entweder oder lehnt ihn mit Feedback ab. Bei Ablehnung bleibt der Teammate im Plan-Modus, überarbeitet basierend auf dem Feedback und reicht erneut ein. Nach der Genehmigung beendet der Teammate den Plan-Modus und beginnt mit der Implementierung.

142 

143Der Lead trifft Genehmigungsentscheidungen autonom. Um das Urteil des Leads zu beeinflussen, geben Sie ihm Kriterien in Ihrem Prompt, wie z. B. „genehmigen Sie nur Pläne, die Testabdeckung enthalten" oder „lehnen Sie Pläne ab, die das Datenbankschema ändern".

144 

145### Sprechen Sie direkt mit Teammates

146 

147Jeder Teammate ist eine vollständige, unabhängige Claude Code-Sitzung. Sie können jedem Teammate direkt eine Nachricht senden, um zusätzliche Anweisungen zu geben, Folgefragen zu stellen oder seinen Ansatz umzuleiten.

148 

149* **In-Process-Modus**: Verwenden Sie Shift+Down, um durch Teammates zu wechseln, geben Sie dann ein, um ihnen eine Nachricht zu senden. Drücken Sie Enter, um die Sitzung eines Teammates anzuzeigen, dann Escape, um ihren aktuellen Turn zu unterbrechen. Drücken Sie Ctrl+T, um die Aufgabenliste umzuschalten.

150* **Split-Pane-Modus**: klicken Sie in den Pane eines Teammates, um direkt mit seiner Sitzung zu interagieren. Jeder Teammate hat eine vollständige Ansicht seines eigenen Terminals.

151 

152### Aufgaben zuweisen und beanspruchen

153 

154Die gemeinsame Aufgabenliste koordiniert die Arbeit im Team. Der Lead erstellt Aufgaben und Teammates arbeiten sie durch. Aufgaben haben drei Zustände: ausstehend, in Bearbeitung und abgeschlossen. Aufgaben können auch von anderen Aufgaben abhängen: eine ausstehende Aufgabe mit ungelösten Abhängigkeiten kann nicht beansprucht werden, bis diese Abhängigkeiten erfüllt sind.

155 

156Der Lead kann Aufgaben explizit zuweisen oder Teammates können selbst beanspruchen:

157 

158* **Lead weist zu**: teilen Sie dem Lead mit, welche Aufgabe welchem Teammate gegeben werden soll

159* **Selbst beanspruchen**: nach Abschluss einer Aufgabe wählt ein Teammate die nächste nicht zugewiesene, nicht blockierte Aufgabe selbst aus

160 

161Das Beanspruchen von Aufgaben verwendet Dateisperrung, um Race Conditions zu verhindern, wenn mehrere Teammates versuchen, gleichzeitig dieselbe Aufgabe zu beanspruchen.

162 

163### Teammates herunterfahren

164 

165Um die Sitzung eines Teammates ordnungsgemäß zu beenden:

166 

167```text theme={null}

168Ask the researcher teammate to shut down

169```

170 

171Der Lead sendet eine Abschaltungsanfrage. Der Teammate kann zustimmen und ordnungsgemäß beenden oder mit einer Erklärung ablehnen.

172 

173### Bereinigen Sie das Team

174 

175Wenn Sie fertig sind, bitten Sie den Lead zu bereinigen:

176 

177```text theme={null}

178Clean up the team

179```

180 

181Dies entfernt die gemeinsamen Teamressourcen. Wenn der Lead die Bereinigung ausführt, prüft er auf aktive Teammates und schlägt fehl, wenn noch welche laufen, also fahren Sie diese zuerst herunter.

182 

183<Warning>

184 Verwenden Sie immer den Lead zum Bereinigen. Teammates sollten keine Bereinigung ausführen, da ihr Teamkontext möglicherweise nicht korrekt aufgelöst wird, was möglicherweise Ressourcen in einem inkonsistenten Zustand hinterlässt.

185</Warning>

186 

187### Erzwingen Sie Qualitätsgates mit Hooks

188 

189Verwenden Sie [Hooks](/de/hooks), um Regeln durchzusetzen, wenn Teammates ihre Arbeit abschließen oder Aufgaben erstellt oder abgeschlossen werden:

190 

191* [`TeammateIdle`](/de/hooks#teammateidle): wird ausgeführt, wenn ein Teammate im Begriff ist, untätig zu werden. Beenden Sie mit Code 2, um Feedback zu senden und den Teammate weiterarbeiten zu lassen.

192* [`TaskCreated`](/de/hooks#taskcreated): wird ausgeführt, wenn eine Aufgabe erstellt wird. Beenden Sie mit Code 2, um die Erstellung zu verhindern und Feedback zu senden.

193* [`TaskCompleted`](/de/hooks#taskcompleted): wird ausgeführt, wenn eine Aufgabe als abgeschlossen markiert wird. Beenden Sie mit Code 2, um die Fertigstellung zu verhindern und Feedback zu senden.

194 

195## Wie Agent-Teams funktionieren

196 

197Dieser Abschnitt behandelt die Architektur und Mechanik hinter Agent-Teams. Wenn Sie sie verwenden möchten, siehe [Kontrolle Ihres Agent-Teams](#control-your-agent-team) oben.

198 

199### Wie Claude Agent-Teams startet

200 

201Es gibt zwei Möglichkeiten, wie Agent-Teams gestartet werden:

202 

203* **Sie fordern ein Team an**: geben Sie Claude eine Aufgabe, die von paralleler Arbeit profitiert, und fordern Sie explizit ein Agent-Team an. Claude erstellt eines basierend auf Ihren Anweisungen.

204* **Claude schlägt ein Team vor**: wenn Claude feststellt, dass Ihre Aufgabe von paralleler Arbeit profitieren würde, kann es ein Team vorschlagen. Sie bestätigen, bevor es fortfährt.

205 

206In beiden Fällen behalten Sie die Kontrolle. Claude wird kein Team ohne Ihre Genehmigung erstellen.

207 

208### Architektur

209 

210Ein Agent-Team besteht aus:

211 

212| Komponente | Rolle |

213| :---------------- | :------------------------------------------------------------------------------------------------- |

214| **Team Lead** | Die Haupt-Claude Code-Sitzung, die das Team erstellt, Teammates erzeugt und die Arbeit koordiniert |

215| **Teammates** | Separate Claude Code-Instanzen, die jeweils an zugewiesenen Aufgaben arbeiten |

216| **Aufgabenliste** | Gemeinsame Liste von Arbeitselementen, die Teammates beanspruchen und abschließen |

217| **Mailbox** | Nachrichtensystem für Kommunikation zwischen Agenten |

218 

219Siehe [Wählen Sie einen Anzeigemodus](#choose-a-display-mode) für Anzeigeoptionen. Teammate-Nachrichten kommen automatisch beim Lead an.

220 

221Das System verwaltet Aufgabenabhängigkeiten automatisch. Wenn ein Teammate eine Aufgabe abschließt, von der andere Aufgaben abhängen, werden blockierte Aufgaben automatisch entsperrt.

222 

223Teams und Aufgaben werden lokal gespeichert:

224 

225* **Team-Konfiguration**: `~/.claude/teams/{team-name}/config.json`

226* **Aufgabenliste**: `~/.claude/tasks/{team-name}/`

227 

228Claude Code generiert beide automatisch, wenn Sie ein Team erstellen, und aktualisiert sie, wenn Teammates beitreten, untätig werden oder gehen. Die Team-Konfiguration enthält Laufzeitzustand wie Session-IDs und tmux-Pane-IDs, also bearbeiten Sie sie nicht von Hand oder verfassen Sie sie nicht im Voraus: Ihre Änderungen werden beim nächsten Zustandsupdate überschrieben.

229 

230Um wiederverwendbare Teammate-Rollen zu definieren, verwenden Sie stattdessen [Subagent-Definitionen](#use-subagent-definitions-for-teammates).

231 

232Die Team-Konfiguration enthält ein `members`-Array mit dem Namen, der Agent-ID und dem Agent-Typ jedes Teammates. Teammates können diese Datei lesen, um andere Teammitglieder zu entdecken.

233 

234Es gibt kein Projekt-Level-Äquivalent der Team-Konfiguration. Eine Datei wie `.claude/teams/teams.json` in Ihrem Projektverzeichnis wird nicht als Konfiguration erkannt; Claude behandelt sie als gewöhnliche Datei.

235 

236### Verwenden Sie Subagent-Definitionen für Teammates

237 

238Beim Erzeugen eines Teammates können Sie einen [Subagent](/de/sub-agents)-Typ aus jedem [Subagent-Bereich](/de/sub-agents#choose-the-subagent-scope) referenzieren: Projekt, Benutzer, Plugin oder CLI-definiert. Dies ermöglicht es Ihnen, eine Rolle einmal zu definieren, wie z. B. einen Security-Reviewer oder Test-Runner, und sie sowohl als delegierter Subagent als auch als Agent-Team-Teammate wiederzuverwenden.

239 

240Um eine Subagent-Definition zu verwenden, erwähnen Sie sie nach Name, wenn Sie Claude auffordern, den Teammate zu erzeugen:

241 

242```text theme={null}

243Spawn a teammate using the security-reviewer agent type to audit the auth module.

244```

245 

246Der Teammate berücksichtigt die `tools`-Zulassungsliste und das `model` dieser Definition, und der Text der Definition wird an den System-Prompt des Teammates als zusätzliche Anweisungen angehängt, anstatt ihn zu ersetzen. Team-Koordinations-Tools wie `SendMessage` und die Aufgabenverwaltungs-Tools sind immer für einen Teammate verfügbar, auch wenn `tools` andere Tools einschränkt.

247 

248<Note>

249 Die `skills`- und `mcpServers`-Frontmatter-Felder in einer Subagent-Definition werden nicht angewendet, wenn diese Definition als Teammate ausgeführt wird. Teammates laden Skills und MCP-Server aus Ihren Projekt- und Benutzereinstellungen, genauso wie eine reguläre Sitzung.

250</Note>

251 

252### Berechtigungen

253 

254Teammates starten mit den Berechtigungseinstellungen des Leads. Wenn der Lead mit `--dangerously-skip-permissions` ausgeführt wird, tun dies auch alle Teammates. Nach dem Erzeugen können Sie einzelne Teammate-Modi ändern, aber Sie können keine Pro-Teammate-Modi zum Zeitpunkt des Erzeugung setzen.

255 

256### Kontext und Kommunikation

257 

258Jeder Teammate hat sein eigenes Kontextfenster. Beim Erzeugen lädt ein Teammate denselben Projektkontext wie eine reguläre Sitzung: CLAUDE.md, MCP-Server und Skills. Er erhält auch den Spawn-Prompt vom Lead. Die Gesprächshistorie des Leads wird nicht übertragen.

259 

260**Wie Teammates Informationen teilen:**

261 

262* **Automatische Nachrichtenlieferung**: wenn Teammates Nachrichten senden, werden sie automatisch an Empfänger geliefert. Der Lead muss nicht auf Updates abfragen.

263* **Untätigkeitsbenachrichtigungen**: wenn ein Teammate fertig ist und stoppt, benachrichtigt er automatisch den Lead.

264* **Gemeinsame Aufgabenliste**: alle Agenten können den Aufgabenstatus sehen und verfügbare Arbeit beanspruchen.

265* **Teammate-Messaging**: senden Sie eine Nachricht an einen bestimmten Teammate nach Name. Um alle zu erreichen, senden Sie eine Nachricht pro Empfänger.

266 

267Der Lead weist jedem Teammate einen Namen zu, wenn er ihn erzeugt, und jeder Teammate kann jeden anderen nach diesem Namen anschreiben. Um vorhersehbare Namen zu erhalten, die Sie in späteren Prompts referenzieren können, teilen Sie dem Lead mit, wie er jeden Teammate in Ihrer Spawn-Anweisung nennen soll.

268 

269### Token-Nutzung

270 

271Agent-Teams verwenden deutlich mehr Tokens als eine einzelne Sitzung. Jeder Teammate hat sein eigenes Kontextfenster, und die Token-Nutzung skaliert mit der Anzahl der aktiven Teammates. Für Recherche, Überprüfung und neue Feature-Arbeit sind die zusätzlichen Tokens normalerweise lohnenswert. Für Routineaufgaben ist eine einzelne Sitzung kostengünstiger. Siehe [Agent-Team-Token-Kosten](/de/costs#agent-team-token-costs) für Nutzungsleitfäden.

272 

273## Anwendungsbeispiele

274 

275Diese Beispiele zeigen, wie Agent-Teams Aufgaben handhaben, bei denen parallele Exploration Wert bietet.

276 

277### Führen Sie eine parallele Code-Überprüfung durch

278 

279Ein einzelner Reviewer neigt dazu, sich jeweils auf eine Art von Problem zu konzentrieren. Das Aufteilen von Überprüfungskriterien in unabhängige Domänen bedeutet, dass Sicherheit, Leistung und Testabdeckung alle gleichzeitig gründlich beachtet werden. Der Prompt weist jedem Teammate eine unterschiedliche Perspektive zu, damit sie sich nicht überlappen:

280 

281```text theme={null}

282Create an agent team to review PR #142. Spawn three reviewers:

283- One focused on security implications

284- One checking performance impact

285- One validating test coverage

286Have them each review and report findings.

287```

288 

289Jeder Reviewer arbeitet vom selben PR aus, wendet aber einen anderen Filter an. Der Lead synthetisiert Erkenntnisse über alle drei nach Abschluss.

290 

291### Untersuchen Sie mit konkurrierenden Hypothesen

292 

293Wenn die Grundursache unklar ist, neigt ein einzelner Agent dazu, eine plausible Erklärung zu finden und zu stoppen. Der Prompt bekämpft dies, indem er Teammates explizit gegnerisch macht: die Aufgabe jedes ist nicht nur, seine eigene Theorie zu untersuchen, sondern auch die anderen in Frage zu stellen.

294 

295```text theme={null}

296Users report the app exits after one message instead of staying connected.

297Spawn 5 agent teammates to investigate different hypotheses. Have them talk to

298each other to try to disprove each other's theories, like a scientific

299debate. Update the findings doc with whatever consensus emerges.

300```

301 

302Die Debattenstruktur ist der Schlüsselmechanismus hier. Sequenzielle Untersuchung leidet unter Verankerung: sobald eine Theorie untersucht wird, ist die nachfolgende Untersuchung zu ihr vorgespannt.

303 

304Mit mehreren unabhängigen Ermittlern, die aktiv versuchen, sich gegenseitig zu widerlegen, ist die Theorie, die überlebt, viel wahrscheinlicher die tatsächliche Grundursache.

305 

306## Best Practices

307 

308### Geben Sie Teammates genug Kontext

309 

310Teammates laden Projektkontext automatisch, einschließlich CLAUDE.md, MCP-Server und Skills, aber sie erben nicht die Gesprächshistorie des Leads. Siehe [Kontext und Kommunikation](#context-and-communication) für Details. Fügen Sie aufgabenspezifische Details in den Spawn-Prompt ein:

311 

312```text theme={null}

313Spawn a security reviewer teammate with the prompt: "Review the authentication module

314at src/auth/ for security vulnerabilities. Focus on token handling, session

315management, and input validation. The app uses JWT tokens stored in

316httpOnly cookies. Report any issues with severity ratings."

317```

318 

319### Wählen Sie eine angemessene Teamgröße

320 

321Es gibt keine harte Grenze für die Anzahl der Teammates, aber praktische Einschränkungen gelten:

322 

323* **Token-Kosten skalieren linear**: jeder Teammate hat sein eigenes Kontextfenster und verbraucht Tokens unabhängig. Siehe [Agent-Team-Token-Kosten](/de/costs#agent-team-token-costs) für Details.

324* **Koordinationsaufwand nimmt zu**: mehr Teammates bedeutet mehr Kommunikation, Aufgabenkoordination und Konfliktpotenzial

325* **Sinkende Erträge**: über einen bestimmten Punkt hinaus beschleunigen zusätzliche Teammates die Arbeit nicht proportional

326 

327Beginnen Sie mit 3-5 Teammates für die meisten Workflows. Dies balanciert parallele Arbeit mit verwaltbarer Koordination. Die Beispiele in diesem Leitfaden verwenden 3-5 Teammates, weil dieser Bereich über verschiedene Aufgabentypen hinweg gut funktioniert.

328 

329Mit 5-6 [Aufgaben](/de/agent-teams#architecture) pro Teammate bleibt jeder produktiv, ohne übermäßiges Kontextwechsel. Wenn Sie 15 unabhängige Aufgaben haben, sind 3 Teammates ein guter Ausgangspunkt.

330 

331Skalieren Sie nur auf, wenn die Arbeit wirklich davon profitiert, dass Teammates gleichzeitig arbeiten. Drei fokussierte Teammates übertreffen oft fünf verstreute.

332 

333### Dimensionieren Sie Aufgaben angemessen

334 

335* **Zu klein**: Koordinationsaufwand übersteigt den Nutzen

336* **Zu groß**: Teammates arbeiten zu lange ohne Check-ins, was das Risiko verschwendeter Anstrengungen erhöht

337* **Genau richtig**: in sich geschlossene Einheiten, die ein klares Ergebnis liefern, wie eine Funktion, eine Testdatei oder eine Überprüfung

338 

339<Tip>

340 Der Lead teilt Arbeit in Aufgaben auf und weist sie Teammates automatisch zu. Wenn er nicht genug Aufgaben erstellt, bitten Sie ihn, die Arbeit in kleinere Stücke aufzuteilen. Mit 5-6 Aufgaben pro Teammate bleibt jeder produktiv und der Lead kann Arbeit neu zuweisen, wenn jemand steckenbleibt.

341</Tip>

342 

343### Warten Sie, bis Teammates fertig sind

344 

345Manchmal beginnt der Lead, Aufgaben selbst zu implementieren, anstatt auf Teammates zu warten. Wenn Sie dies bemerken:

346 

347```text theme={null}

348Wait for your teammates to complete their tasks before proceeding

349```

350 

351### Beginnen Sie mit Recherche und Überprüfung

352 

353Wenn Sie neu bei Agent-Teams sind, beginnen Sie mit Aufgaben, die klare Grenzen haben und nicht das Schreiben von Code erfordern: Überprüfung eines PR, Recherche einer Bibliothek oder Untersuchung eines Bugs. Diese Aufgaben zeigen den Wert paralleler Exploration ohne die Koordinationschallenges, die mit paralleler Implementierung einhergehen.

354 

355### Vermeiden Sie Dateikonflikte

356 

357Zwei Teammates, die dieselbe Datei bearbeiten, führen zu Überschreibungen. Teilen Sie die Arbeit so auf, dass jeder Teammate einen anderen Satz von Dateien besitzt.

358 

359### Überwachen und lenken Sie

360 

361Überprüfen Sie den Fortschritt der Teammates, leiten Sie Ansätze um, die nicht funktionieren, und synthetisieren Sie Erkenntnisse, wenn sie eintreffen. Ein Team zu lange unbeaufsichtigt laufen zu lassen, erhöht das Risiko verschwendeter Anstrengungen.

362 

363## Fehlerbehebung

364 

365### Teammates erscheinen nicht

366 

367Wenn Teammates nicht erscheinen, nachdem Sie Claude aufgefordert haben, ein Team zu erstellen:

368 

369* Im In-Process-Modus können Teammates bereits laufen, sind aber nicht sichtbar. Drücken Sie Shift+Down, um durch aktive Teammates zu wechseln.

370* Überprüfen Sie, dass die Aufgabe, die Sie Claude gegeben haben, komplex genug war, um ein Team zu rechtfertigen. Claude entscheidet basierend auf der Aufgabe, ob Teammates erzeugt werden sollen.

371* Wenn Sie explizit Split Panes angefordert haben, stellen Sie sicher, dass tmux installiert ist und in Ihrem PATH verfügbar ist:

372 ```bash theme={null}

373 which tmux

374 ```

375* Für iTerm2 überprüfen Sie, dass die `it2` CLI installiert ist und die Python-API in iTerm2-Einstellungen aktiviert ist.

376 

377### Zu viele Berechtigungsaufforderungen

378 

379Teammate-Berechtigungsanfragen sprudeln zum Lead auf, was zu Reibung führen kann. Genehmigen Sie häufige Operationen in Ihren [Berechtigungseinstellungen](/de/permissions) vor dem Erzeugen von Teammates, um Unterbrechungen zu reduzieren.

380 

381### Teammates stoppen bei Fehlern

382 

383Teammates können nach Fehlern stoppen, anstatt sich zu erholen. Überprüfen Sie ihre Ausgabe mit Shift+Down im In-Process-Modus oder durch Klicken auf den Pane im Split-Modus, dann entweder:

384 

385* Geben Sie ihnen zusätzliche Anweisungen direkt

386* Erzeugen Sie einen Ersatz-Teammate, um die Arbeit fortzusetzen

387 

388### Lead fährt herunter, bevor die Arbeit erledigt ist

389 

390Der Lead kann entscheiden, dass das Team fertig ist, bevor alle Aufgaben tatsächlich abgeschlossen sind. Wenn dies geschieht, teilen Sie ihm mit, dass er weitermachen soll. Sie können dem Lead auch mitteilen, auf Teammates zu warten, um zu beenden, bevor er fortfährt, wenn er anfängt, Arbeit zu erledigen, anstatt zu delegieren.

391 

392### Verwaiste tmux-Sitzungen

393 

394Wenn eine tmux-Sitzung nach dem Ende des Teams bestehen bleibt, wurde sie möglicherweise nicht vollständig bereinigt. Listen Sie Sitzungen auf und beenden Sie die vom Team erstellte:

395 

396```bash theme={null}

397tmux ls

398tmux kill-session -t <session-name>

399```

400 

401## Einschränkungen

402 

403Agent-Teams sind experimentell. Aktuelle Einschränkungen, die Sie beachten sollten:

404 

405* **Keine Sitzungswiederaufnahme mit In-Process-Teammates**: `/resume` und `/rewind` stellen In-Process-Teammates nicht wieder her. Nach der Wiederaufnahme einer Sitzung kann der Lead versuchen, mit Teammates zu kommunizieren, die nicht mehr existieren. Wenn dies geschieht, teilen Sie dem Lead mit, neue Teammates zu erzeugen.

406* **Aufgabenstatus kann verzögert sein**: Teammates markieren Aufgaben manchmal nicht als abgeschlossen, was abhängige Aufgaben blockiert. Wenn eine Aufgabe steckenbleibt, überprüfen Sie, ob die Arbeit tatsächlich erledigt ist, und aktualisieren Sie den Aufgabenstatus manuell oder teilen Sie dem Lead mit, den Teammate zu anstoßen.

407* **Abschaltung kann langsam sein**: Teammates beenden ihre aktuelle Anfrage oder ihren Werkzeugaufruf, bevor sie herunterfahren, was Zeit in Anspruch nehmen kann.

408* **Ein Team pro Sitzung**: ein Lead kann jeweils nur ein Team verwalten. Bereinigen Sie das aktuelle Team, bevor Sie ein neues starten.

409* **Keine verschachtelten Teams**: Teammates können ihre eigenen Teams oder Teammates nicht erzeugen. Nur der Lead kann das Team verwalten.

410* **Lead ist fest**: die Sitzung, die das Team erstellt, ist der Lead für seine Lebensdauer. Sie können einen Teammate nicht zum Lead befördern oder die Führung übertragen.

411* **Berechtigungen beim Erzeugen gesetzt**: alle Teammates starten mit dem Berechtigungsmodus des Leads. Sie können einzelne Teammate-Modi nach dem Erzeugen ändern, aber Sie können keine Pro-Teammate-Modi zum Zeitpunkt des Erzeugung setzen.

412* **Split Panes erfordern tmux oder iTerm2**: der Standard-In-Process-Modus funktioniert in jedem Terminal. Der Split-Pane-Modus wird in VS Code's integriertem Terminal, Windows Terminal oder Ghostty nicht unterstützt.

413 

414<Tip>

415 **`CLAUDE.md` funktioniert normal**: Teammates lesen `CLAUDE.md`-Dateien aus ihrem Arbeitsverzeichnis. Verwenden Sie dies, um projektspezifische Anleitung für alle Teammates bereitzustellen.

416</Tip>

417 

418## Nächste Schritte

419 

420Erkunden Sie verwandte Ansätze für parallele Arbeit und Delegation:

421 

422* **Leichte Delegation**: [subagents](/de/sub-agents) erzeugen Helper-Agenten für Recherche oder Überprüfung innerhalb Ihrer Sitzung, besser für Aufgaben, die keine Inter-Agent-Koordination benötigen

423* **Manuelle parallele Sitzungen**: [Git worktrees](/de/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) ermöglichen es Ihnen, mehrere Claude Code-Sitzungen selbst ohne automatisierte Teamkoordination auszuführen

424* **Vergleichen Sie Ansätze**: siehe den [Subagent vs Agent-Team](/de/features-overview#compare-similar-features) Vergleich für eine Seite-an-Seite-Aufschlüsselung

amazon-bedrock.md +589 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code auf Amazon Bedrock

6 

7> Erfahren Sie, wie Sie Claude Code über Amazon Bedrock konfigurieren, einschließlich Setup, IAM-Konfiguration und Fehlerbehebung.

8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79export const Experiment = ({flag, treatment, children}) => {

80 const VID_KEY = 'exp_vid';

81 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

82 const fnv1a = s => {

83 let h = 0x811c9dc5;

84 for (let i = 0; i < s.length; i++) {

85 h ^= s.charCodeAt(i);

86 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

87 }

88 return h >>> 0;

89 };

90 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

91 const [decision] = useState(() => {

92 const params = new URLSearchParams(location.search);

93 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

94 const force = params.get('gb-force');

95 if (force) {

96 for (const p of force.split(',')) {

97 const [k, v] = p.split(':');

98 if (k === flag) return {

99 variant: v || 'treatment',

100 track: false

101 };

102 }

103 }

104 if (navigator.globalPrivacyControl) {

105 return {

106 variant: 'control',

107 track: false

108 };

109 }

110 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

111 if (prefsMatch) {

112 try {

113 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

114 return {

115 variant: 'control',

116 track: false

117 };

118 }

119 } catch {

120 return {

121 variant: 'control',

122 track: false

123 };

124 }

125 } else {

126 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

127 if (!country || CONSENT_COUNTRIES.has(country)) {

128 return {

129 variant: 'control',

130 track: false

131 };

132 }

133 }

134 let vid;

135 try {

136 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

137 if (ajsMatch) {

138 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

139 } else {

140 vid = localStorage.getItem(VID_KEY);

141 if (!vid) {

142 vid = crypto.randomUUID();

143 }

144 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

145 }

146 try {

147 localStorage.setItem(VID_KEY, vid);

148 } catch {}

149 } catch {

150 return {

151 variant: 'control',

152 track: false

153 };

154 }

155 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

156 return {

157 variant,

158 track: true,

159 vid

160 };

161 });

162 useEffect(() => {

163 if (!decision.track) return;

164 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

165 method: 'POST',

166 headers: {

167 'Content-Type': 'application/json',

168 'x-service-name': 'claude_code_docs'

169 },

170 body: JSON.stringify({

171 events: [{

172 event_type: 'GrowthbookExperimentEvent',

173 event_data: {

174 device_id: decision.vid,

175 anonymous_id: decision.vid,

176 timestamp: new Date().toISOString(),

177 experiment_id: flag,

178 variation_id: decision.variant === 'treatment' ? 1 : 0,

179 environment: 'production'

180 }

181 }]

182 }),

183 keepalive: true

184 }).catch(() => {});

185 }, []);

186 return decision.variant === 'treatment' ? treatment : children;

187};

188 

189<Experiment flag="docs-contact-sales-cta" treatment={<ContactSalesCard surface="bedrock" />} />

190 

191## Voraussetzungen

192 

193Bevor Sie Claude Code mit Bedrock konfigurieren, stellen Sie sicher, dass Sie über Folgendes verfügen:

194 

195* Ein AWS-Konto mit aktiviertem Bedrock-Zugriff

196* Zugriff auf gewünschte Claude-Modelle (z. B. Claude Sonnet 4.6) in Bedrock

197* AWS CLI installiert und konfiguriert (optional – nur erforderlich, wenn Sie keinen anderen Mechanismus zur Beschaffung von Anmeldedaten haben)

198* Angemessene IAM-Berechtigungen

199 

200Um sich mit Ihren eigenen Bedrock-Anmeldedaten anzumelden, folgen Sie [Mit Bedrock anmelden](#sign-in-with-bedrock) unten. Um Claude Code in einem Team bereitzustellen, verwenden Sie die Schritte zum [manuellen Setup](#set-up-manually) und [fixieren Sie Ihre Modellversionen](#4-pin-model-versions), bevor Sie ausrollen.

201 

202## Mit Bedrock anmelden

203 

204Wenn Sie AWS-Anmeldedaten haben und Claude Code über Bedrock verwenden möchten, führt Sie der Anmelde-Assistent durch den Prozess. Sie führen die AWS-seitigen Voraussetzungen einmal pro Konto durch; der Assistent kümmert sich um die Claude Code-Seite.

205 

206<Steps>

207 <Step title="Aktivieren Sie Anthropic-Modelle in Ihrem AWS-Konto">

208 Öffnen Sie in der [Amazon Bedrock-Konsole](https://console.aws.amazon.com/bedrock/) den Modellkatalog, wählen Sie ein Anthropic-Modell aus und reichen Sie das Anwendungsfallformular ein. Der Zugriff wird unmittelbar nach der Einreichung gewährt. Siehe [Anwendungsfalldetails einreichen](#1-submit-use-case-details) für AWS Organizations und [IAM-Konfiguration](#iam-configuration) für die Berechtigungen, die Ihre Rolle benötigt.

209 </Step>

210 

211 <Step title="Starten Sie Claude Code und wählen Sie Bedrock">

212 Führen Sie `claude` aus. Wählen Sie bei der Anmeldeeingabeaufforderung **3rd-party platform** und dann **Amazon Bedrock**.

213 </Step>

214 

215 <Step title="Folgen Sie den Assistent-Eingabeaufforderungen">

216 Wählen Sie, wie Sie sich bei AWS authentifizieren: ein AWS-Profil, das aus Ihrem `~/.aws`-Verzeichnis erkannt wird, ein Bedrock API-Schlüssel, ein Zugriffsschlüssel und Geheimnis oder Anmeldedaten, die bereits in Ihrer Umgebung vorhanden sind. Der Assistent erkennt Ihre Region, überprüft, welche Claude-Modelle Ihr Konto aufrufen kann, und ermöglicht es Ihnen, diese zu fixieren. Das Ergebnis wird im `env`-Block Ihrer [Benutzereinstellungsdatei](/de/settings) gespeichert, sodass Sie Umgebungsvariablen nicht selbst exportieren müssen.

217 </Step>

218</Steps>

219 

220Nachdem Sie sich angemeldet haben, führen Sie `/setup-bedrock` jederzeit aus, um den Assistenten erneut zu öffnen und Ihre Anmeldedaten, Region oder Modellpins zu ändern.

221 

222## Manuelles Setup

223 

224Um Bedrock über Umgebungsvariablen statt über den Assistenten zu konfigurieren, z. B. in CI oder einem skriptgesteuerten Enterprise-Rollout, folgen Sie den folgenden Schritten.

225 

226### 1. Anwendungsfalldetails einreichen

227 

228Erstmalige Benutzer von Anthropic-Modellen müssen Anwendungsfalldetails einreichen, bevor sie ein Modell aufrufen. Dies wird einmal pro AWS-Konto durchgeführt.

229 

2301. Stellen Sie sicher, dass Sie die unten beschriebenen richtigen IAM-Berechtigungen haben

2312. Navigieren Sie zur [Amazon Bedrock-Konsole](https://console.aws.amazon.com/bedrock/)

2323. Wählen Sie ein Anthropic-Modell aus dem **Modellkatalog**

2334. Füllen Sie das Anwendungsfallformular aus. Der Zugriff wird unmittelbar nach der Einreichung gewährt.

234 

235Wenn Sie AWS Organizations verwenden, können Sie das Formular einmal vom Verwaltungskonto aus mit der [`PutUseCaseForModelAccess` API](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_PutUseCaseForModelAccess.html) einreichen. Dieser Aufruf erfordert die `bedrock:PutUseCaseForModelAccess` IAM-Berechtigung. Die Genehmigung erstreckt sich automatisch auf untergeordnete Konten.

236 

237### 2. AWS-Anmeldedaten konfigurieren

238 

239Claude Code verwendet die Standard-AWS-SDK-Anmeldedatenkette. Richten Sie Ihre Anmeldedaten mit einer dieser Methoden ein:

240 

241**Option A: AWS CLI-Konfiguration**

242 

243```bash theme={null}

244aws configure

245```

246 

247**Option B: Umgebungsvariablen (Zugriffsschlüssel)**

248 

249```bash theme={null}

250export AWS_ACCESS_KEY_ID=your-access-key-id

251export AWS_SECRET_ACCESS_KEY=your-secret-access-key

252export AWS_SESSION_TOKEN=your-session-token

253```

254 

255**Option C: Umgebungsvariablen (SSO-Profil)**

256 

257```bash theme={null}

258aws sso login --profile=<your-profile-name>

259 

260export AWS_PROFILE=your-profile-name

261```

262 

263**Option D: AWS Management Console-Anmeldedaten**

264 

265```bash theme={null}

266aws login

267```

268 

269[Erfahren Sie mehr](https://docs.aws.amazon.com/signin/latest/userguide/command-line-sign-in.html) über `aws login`.

270 

271**Option E: Bedrock API-Schlüssel**

272 

273```bash theme={null}

274export AWS_BEARER_TOKEN_BEDROCK=your-bedrock-api-key

275```

276 

277Bedrock API-Schlüssel bieten eine einfachere Authentifizierungsmethode ohne vollständige AWS-Anmeldedaten. [Erfahren Sie mehr über Bedrock API-Schlüssel](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/).

278 

279#### Erweiterte Anmeldedatenkonfiguration

280 

281Claude Code unterstützt die automatische Aktualisierung von Anmeldedaten für AWS SSO und Unternehmensidentitätsanbieter. Fügen Sie diese Einstellungen zu Ihrer Claude Code-Einstellungsdatei hinzu (siehe [Einstellungen](/de/settings) für Dateispeicherorte).

282 

283Wenn Claude Code erkennt, dass Ihre AWS-Anmeldedaten abgelaufen sind (entweder lokal basierend auf ihrem Zeitstempel oder wenn Bedrock einen Anmeldedatenfehler zurückgibt), führt es automatisch Ihre konfigurierten `awsAuthRefresh`- und/oder `awsCredentialExport`-Befehle aus, um neue Anmeldedaten zu erhalten, bevor die Anfrage erneut versucht wird.

284 

285##### Beispielkonfiguration

286 

287```json theme={null}

288{

289 "awsAuthRefresh": "aws sso login --profile myprofile",

290 "env": {

291 "AWS_PROFILE": "myprofile"

292 }

293}

294```

295 

296##### Erklärung der Konfigurationseinstellungen

297 

298**`awsAuthRefresh`**: Verwenden Sie dies für Befehle, die das `.aws`-Verzeichnis ändern, z. B. zum Aktualisieren von Anmeldedaten, SSO-Cache oder Konfigurationsdateien. Die Ausgabe des Befehls wird dem Benutzer angezeigt, aber interaktive Eingaben werden nicht unterstützt. Dies funktioniert gut für browserbasierte SSO-Flows, bei denen die CLI eine URL oder einen Code anzeigt und Sie die Authentifizierung im Browser abschließen.

299 

300**`awsCredentialExport`**: Verwenden Sie dies nur, wenn Sie das `.aws`-Verzeichnis nicht ändern können und Anmeldedaten direkt zurückgeben müssen. Die Ausgabe wird stillschweigend erfasst und nicht dem Benutzer angezeigt. Der Befehl muss JSON in diesem Format ausgeben:

301 

302```json theme={null}

303{

304 "Credentials": {

305 "AccessKeyId": "value",

306 "SecretAccessKey": "value",

307 "SessionToken": "value"

308 }

309}

310```

311 

312### 3. Claude Code konfigurieren

313 

314Legen Sie die folgenden Umgebungsvariablen fest, um Bedrock zu aktivieren:

315 

316```bash theme={null}

317# Bedrock-Integration aktivieren

318export CLAUDE_CODE_USE_BEDROCK=1

319export AWS_REGION=us-east-1 # oder Ihre bevorzugte Region

320 

321# Optional: Region für das kleine/schnelle Modell (Haiku) überschreiben.

322# Gilt auch für Bedrock Mantle.

323export ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION=us-west-2

324 

325# Optional: Bedrock-Endpunkt-URL für benutzerdefinierte Endpunkte oder Gateways überschreiben

326# export ANTHROPIC_BEDROCK_BASE_URL=https://bedrock-runtime.us-east-1.amazonaws.com

327```

328 

329Beachten Sie beim Aktivieren von Bedrock für Claude Code Folgendes:

330 

331* `AWS_REGION` ist eine erforderliche Umgebungsvariable. Claude Code liest diese Einstellung nicht aus der `.aws`-Konfigurationsdatei.

332* Bei Verwendung von Bedrock sind die `/login`- und `/logout`-Befehle deaktiviert, da die Authentifizierung über AWS-Anmeldedaten erfolgt.

333* Sie können Einstellungsdateien für Umgebungsvariablen wie `AWS_PROFILE` verwenden, die Sie nicht an andere Prozesse weitergeben möchten. Weitere Informationen finden Sie unter [Einstellungen](/de/settings).

334 

335### 4. Modellversionen fixieren

336 

337<Warning>

338 Fixieren Sie spezifische Modellversionen bei der Bereitstellung für mehrere Benutzer. Ohne Fixierung werden Modellaliase wie `sonnet` und `opus` zur neuesten Version aufgelöst, die möglicherweise noch nicht in Ihrem Bedrock-Konto verfügbar ist, wenn Anthropic ein Update veröffentlicht. Claude Code [fällt beim Start](#startup-model-checks) auf die vorherige Version zurück, wenn die neueste nicht verfügbar ist, aber die Fixierung ermöglicht es Ihnen, zu kontrollieren, wann Ihre Benutzer zu einem neuen Modell wechseln.

339</Warning>

340 

341Legen Sie diese Umgebungsvariablen auf spezifische Bedrock-Modell-IDs fest.

342 

343Ohne `ANTHROPIC_DEFAULT_OPUS_MODEL` wird der `opus`-Alias auf Bedrock zu Opus 4.6 aufgelöst. Legen Sie ihn auf die Opus 4.7-ID fest, um das neueste Modell zu verwenden:

344 

345```bash theme={null}

346export ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-7'

347export ANTHROPIC_DEFAULT_SONNET_MODEL='us.anthropic.claude-sonnet-4-6'

348export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'

349```

350 

351Diese Variablen verwenden Cross-Region-Inferenzprofil-IDs (mit dem `us.`-Präfix). Wenn Sie ein anderes Regionspräfix oder Anwendungsinferenzprofile verwenden, passen Sie entsprechend an. Aktuelle und ältere Modell-IDs finden Sie unter [Modellübersicht](https://platform.claude.com/docs/en/about-claude/models/overview). Siehe [Modellkonfiguration](/de/model-config#pin-models-for-third-party-deployments) für die vollständige Liste der Umgebungsvariablen.

352 

353Claude Code verwendet diese Standardmodelle, wenn keine Fixierungsvariablen gesetzt sind:

354 

355| Modelltyp | Standardwert |

356| :----------------------- | :--------------------------------------------- |

357| Primäres Modell | `us.anthropic.claude-sonnet-4-5-20250929-v1:0` |

358| Kleines/schnelles Modell | `us.anthropic.claude-haiku-4-5-20251001-v1:0` |

359 

360Um Modelle weiter anzupassen, verwenden Sie eine dieser Methoden:

361 

362```bash theme={null}

363# Verwendung der Inferenzprofil-ID

364export ANTHROPIC_MODEL='global.anthropic.claude-sonnet-4-6'

365export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'

366 

367# Verwendung des Anwendungsinferenzprofil-ARN

368export ANTHROPIC_MODEL='arn:aws:bedrock:us-east-2:your-account-id:application-inference-profile/your-model-id'

369 

370# Optional: Prompt Caching deaktivieren, falls erforderlich

371export DISABLE_PROMPT_CACHING=1

372 

373# Optional: 1-Stunden-Prompt-Cache-TTL statt der 5-Minuten-Standard anfordern

374export ENABLE_PROMPT_CACHING_1H=1

375```

376 

377<Note>[Prompt Caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) ist möglicherweise nicht in allen Regionen verfügbar. Cache-Schreibvorgänge mit einer 1-Stunden-TTL werden mit einer höheren Rate als 5-Minuten-Schreibvorgänge abgerechnet.</Note>

378 

379#### Jede Modellversion einem Inferenzprofil zuordnen

380 

381Die Umgebungsvariablen `ANTHROPIC_DEFAULT_*_MODEL` konfigurieren ein Inferenzprofil pro Modellfamilie. Wenn Ihre Organisation mehrere Versionen derselben Familie in der `/model`-Auswahl verfügbar machen muss, die jeweils zu ihrem eigenen Anwendungsinferenzprofil-ARN weitergeleitet werden, verwenden Sie stattdessen die `modelOverrides`-Einstellung in Ihrer [Einstellungsdatei](/de/settings#settings-files).

382 

383Dieses Beispiel ordnet vier Opus-Versionen unterschiedlichen ARNs zu, damit Benutzer zwischen ihnen wechseln können, ohne die Inferenzprofile Ihrer Organisation zu umgehen:

384 

385```json theme={null}

386{

387 "modelOverrides": {

388 "claude-opus-4-7": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-47-prod",

389 "claude-opus-4-6": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-46-prod",

390 "claude-opus-4-5-20251101": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-45-prod",

391 "claude-opus-4-1-20250805": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-41-prod"

392 }

393}

394```

395 

396Wenn ein Benutzer eine dieser Versionen in `/model` auswählt, ruft Claude Code Bedrock mit dem zugeordneten ARN auf. Versionen ohne Überschreibung fallen auf die integrierte Bedrock-Modell-ID oder ein beliebiges übereinstimmendes Inferenzprofil zurück, das beim Start erkannt wird. Siehe [Modell-IDs pro Version überschreiben](/de/model-config#override-model-ids-per-version) für Details, wie Überschreibungen mit `availableModels` und anderen Modelleinstellungen interagieren.

397 

398## Startup-Modellprüfungen

399 

400Wenn Claude Code mit konfiguriertem Bedrock startet, überprüft es, dass die Modelle, die es verwenden möchte, in Ihrem Konto zugänglich sind. Diese Prüfung erfordert Claude Code v2.1.94 oder später.

401 

402Wenn Sie eine Modellversion fixiert haben, die älter ist als der aktuelle Claude Code-Standard, und Ihr Konto die neuere Version aufrufen kann, fordert Claude Code Sie auf, die Fixierung zu aktualisieren. Das Akzeptieren schreibt die neue Modell-ID in Ihre [Benutzereinstellungsdatei](/de/settings) und startet Claude Code neu. Das Ablehnen wird bis zur nächsten Standardversionänderung beibehalten. Fixierungen, die auf einen [Anwendungsinferenzprofil-ARN](#map-each-model-version-to-an-inference-profile) verweisen, werden übersprungen, da diese von Ihrem Administrator verwaltet werden.

403 

404Wenn Sie ein Modell nicht fixiert haben und der aktuelle Standard in Ihrem Konto nicht verfügbar ist, fällt Claude Code für die aktuelle Sitzung auf die vorherige Version zurück und zeigt einen Hinweis an. Das Fallback wird nicht beibehalten. Aktivieren Sie das neuere Modell in Ihrem Bedrock-Konto oder [fixieren Sie eine Version](#4-pin-model-versions), um die Auswahl dauerhaft zu machen.

405 

406## IAM-Konfiguration

407 

408Erstellen Sie eine IAM-Richtlinie mit den erforderlichen Berechtigungen für Claude Code:

409 

410```json theme={null}

411{

412 "Version": "2012-10-17",

413 "Statement": [

414 {

415 "Sid": "AllowModelAndInferenceProfileAccess",

416 "Effect": "Allow",

417 "Action": [

418 "bedrock:InvokeModel",

419 "bedrock:InvokeModelWithResponseStream",

420 "bedrock:ListInferenceProfiles",

421 "bedrock:GetInferenceProfile"

422 ],

423 "Resource": [

424 "arn:aws:bedrock:*:*:inference-profile/*",

425 "arn:aws:bedrock:*:*:application-inference-profile/*",

426 "arn:aws:bedrock:*:*:foundation-model/*"

427 ]

428 },

429 {

430 "Sid": "AllowMarketplaceSubscription",

431 "Effect": "Allow",

432 "Action": [

433 "aws-marketplace:ViewSubscriptions",

434 "aws-marketplace:Subscribe"

435 ],

436 "Resource": "*",

437 "Condition": {

438 "StringEquals": {

439 "aws:CalledViaLast": "bedrock.amazonaws.com"

440 }

441 }

442 }

443 ]

444}

445```

446 

447Für restriktivere Berechtigungen können Sie die Ressource auf spezifische Inferenzprofil-ARNs beschränken.

448 

449`bedrock:GetInferenceProfile` ermöglicht es Claude Code, eine [Anwendungs-Inferenzprofil-ARN](#map-each-model-version-to-an-inference-profile) in ihr zugrunde liegendes Foundation-Modell aufzulösen, das verwendet wird, um die richtige Anforderungsform für dieses Modell auszuwählen.

450 

451Wenn dem Token diese Berechtigung fehlt, wird Claude Code automatisch wiederhergestellt, indem es einmal mit der alternativen Form erneut versucht wird, sodass Anfragen weiterhin erfolgreich sind, aber jedes neue Modell einen zusätzlichen Roundtrip hinzufügt. Die Gewährung der Berechtigung vermeidet den Wiederholungsversuch. Dies gilt am häufigsten für `AWS_BEARER_TOKEN_BEDROCK`-Bereitstellungen, bei denen die Richtlinie des Tokens typischerweise enger ist als eine vollständige IAM-Rolle.

452 

453Weitere Details finden Sie in der [Bedrock IAM-Dokumentation](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam.html).

454 

455<Note>

456 Erstellen Sie ein dediziertes AWS-Konto für Claude Code, um die Kostenverfolgung und Zugriffskontrolle zu vereinfachen.

457</Note>

458 

459## 1M Token-Kontextfenster

460 

461Claude Opus 4.7, Opus 4.6 und Sonnet 4.6 unterstützen das [1M Token-Kontextfenster](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) auf Amazon Bedrock. Claude Code aktiviert automatisch das erweiterte Kontextfenster, wenn Sie eine 1M-Modellvariante auswählen.

462 

463Der [Setup-Assistent](#sign-in-with-bedrock) bietet eine 1M-Kontextoption, wenn er Modelle fixiert. Um es stattdessen für ein manuell fixiertes Modell zu aktivieren, hängen Sie `[1m]` an die Modell-ID an. Siehe [Modelle für Drittanbieter-Bereitstellungen fixieren](/de/model-config#pin-models-for-third-party-deployments) für Details.

464 

465## AWS Guardrails

466 

467[Amazon Bedrock Guardrails](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) ermöglichen es Ihnen, Inhaltsfilterung für Claude Code zu implementieren. Erstellen Sie einen Guardrail in der [Amazon Bedrock-Konsole](https://console.aws.amazon.com/bedrock/), veröffentlichen Sie eine Version, und fügen Sie dann die Guardrail-Header zu Ihrer [Einstellungsdatei](/de/settings) hinzu. Aktivieren Sie Cross-Region-Inferenz auf Ihrem Guardrail, wenn Sie Cross-Region-Inferenzprofile verwenden.

468 

469Beispielkonfiguration:

470 

471```json theme={null}

472{

473 "env": {

474 "ANTHROPIC_CUSTOM_HEADERS": "X-Amzn-Bedrock-GuardrailIdentifier: your-guardrail-id\nX-Amzn-Bedrock-GuardrailVersion: 1"

475 }

476}

477```

478 

479## Verwenden Sie den Mantle-Endpunkt

480 

481Mantle ist ein Amazon Bedrock-Endpunkt, der Claude-Modelle über die native Anthropic API-Form statt über die Bedrock Invoke API bereitstellt. Er verwendet die gleichen AWS-Anmeldedaten, IAM-Berechtigungen und `awsAuthRefresh`-Konfiguration, die weiter oben auf dieser Seite beschrieben sind.

482 

483<Note>

484 Mantle erfordert Claude Code v2.1.94 oder später. Führen Sie `claude --version` aus, um zu überprüfen.

485</Note>

486 

487### Aktivieren Sie Mantle

488 

489Mit bereits konfigurierten AWS-Anmeldedaten legen Sie `CLAUDE_CODE_USE_MANTLE` fest, um Anfragen zum Mantle-Endpunkt weiterzuleiten:

490 

491```bash theme={null}

492export CLAUDE_CODE_USE_MANTLE=1

493export AWS_REGION=us-east-1

494```

495 

496Claude Code erstellt die Endpunkt-URL aus `AWS_REGION`. Um sie für einen benutzerdefinierten Endpunkt oder ein Gateway zu überschreiben, legen Sie `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` fest.

497 

498Führen Sie `/status` in Claude Code aus, um zu bestätigen. Die Provider-Zeile zeigt `Amazon Bedrock (Mantle)`, wenn Mantle aktiv ist.

499 

500### Wählen Sie ein Mantle-Modell

501 

502Mantle verwendet Modell-IDs mit dem Präfix `anthropic.` und ohne Versionssuffix, z. B. `anthropic.claude-haiku-4-5`. Die Modelle, die Ihrem Konto zur Verfügung stehen, hängen davon ab, was Ihre Organisation erhalten hat; zusätzliche Modell-IDs sind in Ihren Onboarding-Materialien von AWS aufgeführt. Wenden Sie sich an Ihr AWS-Kontoteam, um Zugriff auf zulässige Modelle anzufordern.

503 

504Legen Sie das Modell mit dem `--model`-Flag oder mit `/model` in Claude Code fest:

505 

506```bash theme={null}

507claude --model anthropic.claude-haiku-4-5

508```

509 

510### Führen Sie Mantle neben der Invoke API aus

511 

512Die Modelle, die Ihnen auf Mantle zur Verfügung stehen, enthalten möglicherweise nicht alle Modelle, die Sie heute verwenden. Das Setzen von `CLAUDE_CODE_USE_BEDROCK` und `CLAUDE_CODE_USE_MANTLE` ermöglicht es Claude Code, beide Endpunkte aus derselben Sitzung aufzurufen. Modell-IDs, die dem Mantle-Format entsprechen, werden zu Mantle weitergeleitet, und alle anderen Modell-IDs gehen zur Bedrock Invoke API.

513 

514```bash theme={null}

515export CLAUDE_CODE_USE_BEDROCK=1

516export CLAUDE_CODE_USE_MANTLE=1

517```

518 

519Um ein Mantle-Modell in der `/model`-Auswahl anzuzeigen, listen Sie seine ID in `availableModels` in Ihrer [Einstellungsdatei](/de/settings) auf. Diese Einstellung beschränkt die Auswahl auch auf die aufgelisteten Einträge, daher sollten Sie jeden Alias einschließen, den Sie verfügbar halten möchten:

520 

521```json theme={null}

522{

523 "availableModels": ["opus", "sonnet", "haiku", "anthropic.claude-haiku-4-5"]

524}

525```

526 

527Einträge mit dem `anthropic.`-Präfix werden als benutzerdefinierte Auswahl-Optionen hinzugefügt und zu Mantle weitergeleitet. Ersetzen Sie `anthropic.claude-haiku-4-5` durch die Modell-ID, die Ihr Konto erhalten hat. Siehe [Modellauswahl einschränken](/de/model-config#restrict-model-selection) für Details, wie `availableModels` mit anderen Modelleinstellungen interagiert.

528 

529Wenn beide Provider aktiv sind, zeigt `/status` `Amazon Bedrock + Amazon Bedrock (Mantle)` an.

530 

531### Leiten Sie Mantle durch ein Gateway weiter

532 

533Wenn Ihre Organisation Modellverkehr durch ein zentralisiertes [LLM-Gateway](/de/llm-gateway) leitet, das AWS-Anmeldedaten serverseitig injiziert, deaktivieren Sie die clientseitige Authentifizierung, damit Claude Code Anfragen ohne SigV4-Signaturen oder `x-api-key`-Header sendet:

534 

535```bash theme={null}

536export CLAUDE_CODE_USE_MANTLE=1

537export CLAUDE_CODE_SKIP_MANTLE_AUTH=1

538export ANTHROPIC_BEDROCK_MANTLE_BASE_URL=https://your-gateway.example.com

539```

540 

541### Mantle-Umgebungsvariablen

542 

543Diese Variablen sind spezifisch für den Mantle-Endpunkt. Siehe [Umgebungsvariablen](/de/env-vars) für die vollständige Liste.

544 

545| Variable | Zweck |

546| :-------------------------------------- | :----------------------------------------------------------------------------------- |

547| `CLAUDE_CODE_USE_MANTLE` | Aktivieren Sie den Mantle-Endpunkt. Legen Sie auf `1` oder `true` fest. |

548| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Überschreiben Sie die Standard-Mantle-Endpunkt-URL |

549| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Überspringen Sie die clientseitige Authentifizierung für Proxy-Setups |

550| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Überschreiben Sie die AWS-Region für das Haiku-Klasse-Modell (gemeinsam mit Bedrock) |

551 

552## Fehlerbehebung

553 

554### Authentifizierungsschleife mit SSO und Unternehmens-Proxys

555 

556Wenn Browser-Registerkarten wiederholt geöffnet werden, wenn Sie AWS SSO verwenden, entfernen Sie die `awsAuthRefresh`-Einstellung aus Ihrer [Einstellungsdatei](/de/settings). Dies kann auftreten, wenn Unternehmens-VPNs oder TLS-Inspektions-Proxys den SSO-Browser-Flow unterbrechen. Claude Code behandelt die unterbrochene Verbindung als Authentifizierungsfehler, führt `awsAuthRefresh` erneut aus und schleift sich endlos.

557 

558Wenn Ihre Netzwerkumgebung automatische browserbasierte SSO-Flows beeinträchtigt, verwenden Sie `aws sso login` manuell, bevor Sie Claude Code starten, anstatt sich auf `awsAuthRefresh` zu verlassen.

559 

560### Regionsprobleme

561 

562Wenn Sie auf Regionsprobleme stoßen:

563 

564* Modellverfügbarkeit prüfen: `aws bedrock list-inference-profiles --region your-region`

565* Zu einer unterstützten Region wechseln: `export AWS_REGION=us-east-1`

566* Erwägen Sie die Verwendung von Inferenzprofilen für Cross-Region-Zugriff

567 

568Wenn Sie einen Fehler „on-demand throughput isn't supported" erhalten:

569 

570* Geben Sie das Modell als [Inferenzprofil](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html)-ID an

571 

572Claude Code verwendet die Bedrock [Invoke API](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html) und unterstützt die Converse API nicht.

573 

574### Mantle-Endpunkt-Fehler

575 

576Wenn `/status` nach dem Setzen von `CLAUDE_CODE_USE_MANTLE` nicht `Amazon Bedrock (Mantle)` anzeigt, erreicht die Variable den Prozess nicht. Bestätigen Sie, dass sie in der Shell exportiert wird, in der Sie `claude` gestartet haben, oder legen Sie sie im `env`-Block Ihrer [Einstellungsdatei](/de/settings) fest.

577 

578Ein `403` vom Mantle-Endpunkt mit gültigen Anmeldedaten bedeutet, dass Ihrem AWS-Konto kein Zugriff auf das angeforderte Modell gewährt wurde. Wenden Sie sich an Ihr AWS-Kontoteam, um Zugriff anzufordern.

579 

580Ein `400`, das die Modell-ID nennt, bedeutet, dass dieses Modell nicht auf Mantle bereitgestellt wird. Mantle hat sein eigenes Modell-Lineup, das vom Standard-Bedrock-Katalog getrennt ist, daher funktionieren Inferenzprofil-IDs wie `us.anthropic.claude-sonnet-4-6` nicht. Verwenden Sie eine Mantle-Format-ID, oder aktivieren Sie [beide Endpunkte](#run-mantle-alongside-the-invoke-api), damit Claude Code jede Anfrage zum Endpunkt weiterleitet, wo das Modell verfügbar ist.

581 

582## Zusätzliche Ressourcen

583 

584* [Bedrock-Dokumentation](https://docs.aws.amazon.com/bedrock/)

585* [Bedrock-Preisgestaltung](https://aws.amazon.com/bedrock/pricing/)

586* [Bedrock-Inferenzprofile](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html)

587* [Bedrock-Token-Burndown und Kontingente](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas-token-burndown.html)

588* [Claude Code auf Amazon Bedrock: Schnellstartanleitung](https://community.aws/content/2tXkZKrZzlrlu0KfH8gST5Dkppq/claude-code-on-amazon-bedrock-quick-setup-guide)

589* [Claude Code Monitoring Implementation (Bedrock)](https://github.com/aws-solutions-library-samples/guidance-for-claude-code-with-amazon-bedrock/blob/main/assets/docs/MONITORING.md)

analytics.md +224 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Teamnutzung mit Analysen verfolgen

6 

7> Zeigen Sie Claude Code-Nutzungsmetriken an, verfolgen Sie die Einführung und messen Sie die Engineering-Geschwindigkeit im Analytics-Dashboard.

8 

9Claude Code bietet Analytics-Dashboards, um Organisationen dabei zu helfen, Entwicklernutzungsmuster zu verstehen, Beitragskennzahlen zu verfolgen und zu messen, wie Claude Code die Engineering-Geschwindigkeit beeinflusst. Greifen Sie auf das Dashboard für Ihren Plan zu:

10 

11| Plan | Dashboard-URL | Enthält | Weitere Informationen |

12| ----------------------------- | -------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------- |

13| Claude for Teams / Enterprise | [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code) | Nutzungsmetriken, Beitragskennzahlen mit GitHub-Integration, Rangliste, Datenexport | [Details](#access-analytics-for-teams-and-enterprise) |

14| API (Claude Console) | [platform.claude.com/claude-code](https://platform.claude.com/claude-code) | Nutzungsmetriken, Ausgabenverfolgung, Team-Insights | [Details](#access-analytics-for-api-customers) |

15 

16## Analytics für Teams und Enterprise aufrufen

17 

18Navigieren Sie zu [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code). Admins und Owners können das Dashboard anzeigen.

19 

20Das Teams- und Enterprise-Dashboard enthält:

21 

22* **Nutzungsmetriken**: akzeptierte Codezeilen, Akzeptanzrate für Vorschläge, täglich aktive Benutzer und Sitzungen

23* **Beitragskennzahlen**: PRs und Codezeilen, die mit Claude Code-Unterstützung versendet wurden, mit [GitHub-Integration](#enable-contribution-metrics)

24* **Rangliste**: Top-Beitragsteller, sortiert nach Claude Code-Nutzung

25* **Datenexport**: Beitragsdaten als CSV für benutzerdefinierte Berichte herunterladen

26 

27### Beitragskennzahlen aktivieren

28 

29<Note>

30 Beitragskennzahlen befinden sich in der öffentlichen Beta und sind in Claude for Teams und Claude for Enterprise-Plänen verfügbar. Diese Metriken decken nur Benutzer innerhalb Ihrer claude.ai-Organisation ab. Die Nutzung über die Claude Console API oder Integrationen von Drittanbietern ist nicht enthalten.

31</Note>

32 

33Nutzungs- und Einführungsdaten sind für alle Claude for Teams und Claude for Enterprise-Konten verfügbar. Beitragskennzahlen erfordern zusätzliche Einrichtung, um Ihre GitHub-Organisation zu verbinden.

34 

35Sie benötigen die Owner-Rolle, um Analytics-Einstellungen zu konfigurieren. Ein GitHub-Admin muss die GitHub-App installieren.

36 

37<Warning>

38 Beitragskennzahlen sind nicht für Organisationen mit aktiviertem [Zero Data Retention](/de/zero-data-retention) verfügbar. Das Analytics-Dashboard zeigt nur Nutzungsmetriken an.

39</Warning>

40 

41<Steps>

42 <Step title="GitHub-App installieren">

43 Ein GitHub-Admin installiert die Claude GitHub-App auf dem GitHub-Konto Ihrer Organisation unter [github.com/apps/claude](https://github.com/apps/claude).

44 </Step>

45 

46 <Step title="Claude Code-Analysen aktivieren">

47 Ein Claude Owner navigiert zu [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) und aktiviert die Claude Code-Analytics-Funktion.

48 </Step>

49 

50 <Step title="GitHub-Analysen aktivieren">

51 Aktivieren Sie auf der gleichen Seite den Schalter 'GitHub analytics".

52 </Step>

53 

54 <Step title="Mit GitHub authentifizieren">

55 Schließen Sie den GitHub-Authentifizierungsfluss ab und wählen Sie aus, welche GitHub-Organisationen in die Analyse einbezogen werden sollen.

56 </Step>

57</Steps>

58 

59Daten werden normalerweise innerhalb von 24 Stunden nach der Aktivierung angezeigt, mit täglichen Updates. Wenn keine Daten angezeigt werden, wird möglicherweise eine dieser Meldungen angezeigt:

60 

61* **'GitHub-App erforderlich"**: Installieren Sie die GitHub-App, um Beitragskennzahlen anzuzeigen

62* **„Datenverarbeitung läuft"**: Überprüfen Sie in einigen Tagen erneut und bestätigen Sie, dass die GitHub-App installiert ist, falls keine Daten angezeigt werden

63 

64Beitragskennzahlen unterstützen GitHub Cloud und GitHub Enterprise Server.

65 

66### Zusammenfassende Metriken überprüfen

67 

68<Note>

69 Diese Metriken sind absichtlich konservativ und stellen eine Unterschätzung der tatsächlichen Auswirkungen von Claude Code dar. Nur Zeilen und PRs, bei denen hohes Vertrauen in die Beteiligung von Claude Code besteht, werden gezählt.

70</Note>

71 

72Das Dashboard zeigt diese zusammenfassenden Metriken oben an:

73 

74* **PRs mit CC**: Gesamtanzahl der zusammengeführten Pull Requests, die mindestens eine Codezeile enthalten, die mit Claude Code geschrieben wurde

75* **Codezeilen mit CC**: Gesamtzahl der Codezeilen in allen zusammengeführten PRs, die mit Claude Code-Unterstützung geschrieben wurden. Nur „effektive Zeilen" werden gezählt: Zeilen mit mehr als 3 Zeichen nach Normalisierung, ohne leere Zeilen und Zeilen mit nur Klammern oder trivialer Interpunktion.

76* **PRs mit Claude Code (%)**: Prozentsatz aller zusammengeführten PRs, die Claude Code-unterstützten Code enthalten

77* **Akzeptanzrate für Vorschläge**: Prozentsatz der Fälle, in denen Benutzer Claude Code-Codebearbeitungsvorschläge akzeptieren, einschließlich Edit, Write und NotebookEdit-Tool-Nutzung

78* **Akzeptierte Codezeilen**: Gesamtzahl der Codezeilen, die von Claude Code geschrieben wurden und die Benutzer in ihren Sitzungen akzeptiert haben. Dies schließt abgelehnte Vorschläge aus und verfolgt keine nachfolgenden Löschungen.

79 

80### Diagramme erkunden

81 

82Das Dashboard enthält mehrere Diagramme zur Visualisierung von Trends im Zeitverlauf.

83 

84#### Einführung verfolgen

85 

86Das Adoption-Diagramm zeigt tägliche Nutzungstrends:

87 

88* **users**: täglich aktive Benutzer

89* **sessions**: Anzahl der aktiven Claude Code-Sitzungen pro Tag

90 

91#### PRs pro Benutzer messen

92 

93Dieses Diagramm zeigt die individuelle Entwickleraktivität im Zeitverlauf:

94 

95* **PRs per user**: Gesamtzahl der pro Tag zusammengeführten PRs geteilt durch täglich aktive Benutzer

96* **users**: täglich aktive Benutzer

97 

98Verwenden Sie dies, um zu verstehen, wie sich die individuelle Produktivität mit zunehmender Claude Code-Einführung ändert.

99 

100#### Aufschlüsselung der Pull Requests anzeigen

101 

102Das Pull requests-Diagramm zeigt eine tägliche Aufschlüsselung der zusammengeführten PRs:

103 

104* **PRs with CC**: Pull Requests mit Claude Code-unterstütztem Code

105* **PRs without CC**: Pull Requests ohne Claude Code-unterstützten Code

106 

107Wechseln Sie zur Ansicht **Lines of code**, um die gleiche Aufschlüsselung nach Codezeilen statt nach PR-Anzahl zu sehen.

108 

109#### Top-Beitragsteller finden

110 

111Die Rangliste zeigt die Top 10-Benutzer, sortiert nach Beitragsmenge. Wechseln Sie zwischen:

112 

113* **Pull requests**: zeigt PRs mit Claude Code vs. alle PRs für jeden Benutzer

114* **Lines of code**: zeigt Zeilen mit Claude Code vs. alle Zeilen für jeden Benutzer

115 

116Klicken Sie auf **Export all users**, um vollständige Beitragsdaten für alle Benutzer als CSV-Datei herunterzuladen. Der Export enthält alle Benutzer, nicht nur die angezeigten Top 10.

117 

118### PR-Zuordnung

119 

120Wenn Beitragskennzahlen aktiviert sind, analysiert Claude Code zusammengeführte Pull Requests, um zu bestimmen, welcher Code mit Claude Code-Unterstützung geschrieben wurde. Dies geschieht durch Abgleich der Claude Code-Sitzungsaktivität mit dem Code in jedem PR.

121 

122#### Tagging-Kriterien

123 

124PRs werden als „with Claude Code" gekennzeichnet, wenn sie mindestens eine Codezeile enthalten, die während einer Claude Code-Sitzung geschrieben wurde. Das System verwendet konservatives Matching: Nur Code, bei dem hohes Vertrauen in die Beteiligung von Claude Code besteht, wird als unterstützt gezählt.

125 

126#### Zuordnungsprozess

127 

128Wenn ein Pull Request zusammengeführt wird:

129 

1301. Hinzugefügte Zeilen werden aus dem PR-Diff extrahiert

1312. Claude Code-Sitzungen, die übereinstimmende Dateien innerhalb eines Zeitfensters bearbeitet haben, werden identifiziert

1323. PR-Zeilen werden mit Claude Code-Ausgabe unter Verwendung mehrerer Strategien abgeglichen

1334. Metriken werden für KI-unterstützte Zeilen und Gesamtzeilen berechnet

134 

135Vor dem Vergleich werden Zeilen normalisiert: Leerzeichen werden gekürzt, mehrere Leerzeichen werden zusammengefasst, Anführungszeichen werden standardisiert und Text wird in Kleinbuchstaben konvertiert.

136 

137Zusammengeführte Pull Requests mit Claude Code-unterstützten Zeilen werden in GitHub mit `claude-code-assisted` gekennzeichnet.

138 

139#### Zeitfenster

140 

141Sitzungen von 21 Tagen vor bis 2 Tage nach dem PR-Zusammenführungsdatum werden für den Zuordnungsabgleich berücksichtigt.

142 

143#### Ausgeschlossene Dateien

144 

145Bestimmte Dateien werden automatisch von der Analyse ausgeschlossen, da sie automatisch generiert werden:

146 

147* Lock-Dateien: package-lock.json, yarn.lock, Cargo.lock und ähnliche

148* Generierter Code: Protobuf-Ausgaben, Build-Artefakte, minifizierte Dateien

149* Build-Verzeichnisse: dist/, build/, node\_modules/, target/

150* Test-Fixtures: Snapshots, Cassetten, Mock-Daten

151* Zeilen über 1.000 Zeichen, die wahrscheinlich minifiziert oder generiert sind

152 

153#### Zuordnungshinweise

154 

155Beachten Sie diese zusätzlichen Details bei der Interpretation von Zuordnungsdaten:

156 

157* Code, der von Entwicklern erheblich umgeschrieben wurde, mit mehr als 20% Unterschied, wird nicht Claude Code zugeordnet

158* Sitzungen außerhalb des 21-Tage-Fensters werden nicht berücksichtigt

159* Der Algorithmus berücksichtigt nicht den PR-Quell- oder Zielzweig bei der Durchführung der Zuordnung

160 

161### Nutzen Sie Analytics optimal

162 

163Verwenden Sie Beitragskennzahlen, um ROI zu demonstrieren, Einführungsmuster zu identifizieren und Teammitglieder zu finden, die anderen beim Einstieg helfen können.

164 

165#### Einführung überwachen

166 

167Verfolgen Sie das Adoption-Diagramm und Benutzerzahlen, um Folgendes zu identifizieren:

168 

169* Aktive Benutzer, die Best Practices teilen können

170* Gesamte Einführungstrends in Ihrer Organisation

171* Nutzungsrückgänge, die auf Reibung oder Probleme hindeuten können

172 

173#### ROI messen

174 

175Beitragskennzahlen helfen bei der Beantwortung der Frage „Lohnt sich dieses Tool für die Investition?" mit Daten aus Ihrer eigenen Codebasis:

176 

177* Verfolgen Sie Änderungen bei PRs pro Benutzer im Zeitverlauf, wenn die Einführung zunimmt

178* Vergleichen Sie PRs und Codezeilen, die mit und ohne Claude Code versendet wurden

179* Verwenden Sie zusammen mit [DORA-Metriken](https://dora.dev/), Sprint-Geschwindigkeit oder anderen Engineering-KPIs, um Änderungen durch die Einführung von Claude Code zu verstehen

180 

181#### Power-User identifizieren

182 

183Die Rangliste hilft Ihnen, Teammitglieder mit hoher Claude Code-Einführung zu finden, die:

184 

185* Prompting-Techniken und Workflows mit dem Team teilen können

186* Feedback geben können, was gut funktioniert

187* Neue Benutzer onboarden können

188 

189#### Auf Daten programmgesteuert zugreifen

190 

191Um diese Daten über GitHub abzufragen, suchen Sie nach PRs mit dem Label `claude-code-assisted`.

192 

193## Analytics für API-Kunden aufrufen

194 

195API-Kunden, die die Claude Console verwenden, können auf Analytics unter [platform.claude.com/claude-code](https://platform.claude.com/claude-code) zugreifen. Sie benötigen die UsageView-Berechtigung, um auf das Dashboard zuzugreifen, die den Rollen Developer, Billing, Admin, Owner und Primary Owner gewährt wird.

196 

197<Note>

198 Beitragskennzahlen mit GitHub-Integration sind derzeit nicht für API-Kunden verfügbar. Das Console-Dashboard zeigt nur Nutzungs- und Ausgabemetriken an.

199</Note>

200 

201Das Console-Dashboard zeigt:

202 

203* **Lines of code accepted**: Gesamtzahl der Codezeilen, die von Claude Code geschrieben wurden und die Benutzer in ihren Sitzungen akzeptiert haben. Dies schließt abgelehnte Vorschläge aus und verfolgt keine nachfolgenden Löschungen.

204* **Suggestion accept rate**: Prozentsatz der Fälle, in denen Benutzer die Nutzung von Code-Bearbeitungstools akzeptieren, einschließlich Edit, Write und NotebookEdit-Tools.

205* **Activity**: täglich aktive Benutzer und Sitzungen, die in einem Diagramm angezeigt werden.

206* **Spend**: tägliche API-Kosten in Dollar neben der Benutzerzahl.

207 

208### Team-Insights anzeigen

209 

210Die Team-Insights-Tabelle zeigt Metriken pro Benutzer:

211 

212* **Members**: alle Benutzer, die sich bei Claude Code authentifiziert haben. API-Schlüsselbenutzer werden nach Schlüsselkennung angezeigt, OAuth-Benutzer werden nach E-Mail-Adresse angezeigt.

213* **Spend this month**: Gesamtkosten der API pro Benutzer für den aktuellen Monat.

214* **Lines this month**: Gesamtzahl der akzeptierten Codezeilen pro Benutzer für den aktuellen Monat.

215 

216<Note>

217 Die Ausgabenzahlen im Console-Dashboard sind Schätzungen für Analytics-Zwecke. Für tatsächliche Kosten beziehen Sie sich auf Ihre Abrechnungsseite.

218</Note>

219 

220## Verwandte Ressourcen

221 

222* [Monitoring mit OpenTelemetry](/de/monitoring-usage): Exportieren Sie Echtzeit-Metriken und Ereignisse in Ihren Observability-Stack

223* [Kosten effektiv verwalten](/de/costs): Legen Sie Ausgabenlimits fest und optimieren Sie die Token-Nutzung

224* [Berechtigungen](/de/permissions): Konfigurieren Sie Rollen und Berechtigungen

authentication.md +155 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Authentifizierung

6 

7> Melden Sie sich bei Claude Code an und konfigurieren Sie die Authentifizierung für Einzelpersonen, Teams und Organisationen.

8 

9Claude Code unterstützt mehrere Authentifizierungsmethoden je nach Ihrer Einrichtung. Einzelne Benutzer können sich mit einem Claude.ai-Konto anmelden, während Teams Claude for Teams oder Enterprise, die Claude Console oder einen Cloud-Anbieter wie Amazon Bedrock, Google Vertex AI oder Microsoft Foundry verwenden können.

10 

11## Melden Sie sich bei Claude Code an

12 

13Nach dem [Installieren von Claude Code](/de/setup#install-claude-code) führen Sie `claude` in Ihrem Terminal aus. Beim ersten Start öffnet Claude Code ein Browserfenster, in dem Sie sich anmelden können.

14 

15Wenn der Browser nicht automatisch geöffnet wird, drücken Sie `c`, um die Anmelde-URL in Ihre Zwischenablage zu kopieren, und fügen Sie sie dann in Ihren Browser ein.

16 

17Wenn Ihr Browser nach der Anmeldung einen Anmeldecode anzeigt, anstatt Sie zurückzuleiten, fügen Sie ihn an der Eingabeaufforderung `Paste code here if prompted` im Terminal ein. Dies geschieht, wenn der Browser den lokalen Callback-Server von Claude Code nicht erreichen kann, was in WSL2, SSH-Sitzungen und Containern häufig vorkommt.

18 

19Sie können sich mit einem dieser Kontotypen authentifizieren:

20 

21* **Claude Pro oder Max Abonnement**: Melden Sie sich mit Ihrem Claude.ai-Konto an. Abonnieren Sie unter [claude.com/pricing](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_pro_max).

22* **Claude for Teams oder Enterprise**: Melden Sie sich mit dem Claude.ai-Konto an, zu dem Sie Ihr Team-Administrator eingeladen hat.

23* **Claude Console**: Melden Sie sich mit Ihren Console-Anmeldedaten an. Ihr Administrator muss Sie zunächst [eingeladen haben](#claude-console-authentication).

24* **Cloud-Anbieter**: Wenn Ihre Organisation [Amazon Bedrock](/de/amazon-bedrock), [Google Vertex AI](/de/google-vertex-ai) oder [Microsoft Foundry](/de/microsoft-foundry) verwendet, legen Sie die erforderlichen Umgebungsvariablen fest, bevor Sie `claude` ausführen. Es ist keine Browser-Anmeldung erforderlich.

25 

26Um sich abzumelden und sich erneut zu authentifizieren, geben Sie `/logout` an der Claude Code-Eingabeaufforderung ein.

27 

28Wenn Sie Probleme beim Anmelden haben, siehe [Authentifizierungsfehlersuche](/de/troubleshoot-install#login-and-authentication).

29 

30## Richten Sie die Team-Authentifizierung ein

31 

32Für Teams und Organisationen können Sie den Claude Code-Zugriff auf eine der folgenden Arten konfigurieren:

33 

34* [Claude for Teams oder Enterprise](#claude-for-teams-or-enterprise), empfohlen für die meisten Teams

35* [Claude Console](#claude-console-authentication)

36* [Amazon Bedrock](/de/amazon-bedrock)

37* [Google Vertex AI](/de/google-vertex-ai)

38* [Microsoft Foundry](/de/microsoft-foundry)

39 

40### Claude for Teams oder Enterprise

41 

42[Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_teams#team-&-enterprise) und [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_enterprise) bieten die beste Erfahrung für Organisationen, die Claude Code verwenden. Team-Mitglieder erhalten Zugriff auf Claude Code und Claude im Web mit zentralisierter Abrechnung und Team-Verwaltung.

43 

44* **Claude for Teams**: Self-Service-Plan mit Zusammenarbeitsfunktionen, Admin-Tools und Abrechnungsverwaltung. Am besten für kleinere Teams.

45* **Claude for Enterprise**: Fügt SSO, Domain-Erfassung, rollenbasierte Berechtigungen, Compliance-API und verwaltete Richtlinieneinstellungen für organisationsweite Claude Code-Konfigurationen hinzu. Am besten für größere Organisationen mit Sicherheits- und Compliance-Anforderungen.

46 

47<Steps>

48 <Step title="Abonnieren">

49 Abonnieren Sie [Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_teams_step#team-&-enterprise) oder kontaktieren Sie den Vertrieb für [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_enterprise_step).

50 </Step>

51 

52 <Step title="Team-Mitglieder einladen">

53 Laden Sie Team-Mitglieder vom Admin-Dashboard ein.

54 </Step>

55 

56 <Step title="Installieren und anmelden">

57 Team-Mitglieder installieren Claude Code und melden sich mit ihren Claude.ai-Konten an.

58 </Step>

59</Steps>

60 

61### Claude Console-Authentifizierung

62 

63Für Organisationen, die API-basierte Abrechnung bevorzugen, können Sie den Zugriff über die Claude Console einrichten.

64 

65<Steps>

66 <Step title="Erstellen oder verwenden Sie ein Console-Konto">

67 Verwenden Sie Ihr vorhandenes Claude Console-Konto oder erstellen Sie ein neues.

68 </Step>

69 

70 <Step title="Benutzer hinzufügen">

71 Sie können Benutzer auf eine der beiden folgenden Arten hinzufügen:

72 

73 * Laden Sie Benutzer in Massen aus der Console ein: Einstellungen -> Mitglieder -> Einladen

74 * [Richten Sie SSO ein](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso)

75 </Step>

76 

77 <Step title="Rollen zuweisen">

78 Weisen Sie beim Einladen von Benutzern eine der folgenden Rollen zu:

79 

80 * **Claude Code**-Rolle: Benutzer können nur Claude Code API-Schlüssel erstellen

81 * **Developer**-Rolle: Benutzer können jede Art von API-Schlüssel erstellen

82 </Step>

83 

84 <Step title="Benutzer schließen die Einrichtung ab">

85 Jeder eingeladene Benutzer muss:

86 

87 * Die Console-Einladung akzeptieren

88 * [Systemanforderungen überprüfen](/de/setup#system-requirements)

89 * [Claude Code installieren](/de/setup#install-claude-code)

90 * Sich mit Console-Kontoanmeldedaten anmelden

91 </Step>

92</Steps>

93 

94### Cloud-Anbieter-Authentifizierung

95 

96Für Teams, die Amazon Bedrock, Google Vertex AI oder Microsoft Foundry verwenden:

97 

98<Steps>

99 <Step title="Befolgen Sie die Anbieter-Einrichtung">

100 Befolgen Sie die [Bedrock-Dokumentation](/de/amazon-bedrock), [Vertex-Dokumentation](/de/google-vertex-ai) oder [Microsoft Foundry-Dokumentation](/de/microsoft-foundry).

101 </Step>

102 

103 <Step title="Verteilen Sie die Konfiguration">

104 Verteilen Sie die Umgebungsvariablen und Anweisungen zum Generieren von Cloud-Anmeldedaten an Ihre Benutzer. Lesen Sie mehr darüber, wie Sie [die Konfiguration hier verwalten](/de/settings).

105 </Step>

106 

107 <Step title="Installieren Sie Claude Code">

108 Benutzer können [Claude Code installieren](/de/setup#install-claude-code).

109 </Step>

110</Steps>

111 

112## Verwaltung von Anmeldedaten

113 

114Claude Code verwaltet Ihre Authentifizierungsanmeldedaten sicher:

115 

116* **Speicherort**: Auf macOS werden Anmeldedaten im verschlüsselten macOS Keychain gespeichert. Auf Linux und Windows werden Anmeldedaten in `~/.claude/.credentials.json` oder unter `$CLAUDE_CONFIG_DIR` gespeichert, falls diese Variable gesetzt ist. Auf Linux wird die Datei mit dem Modus `0600` geschrieben; unter Windows erbt sie die Zugriffskontrolle Ihres Benutzerprofilverzeichnisses.

117* **Unterstützte Authentifizierungstypen**: Claude.ai-Anmeldedaten, Claude API-Anmeldedaten, Azure Auth, Bedrock Auth und Vertex Auth.

118* **Benutzerdefinierte Anmeldedaten-Skripte**: Die Einstellung [`apiKeyHelper`](/de/settings#available-settings) kann so konfiguriert werden, dass ein Shell-Skript ausgeführt wird, das einen API-Schlüssel zurückgibt.

119* **Aktualisierungsintervalle**: Standardmäßig wird `apiKeyHelper` nach 5 Minuten oder bei HTTP 401-Antwort aufgerufen. Legen Sie die Umgebungsvariable `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` für benutzerdefinierte Aktualisierungsintervalle fest.

120* **Warnung bei langsamen Hilfsprogrammen**: Wenn `apiKeyHelper` länger als 10 Sekunden benötigt, um einen Schlüssel zurückzugeben, zeigt Claude Code eine Warnmitteilung in der Eingabeaufforderungsleiste an, die die verstrichene Zeit anzeigt. Wenn Sie diese Mitteilung regelmäßig sehen, überprüfen Sie, ob Ihr Anmeldedaten-Skript optimiert werden kann.

121 

122`apiKeyHelper`, `ANTHROPIC_API_KEY` und `ANTHROPIC_AUTH_TOKEN` gelten nur für Terminal-CLI-Sitzungen. Claude Desktop und Remote-Sitzungen verwenden ausschließlich OAuth und rufen `apiKeyHelper` nicht auf oder lesen API-Schlüssel-Umgebungsvariablen nicht.

123 

124### Authentifizierungspriorität

125 

126Wenn mehrere Anmeldedaten vorhanden sind, wählt Claude Code eines in dieser Reihenfolge:

127 

1281. Cloud-Anbieter-Anmeldedaten, wenn `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX` oder `CLAUDE_CODE_USE_FOUNDRY` gesetzt ist. Siehe [Integrationen von Drittanbietern](/de/third-party-integrations) für die Einrichtung.

1292. `ANTHROPIC_AUTH_TOKEN` Umgebungsvariable. Wird als `Authorization: Bearer` Header gesendet. Verwenden Sie dies, wenn Sie durch ein [LLM-Gateway oder einen Proxy](/de/llm-gateway) leiten, das sich mit Bearer-Tokens anstelle von Anthropic API-Schlüsseln authentifiziert.

1303. `ANTHROPIC_API_KEY` Umgebungsvariable. Wird als `X-Api-Key` Header gesendet. Verwenden Sie dies für direkten Anthropic API-Zugriff mit einem Schlüssel aus der [Claude Console](https://platform.claude.com). Im interaktiven Modus werden Sie einmal aufgefordert, den Schlüssel zu genehmigen oder abzulehnen, und Ihre Wahl wird gespeichert. Um dies später zu ändern, verwenden Sie den Umschalter „Use custom API key" in `/config`. Im nicht-interaktiven Modus (`-p`) wird der Schlüssel immer verwendet, wenn er vorhanden ist.

1314. [`apiKeyHelper`](/de/settings#available-settings) Skriptausgabe. Verwenden Sie dies für dynamische oder rotierende Anmeldedaten, wie kurzlebige Tokens, die aus einem Vault abgerufen werden.

1325. `CLAUDE_CODE_OAUTH_TOKEN` Umgebungsvariable. Ein langlebiges OAuth-Token, das von [`claude setup-token`](#generate-a-long-lived-token) generiert wird. Verwenden Sie dies für CI-Pipelines und Skripte, bei denen Browser-Anmeldung nicht verfügbar ist.

1336. Abonnement-OAuth-Anmeldedaten von `/login`. Dies ist die Standardeinstellung für Claude Pro, Max, Team und Enterprise-Benutzer.

134 

135Wenn Sie ein aktives Claude-Abonnement haben, aber auch `ANTHROPIC_API_KEY` in Ihrer Umgebung gesetzt haben, hat der API-Schlüssel Vorrang, sobald er genehmigt ist. Dies kann zu Authentifizierungsfehlern führen, wenn der Schlüssel zu einer deaktivierten oder abgelaufenen Organisation gehört. Führen Sie `unset ANTHROPIC_API_KEY` aus, um auf Ihr Abonnement zurückzugreifen, und überprüfen Sie `/status`, um zu bestätigen, welche Methode aktiv ist.

136 

137[Claude Code im Web](/de/claude-code-on-the-web) verwendet immer Ihre Abonnement-Anmeldedaten. `ANTHROPIC_API_KEY` und `ANTHROPIC_AUTH_TOKEN` in der Sandbox-Umgebung überschreiben diese nicht.

138 

139### Generieren Sie ein langlebiges Token

140 

141Für CI-Pipelines, Skripte oder andere Umgebungen, in denen interaktive Browser-Anmeldung nicht verfügbar ist, generieren Sie ein einjähriges OAuth-Token mit `claude setup-token`:

142 

143```bash theme={null}

144claude setup-token

145```

146 

147Der Befehl führt Sie durch die OAuth-Autorisierung und gibt ein Token im Terminal aus. Er speichert das Token nirgendwo; kopieren Sie es und legen Sie es als `CLAUDE_CODE_OAUTH_TOKEN` Umgebungsvariable überall dort fest, wo Sie sich authentifizieren möchten:

148 

149```bash theme={null}

150export CLAUDE_CODE_OAUTH_TOKEN=your-token

151```

152 

153Dieses Token authentifiziert sich mit Ihrem Claude-Abonnement und erfordert einen Pro-, Max-, Team- oder Enterprise-Plan. Es ist auf Inferenz beschränkt und kann keine [Remote Control](/de/remote-control) Sitzungen einrichten.

154 

155[Bare Mode](/de/headless#start-faster-with-bare-mode) liest `CLAUDE_CODE_OAUTH_TOKEN` nicht. Wenn Ihr Skript `--bare` übergibt, authentifizieren Sie sich stattdessen mit `ANTHROPIC_API_KEY` oder einem `apiKeyHelper`.

auto-mode-config.md +178 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Auto-Modus konfigurieren

6 

7> Teilen Sie dem Auto-Modus-Klassifizierer mit, welche Repos, Buckets und Domains Ihre Organisation vertraut. Legen Sie den Umgebungskontext fest, überschreiben Sie die Standard-Block- und Allow-Regeln, und überprüfen Sie Ihre effektive Konfiguration mit den Auto-Modus-CLI-Unterbefehlen.

8 

9[Auto-Modus](/de/permission-modes#eliminate-prompts-with-auto-mode) ermöglicht es Claude Code, ohne Berechtigungsaufforderungen zu laufen, indem jeder Tool-Aufruf durch einen Klassifizierer geleitet wird, der alles blockiert, das irreversibel, destruktiv oder außerhalb Ihrer Umgebung ausgerichtet ist. 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 

11<Note>

12 Auto-Modus ist auf Max-, Team-, Enterprise- und API-Plänen über die Anthropic API verfügbar. Es ist nicht auf Pro oder auf Bedrock, Vertex oder Foundry verfügbar. Wenn Claude Code meldet, dass Auto-Modus für Ihr Konto nicht verfügbar ist, überprüfen Sie die [vollständigen Anforderungen](/de/permission-modes#eliminate-prompts-with-auto-mode), die auch die unterstützten Modelle und die Admin-Aktivierung auf Team- und Enterprise-Plänen abdecken.

13</Note>

14 

15Standardmäßig vertraut der Klassifizierer nur dem Arbeitsverzeichnis und den konfigurierten Remotes des aktuellen Repos. Aktionen wie das Pushen zu Ihrer Unternehmens-Quellcode-Verwaltungsorganisation oder das Schreiben in einen Team-Cloud-Bucket werden blockiert, bis Sie sie zu `autoMode.environment` hinzufügen.

16 

17Informationen zum Aktivieren des Auto-Modus und was er standardmäßig blockiert, finden Sie unter [Berechtigungsmodi](/de/permission-modes#eliminate-prompts-with-auto-mode). Diese Seite ist die Konfigurationsreferenz.

18 

19Diese Seite behandelt folgende Themen:

20 

21* [Wählen Sie aus, wo Sie Regeln festlegen](#where-the-classifier-reads-configuration) über CLAUDE.md, Benutzereinstellungen und verwaltete Einstellungen

22* [Definieren Sie vertrauenswürdige Infrastruktur](#define-trusted-infrastructure) mit `autoMode.environment`

23* [Überschreiben Sie die Block- und Allow-Regeln](#override-the-block-and-allow-rules), wenn die Standardwerte nicht zu Ihrer Pipeline passen

24* [Überprüfen Sie Ihre effektive Konfiguration](#inspect-the-defaults-and-your-effective-config) mit den `claude auto-mode`-Unterbefehlen

25* [Überprüfen Sie Ablehnungen](#review-denials), damit Sie wissen, was Sie als Nächstes hinzufügen müssen

26 

27## Where the classifier reads configuration

28 

29Der Klassifizierer liest denselben [CLAUDE.md](/de/memory)-Inhalt, den Claude selbst lädt, sodass eine Anweisung wie „niemals Force-Push" in der CLAUDE.md Ihres Projekts sowohl Claude als auch den Klassifizierer gleichzeitig steuert. Beginnen Sie dort mit Projektkonventionen und Verhaltensregeln.

30 

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

32 

33| Bereich | Datei | Verwendung für |

34| :------------------------------- | :------------------------------------------------------ | :-------------------------------------------------------------------- |

35| Ein Entwickler | `~/.claude/settings.json` | Persönliche vertrauenswürdige Infrastruktur |

36| Ein Projekt, ein Entwickler | `.claude/settings.local.json` | Pro-Projekt-vertrauenswürdige Buckets oder Services, gitignored |

37| Organisationsweit | [Verwaltete Einstellungen](/de/server-managed-settings) | Vertrauenswürdige Infrastruktur, die an alle Entwickler verteilt wird |

38| `--settings`-Flag oder Agent SDK | Inline-JSON | Pro-Aufruf-Überschreibungen für Automatisierung |

39 

40Der Klassifizierer liest `autoMode` nicht aus gemeinsamen Projekteinstellungen in `.claude/settings.json`, daher kann ein eingechecktes Repo seine eigenen Allow-Regeln nicht injizieren.

41 

42Einträge aus jedem Bereich werden kombiniert. Ein Entwickler kann `environment`, `allow` und `soft_deny` mit persönlichen Einträgen erweitern, kann aber keine Einträge entfernen, die verwaltete Einstellungen bereitstellen. Da Allow-Regeln als Ausnahmen zu Block-Regeln innerhalb des Klassifizierers fungieren, kann ein von einem Entwickler hinzugefügter `allow`-Eintrag einen organisatorischen `soft_deny`-Eintrag überschreiben: Die Kombination ist additiv, keine harte Richtliniengrenze.

43 

44<Note>

45 Der Klassifizierer ist ein zweites Gate, das nach dem [Berechtigungssystem](/de/permissions) ausgeführt wird. Für Aktionen, die niemals ausgeführt werden dürfen, unabhängig von der Benutzerabsicht oder der Klassifizierer-Konfiguration, verwenden Sie `permissions.deny` in verwalteten Einstellungen, das die Aktion blockiert, bevor der Klassifizierer konsultiert wird, und kann nicht überschrieben werden.

46</Note>

47 

48## Vertrauenswürdige Infrastruktur definieren

49 

50Fü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 verwendet es, um zu entscheiden, was „extern" bedeutet, daher ist jedes Ziel, das nicht aufgelistet ist, ein potenzielles Exfiltrationsziel.

51 

52Die Standard-Umgebungsliste vertraut dem Arbeits-Repo und seinen konfigurierten Remotes. Um Ihre eigenen Einträge neben diesem Standard hinzuzufügen, fügen Sie die Literalzeichenfolge `"$defaults"` in das Array ein. Die Standard-Einträge werden an dieser Position eingefügt, sodass Ihre benutzerdefinierten Einträge vor oder nach ihnen stehen können.

53 

54```json theme={null}

55{

56 "autoMode": {

57 "environment": [

58 "$defaults",

59 "Source control: github.example.com/acme-corp and all repos under it",

60 "Trusted cloud buckets: s3://acme-build-artifacts, gs://acme-ml-datasets",

61 "Trusted internal domains: *.corp.example.com, api.internal.example.com",

62 "Key internal services: Jenkins at ci.example.com, Artifactory at artifacts.example.com"

63 ]

64 }

65}

66```

67 

68Einträge sind Prosa, keine Regex oder Tool-Muster. Der Klassifizierer liest sie als natürlichsprachige Regeln. Schreiben Sie sie so, wie Sie Ihre Infrastruktur einem neuen Ingenieur beschreiben würden. Ein gründlicher Umgebungsabschnitt deckt Folgendes ab:

69 

70* **Organisation**: Ihr Unternehmensname und wofür Claude Code hauptsächlich verwendet wird, wie Softwareentwicklung, Infrastrukturautomatisierung oder Datentechnik

71* **Quellcode-Verwaltung**: jede GitHub-, GitLab- oder Bitbucket-Organisation, zu der Ihre Entwickler pushen

72* **Cloud-Anbieter und vertrauenswürdige Buckets**: Bucket-Namen oder Präfixe, aus denen und in die Claude lesen und schreiben können sollte

73* **Vertrauenswürdige interne Domains**: Hostnamen für APIs, Dashboards und Services in Ihrem Netzwerk, wie `*.internal.example.com`

74* **Wichtige interne Services**: CI, Artifact-Registries, interne Paketindizes, Incident-Tools

75* **Zusätzlicher Kontext**: Einschränkungen in regulierten Branchen, Multi-Tenant-Infrastruktur oder Compliance-Anforderungen, die beeinflussen, was der Klassifizierer als riskant behandeln sollte

76 

77Eine nützliche Startvorlage: Füllen Sie die eingeklammerten Felder aus und entfernen Sie alle Zeilen, die nicht zutreffen.

78 

79```json theme={null}

80{

81 "autoMode": {

82 "environment": [

83 "$defaults",

84 "Organization: {COMPANY_NAME}. Primary use: {PRIMARY_USE_CASE, e.g. software development, infrastructure automation}",

85 "Source control: {SOURCE_CONTROL, e.g. GitHub org github.example.com/acme-corp}",

86 "Cloud provider(s): {CLOUD_PROVIDERS, e.g. AWS, GCP, Azure}",

87 "Trusted cloud buckets: {TRUSTED_BUCKETS, e.g. s3://acme-builds, gs://acme-datasets}",

88 "Trusted internal domains: {TRUSTED_DOMAINS, e.g. *.internal.example.com, api.example.com}",

89 "Key internal services: {SERVICES, e.g. Jenkins at ci.example.com, Artifactory at artifacts.example.com}",

90 "Additional context: {EXTRA, e.g. regulated industry, multi-tenant infrastructure, compliance requirements}"

91 ]

92 }

93}

94```

95 

96Je spezifischer der Kontext, den Sie geben, desto besser kann der Klassifizierer routinemäßige interne Operationen von Exfiltrationversuchen unterscheiden.

97 

98Sie müssen nicht alles auf einmal ausfüllen. Ein angemessener Rollout: Beginnen Sie mit den Standardwerten und fügen Sie Ihre Quellcode-Verwaltungsorganisation und wichtige interne Services hinzu, was die häufigsten falschen Positive wie das Pushen zu Ihren eigenen Repos behebt. Fügen Sie als Nächstes vertrauenswürdige Domains und Cloud-Buckets hinzu. Füllen Sie den Rest aus, wenn Blockierungen auftreten.

99 

100## Blockierungs- und Zulassungsregeln überschreiben

101 

102Zwei zusätzliche Felder ermöglichen es Ihnen, die integrierten Regellisten des Klassifizierers zu ersetzen: `autoMode.soft_deny` steuert, was blockiert wird, und `autoMode.allow` steuert, welche Ausnahmen gelten. Jedes ist ein Array von Prosabeschreibungen, das als natürlichsprachige Regeln gelesen wird. Es gibt kein `autoMode.deny`-Feld; um eine Aktion unabhängig von der Absicht hart zu blockieren, verwenden Sie [`permissions.deny`](/de/permissions), das vor dem Klassifizierer ausgeführt wird.

103 

104Innerhalb des Klassifizierers funktioniert die Vorrangigkeit in drei Ebenen:

105 

106* `soft_deny`-Regeln blockieren zuerst

107* `allow`-Regeln überschreiben dann übereinstimmende Blöcke als Ausnahmen

108* Explizite Benutzerabsicht überschreibt beide: 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

109 

110Allgemeine 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.

111 

112Um 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 Risiken hinzu, die spezifisch für Ihre Umgebung sind und die Standardwerte übersehen. Um die integrierten Regeln beizubehalten und gleichzeitig Ihre eigenen hinzuzufügen, fügen Sie die Literalzeichenkette `"$defaults"` in das Array ein. Die Standardregeln werden an dieser Position eingefügt, sodass Ihre benutzerdefinierten Regeln vor oder nach ihnen stehen können, und Sie erhalten weiterhin Updates, wenn sich die integrierte Liste über Versionen hinweg ändert.

113 

114```json theme={null}

115{

116 "autoMode": {

117 "environment": [

118 "$defaults",

119 "Source control: github.example.com/acme-corp and all repos under it"

120 ],

121 "allow": [

122 "$defaults",

123 "Deploying to the staging namespace is allowed: staging is isolated from production and resets nightly",

124 "Writing to s3://acme-scratch/ is allowed: ephemeral bucket with a 7-day lifecycle policy"

125 ],

126 "soft_deny": [

127 "$defaults",

128 "Never run database migrations outside the migrations CLI, even against dev databases",

129 "Never modify files under infra/terraform/prod/: production infrastructure changes go through the review workflow"

130 ]

131 }

132}

133```

134 

135<Danger>

136 Das Festlegen eines der Felder `environment`, `allow` oder `soft_deny` ohne `"$defaults"` ersetzt die gesamte Standardliste für diesen Abschnitt. Wenn Sie `soft_deny` mit einem einzelnen Eintrag festlegen und `"$defaults"` weglassen, wird jede integrierte Block-Regel verworfen: Force-Push, Datenexfiltration, `curl | bash`, Produktionsbereitstellungen und alle anderen Standard-Block-Regeln werden erlaubt. Lassen Sie `"$defaults"` nur weg, wenn Sie die vollständige Kontrolle über die Liste übernehmen möchten. Führen Sie in diesem Fall `claude auto-mode defaults` aus, um die integrierten Regeln auszudrucken, kopieren Sie sie in Ihre Einstellungsdatei, und überprüfen Sie dann jede Regel gegen Ihre eigene Pipeline und Risikotoleranz.

137</Danger>

138 

139Jeder Abschnitt wird unabhängig ausgewertet, sodass das Festlegen von `environment` allein die Standard-`allow`- und `soft_deny`-Listen intakt lässt.

140 

141## Überprüfen Sie die Standardwerte und Ihre effektive Konfiguration

142 

143Drei CLI-Unterbefehle helfen Ihnen beim Überprüfen und Validieren Ihrer Konfiguration.

144 

145Drucken Sie die integrierten `environment`-, `allow`- und `soft_deny`-Regeln als JSON:

146 

147```bash theme={null}

148claude auto-mode defaults

149```

150 

151Drucken Sie, was der Klassifizierer tatsächlich als JSON verwendet, mit Ihren Einstellungen angewendet, wo festgelegt, und Standardwerte andernfalls:

152 

153```bash theme={null}

154claude auto-mode config

155```

156 

157Erhalten Sie KI-Feedback zu Ihren benutzerdefinierten `allow`- und `soft_deny`-Regeln:

158 

159```bash theme={null}

160claude auto-mode critique

161```

162 

163Führen Sie `claude auto-mode config` nach dem Speichern Ihrer Einstellungen aus, um zu bestätigen, dass die effektiven Regeln das sind, was Sie erwarten, mit `"$defaults"` an Ort und Stelle erweitert. Wenn Sie benutzerdefinierte Regeln geschrieben haben, überprüft `claude auto-mode critique` diese und kennzeichnet Einträge, die mehrdeutig, redundant oder wahrscheinlich zu falschen Positiven führen. Wenn Sie eine integrierte Regel entfernen oder umschreiben müssen, anstatt sie hinzuzufügen, speichern Sie die Ausgabe von `claude auto-mode defaults` in einer Datei, bearbeiten Sie die Listen und fügen Sie das Ergebnis in Ihre Einstellungsdatei anstelle von `"$defaults"` ein.

164 

165## Review denials

166 

167Wenn der Auto-Modus einen Tool-Aufruf ablehnt, wird die Ablehnung in `/permissions` unter der Registerkarte „Kürzlich abgelehnt" aufgezeichnet. Drücken Sie `r` auf einer abgelehnten Aktion, um sie zum Wiederholen zu markieren: Wenn Sie das Dialogfeld beenden, sendet Claude Code eine Nachricht, die dem Modell mitteilt, dass es diesen Tool-Aufruf wiederholen kann, und setzt das Gespräch fort.

168 

169Wiederholte Ablehnungen für dasselbe Ziel bedeuten normalerweise, dass dem Klassifizierer der Kontext fehlt. Fügen Sie dieses Ziel zu `autoMode.environment` hinzu, führen Sie dann `claude auto-mode config` aus, um zu bestätigen, dass es wirksam wurde.

170 

171Um programmatisch auf Ablehnungen zu reagieren, verwenden Sie den [`PermissionDenied`-Hook](/de/hooks#permissiondenied).

172 

173## See also

174 

175* [Berechtigungsmodi](/de/permission-modes#eliminate-prompts-with-auto-mode): Was Auto-Modus ist, was er standardmäßig blockiert, und wie man ihn aktiviert

176* [Verwaltete Einstellungen](/de/server-managed-settings): Stellen Sie die `autoMode`-Konfiguration in Ihrer Organisation bereit

177* [Berechtigungen](/de/permissions): Allow-, Ask- und Deny-Regeln, die vor dem Klassifizierer gelten

178* [Einstellungen](/de/settings): Die vollständige Einstellungsreferenz, einschließlich des `autoMode`-Schlüssels

best-practices.md +583 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Best Practices für Claude Code

6 

7> Tipps und Muster, um das Beste aus Claude Code herauszuholen – von der Konfiguration Ihrer Umgebung bis zur Skalierung über parallele Sessions.

8 

9Claude Code ist eine agentengesteuerte Coding-Umgebung. Im Gegensatz zu einem Chatbot, der Fragen beantwortet und wartet, kann Claude Code Ihre Dateien lesen, Befehle ausführen, Änderungen vornehmen und autonom Probleme lösen, während Sie zuschauen, umleiten oder sich ganz zurückziehen.

10 

11Dies ändert Ihre Arbeitsweise. Anstatt Code selbst zu schreiben und Claude zur Überprüfung zu bitten, beschreiben Sie, was Sie möchten, und Claude findet heraus, wie es zu bauen ist. Claude erkundet, plant und implementiert.

12 

13Aber diese Autonomie bringt immer noch eine Lernkurve mit sich. Claude arbeitet innerhalb bestimmter Einschränkungen, die Sie verstehen müssen.

14 

15Dieser Leitfaden behandelt Muster, die sich in den internen Teams von Anthropic und bei Ingenieuren, die Claude Code in verschiedenen Codebases, Sprachen und Umgebungen nutzen, als wirksam erwiesen haben. Informationen zur Funktionsweise der agentengesteuerten Schleife finden Sie unter [How Claude Code works](/de/how-claude-code-works).

16 

17***

18 

19Die meisten Best Practices basieren auf einer Einschränkung: Claudes Kontextfenster füllt sich schnell, und die Leistung verschlechtert sich, wenn es sich füllt.

20 

21Claudes Kontextfenster enthält Ihre gesamte Konversation, einschließlich jeder Nachricht, jeder Datei, die Claude liest, und jeder Befehlsausgabe. Dies kann sich jedoch schnell füllen. Eine einzelne Debugging-Sitzung oder Codebase-Erkundung könnte Zehntausende von Tokens generieren und verbrauchen.

22 

23Dies ist wichtig, da die LLM-Leistung abnimmt, wenn sich der Kontext füllt. Wenn das Kontextfenster voll wird, könnte Claude anfangen, frühere Anweisungen zu „vergessen" oder mehr Fehler zu machen. Das Kontextfenster ist die wichtigste Ressource, die verwaltet werden muss. Um zu sehen, wie sich eine Session in der Praxis füllt, [schauen Sie sich eine interaktive Anleitung](/de/context-window) an, was beim Start geladen wird und was jedes Datei-Lesen kostet. Verfolgen Sie die Kontextnutzung kontinuierlich mit einer [benutzerdefinierten Statuszeile](/de/statusline), und siehe [Token-Nutzung reduzieren](/de/costs#reduce-token-usage) für Strategien zur Reduzierung der Token-Nutzung.

24 

25***

26 

27## Geben Sie Claude eine Möglichkeit, seine Arbeit zu überprüfen

28 

29<Tip>

30 Fügen Sie Tests, Screenshots oder erwartete Ausgaben ein, damit Claude sich selbst überprüfen kann. Dies ist das Wichtigste, das Sie tun können.

31</Tip>

32 

33Claude funktioniert dramatisch besser, wenn er seine eigene Arbeit überprüfen kann, wie Tests ausführen, Screenshots vergleichen und Ausgaben validieren.

34 

35Ohne klare Erfolgskriterien könnte es etwas produzieren, das richtig aussieht, aber tatsächlich nicht funktioniert. Sie werden zur einzigen Feedback-Schleife, und jeder Fehler erfordert Ihre Aufmerksamkeit.

36 

37| Strategie | Vorher | Nachher |

38| ----------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

39| **Überprüfungskriterien bereitstellen** | *„implementiere eine Funktion, die E-Mail-Adressen validiert"* | *„schreibe eine validateEmail-Funktion. Beispiel-Testfälle: [user@example.com](mailto:user@example.com) ist wahr, invalid ist falsch, [user@.com](mailto:user@.com) ist falsch. führe die Tests nach der Implementierung aus"* |

40| **UI-Änderungen visuell überprüfen** | *„mache das Dashboard besser aussehen"* | *„\[Screenshot einfügen] implementiere dieses Design. mache einen Screenshot des Ergebnisses und vergleiche ihn mit dem Original. liste Unterschiede auf und behebe sie"* |

41| **Grundursachen beheben, nicht Symptome** | *„der Build schlägt fehl"* | *„der Build schlägt mit diesem Fehler fehl: \[Fehler einfügen]. behebe ihn und überprüfe, dass der Build erfolgreich ist. behebe die Grundursache, unterdrücke den Fehler nicht"* |

42 

43UI-Änderungen können mit der [Claude in Chrome-Erweiterung](/de/chrome) überprüft werden. Sie öffnet neue Registerkarten in Ihrem Browser, testet die UI und iteriert, bis der Code funktioniert.

44 

45Ihre Überprüfung kann auch eine Test-Suite, ein Linter oder ein Bash-Befehl sein, der die Ausgabe überprüft. Investieren Sie darin, Ihre Überprüfung solide zu machen.

46 

47***

48 

49## Erkunden Sie zuerst, dann planen Sie, dann codieren Sie

50 

51<Tip>

52 Trennen Sie Forschung und Planung von der Implementierung, um zu vermeiden, das falsche Problem zu lösen.

53</Tip>

54 

55Wenn Claude direkt zum Codieren springt, kann dies zu Code führen, der das falsche Problem löst. Verwenden Sie [Plan Mode](/de/common-workflows#use-plan-mode-for-safe-code-analysis), um Erkundung von Ausführung zu trennen.

56 

57Der empfohlene Workflow hat vier Phasen:

58 

59<Steps>

60 <Step title="Erkunden">

61 Geben Sie Plan Mode ein. Claude liest Dateien und beantwortet Fragen, ohne Änderungen vorzunehmen.

62 

63 ```txt claude (Plan Mode) theme={null}

64 read /src/auth and understand how we handle sessions and login.

65 also look at how we manage environment variables for secrets.

66 ```

67 </Step>

68 

69 <Step title="Planen">

70 Bitten Sie Claude, einen detaillierten Implementierungsplan zu erstellen.

71 

72 ```txt claude (Plan Mode) theme={null}

73 I want to add Google OAuth. What files need to change?

74 What's the session flow? Create a plan.

75 ```

76 

77 Drücken Sie `Ctrl+G`, um den Plan in Ihrem Texteditor zur direkten Bearbeitung zu öffnen, bevor Claude fortfährt.

78 </Step>

79 

80 <Step title="Implementieren">

81 Wechseln Sie zurück zum Normal Mode und lassen Sie Claude codieren, wobei Sie gegen seinen Plan überprüfen.

82 

83 ```txt claude (Normal Mode) theme={null}

84 implement the OAuth flow from your plan. write tests for the

85 callback handler, run the test suite and fix any failures.

86 ```

87 </Step>

88 

89 <Step title="Commit">

90 Bitten Sie Claude, mit einer aussagekräftigen Nachricht zu committen und einen PR zu erstellen.

91 

92 ```txt claude (Normal Mode) theme={null}

93 commit with a descriptive message and open a PR

94 ```

95 </Step>

96</Steps>

97 

98<Callout>

99 Plan Mode ist nützlich, bringt aber auch Overhead mit sich.

100 

101 Für Aufgaben, bei denen der Umfang klar ist und die Lösung klein ist (wie das Beheben eines Tippfehlers, das Hinzufügen einer Log-Zeile oder das Umbenennen einer Variablen), bitten Sie Claude, es direkt zu tun.

102 

103 Planung ist am nützlichsten, wenn Sie unsicher über den Ansatz sind, wenn die Änderung mehrere Dateien ändert, oder wenn Sie mit dem zu ändernden Code nicht vertraut sind. Wenn Sie den Diff in einem Satz beschreiben könnten, überspringen Sie den Plan.

104</Callout>

105 

106***

107 

108## Geben Sie spezifischen Kontext in Ihren Prompts an

109 

110<Tip>

111 Je präziser Ihre Anweisungen sind, desto weniger Korrektionen benötigen Sie.

112</Tip>

113 

114Claude kann Absichten ableiten, aber er kann nicht Ihre Gedanken lesen. Verweisen Sie auf spezifische Dateien, erwähnen Sie Einschränkungen und zeigen Sie auf Beispielmuster.

115 

116| Strategie | Vorher | Nachher |

117| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

118| **Begrenzen Sie die Aufgabe.** Geben Sie an, welche Datei, welches Szenario und Testpräferenzen. | *„füge Tests für foo.py hinzu"* | *„schreibe einen Test für foo.py, der den Edge Case abdeckt, in dem der Benutzer abgemeldet ist. vermeide Mocks."* |

119| **Zeigen Sie auf Quellen.** Leiten Sie Claude zur Quelle, die eine Frage beantworten kann. | *„warum hat ExecutionFactory eine so seltsame API?"* | *„schaue dir die Git-Historie von ExecutionFactory an und fasse zusammen, wie seine API entstanden ist"* |

120| **Verweisen Sie auf vorhandene Muster.** Zeigen Sie Claude Muster in Ihrer Codebase. | *„füge ein Calendar-Widget hinzu"* | *„schaue dir an, wie vorhandene Widgets auf der Startseite implementiert sind, um die Muster zu verstehen. HotDogWidget.php ist ein gutes Beispiel. folge dem Muster, um ein neues Calendar-Widget zu implementieren, das dem Benutzer ermöglicht, einen Monat auszuwählen und vorwärts/rückwärts zu blättern, um ein Jahr auszuwählen. baue von Grund auf ohne Bibliotheken außer denen, die bereits in der Codebase verwendet werden."* |

121| **Beschreiben Sie das Symptom.** Geben Sie das Symptom, den wahrscheinlichen Ort und an, wie „behoben" aussieht. | *„behebe den Login-Bug"* | *„Benutzer berichten, dass Login nach Session-Timeout fehlschlägt. überprüfe den Auth-Flow in src/auth/, besonders Token-Refresh. schreibe einen fehlgeschlagenen Test, der das Problem reproduziert, dann behebe es"* |

122 

123Vage Prompts können nützlich sein, wenn Sie erkunden und Kurskorrektionen vornehmen können. Ein Prompt wie `„was würdest du in dieser Datei verbessern?"` kann Dinge an die Oberfläche bringen, an die Sie nicht gedacht hätten zu fragen.

124 

125### Geben Sie umfangreiche Inhalte an

126 

127<Tip>

128 Verwenden Sie `@`, um auf Dateien zu verweisen, fügen Sie Screenshots/Bilder ein oder leiten Sie Daten direkt weiter.

129</Tip>

130 

131Sie können Claude auf mehrere Arten umfangreiche Daten bereitstellen:

132 

133* **Verweisen Sie auf Dateien mit `@`** anstatt zu beschreiben, wo Code lebt. Claude liest die Datei, bevor er antwortet.

134* **Fügen Sie Bilder direkt ein**. Kopieren/fügen Sie Bilder ein oder ziehen Sie sie in den Prompt.

135* **Geben Sie URLs** für Dokumentation und API-Referenzen an. Verwenden Sie `/permissions`, um häufig verwendete Domains auf die Whitelist zu setzen.

136* **Leiten Sie Daten weiter**, indem Sie `cat error.log | claude` ausführen, um Dateiinhalte direkt zu senden.

137* **Lassen Sie Claude abrufen, was es braucht**. Sagen Sie Claude, dass es Kontext selbst mit Bash-Befehlen, MCP-Tools oder durch Lesen von Dateien abrufen soll.

138 

139***

140 

141## Konfigurieren Sie Ihre Umgebung

142 

143Ein paar Einrichtungsschritte machen Claude Code über alle Ihre Sessions hinweg erheblich effektiver. Einen vollständigen Überblick über Erweiterungsfunktionen und wann Sie jede verwenden sollten, finden Sie unter [Extend Claude Code](/de/features-overview).

144 

145### Schreiben Sie eine effektive CLAUDE.md

146 

147<Tip>

148 Führen Sie `/init` aus, um eine Starter-CLAUDE.md-Datei basierend auf Ihrer aktuellen Projektstruktur zu generieren, und verfeinern Sie sie dann im Laufe der Zeit.

149</Tip>

150 

151CLAUDE.md ist eine spezielle Datei, die Claude zu Beginn jeder Konversation liest. Fügen Sie Bash-Befehle, Code-Stil und Workflow-Regeln ein. Dies gibt Claude persistenten Kontext, den es nicht aus Code allein ableiten kann.

152 

153Der `/init`-Befehl analysiert Ihre Codebase, um Build-Systeme, Test-Frameworks und Code-Muster zu erkennen, und gibt Ihnen eine solide Grundlage zum Verfeinern.

154 

155Es gibt kein erforderliches Format für CLAUDE.md-Dateien, aber halten Sie es kurz und für Menschen lesbar. Zum Beispiel:

156 

157```markdown CLAUDE.md theme={null}

158# Code style

159- Use ES modules (import/export) syntax, not CommonJS (require)

160- Destructure imports when possible (eg. import { foo } from 'bar')

161 

162# Workflow

163- Be sure to typecheck when you're done making a series of code changes

164- Prefer running single tests, and not the whole test suite, for performance

165```

166 

167CLAUDE.md wird jede Session geladen, also fügen Sie nur Dinge ein, die weit verbreitet gelten. Für Domänenwissen oder Workflows, die nur manchmal relevant sind, verwenden Sie stattdessen [skills](/de/skills). Claude lädt sie bei Bedarf, ohne jede Konversation zu überlasten.

168 

169Halten Sie es prägnant. Fragen Sie sich für jede Zeile: *„Würde das Entfernen dieser Zeile dazu führen, dass Claude Fehler macht?"* Wenn nicht, streichen Sie es. Überladene CLAUDE.md-Dateien führen dazu, dass Claude Ihre tatsächlichen Anweisungen ignoriert!

170 

171| ✅ Einschließen | ❌ Ausschließen |

172| -------------------------------------------------------------------- | ------------------------------------------------------------------- |

173| Bash-Befehle, die Claude nicht erraten kann | Alles, was Claude durch Lesen von Code herausfinden kann |

174| Code-Stil-Regeln, die von Standardwerten abweichen | Standard-Sprachkonventionen, die Claude bereits kennt |

175| Test-Anweisungen und bevorzugte Test-Runner | Detaillierte API-Dokumentation (verlinken Sie stattdessen auf Docs) |

176| Repository-Etikette (Branch-Naming, PR-Konventionen) | Informationen, die sich häufig ändern |

177| Architektonische Entscheidungen, die für Ihr Projekt spezifisch sind | Lange Erklärungen oder Tutorials |

178| Entwicklungsumgebungs-Eigenheiten (erforderliche Umgebungsvariablen) | Datei-für-Datei-Beschreibungen der Codebase |

179| Häufige Fallstricke oder nicht offensichtliche Verhaltensweisen | Selbstverständliche Praktiken wie „schreibe sauberen Code" |

180 

181Wenn Claude etwas tut, das Sie nicht möchten, obwohl es eine Regel dagegen gibt, ist die Datei wahrscheinlich zu lang und die Regel geht verloren. Wenn Claude Fragen stellt, die in CLAUDE.md beantwortet werden, könnte die Formulierung mehrdeutig sein. Behandeln Sie CLAUDE.md wie Code: überprüfen Sie es, wenn etwas schiefgeht, bereinigen Sie es regelmäßig, und testen Sie Änderungen, indem Sie beobachten, ob sich Claudes Verhalten tatsächlich ändert.

182 

183Sie können Anweisungen durch Hinzufügen von Betonung (z. B. „WICHTIG" oder „DU MUSST") abstimmen, um die Einhaltung zu verbessern. Überprüfen Sie CLAUDE.md in Git, damit Ihr Team beitragen kann. Die Datei nimmt im Laufe der Zeit an Wert zu.

184 

185CLAUDE.md-Dateien können zusätzliche Dateien mit der `@path/to/import`-Syntax importieren:

186 

187```markdown CLAUDE.md theme={null}

188See @README.md for project overview and @package.json for available npm commands.

189 

190# Additional Instructions

191- Git workflow: @docs/git-instructions.md

192- Personal overrides: @~/.claude/my-project-instructions.md

193```

194 

195Sie können CLAUDE.md-Dateien an mehreren Orten platzieren:

196 

197* **Home-Ordner (`~/.claude/CLAUDE.md`)**: gilt für alle Claude-Sessions

198* **Projekt-Root (`./CLAUDE.md`)**: überprüfen Sie in Git, um mit Ihrem Team zu teilen

199* **Projekt-Root (`./CLAUDE.local.md`)**: persönliche projektspezifische Notizen; fügen Sie diese Datei zu Ihrer `.gitignore` hinzu, damit sie nicht mit Ihrem Team geteilt wird

200* **Übergeordnete Verzeichnisse**: nützlich für Monorepos, bei denen sowohl `root/CLAUDE.md` als auch `root/foo/CLAUDE.md` automatisch eingezogen werden

201* **Untergeordnete Verzeichnisse**: Claude zieht untergeordnete CLAUDE.md-Dateien bei Bedarf ein, wenn mit Dateien in diesen Verzeichnissen gearbeitet wird

202 

203### Konfigurieren Sie Berechtigungen

204 

205<Tip>

206 Verwenden Sie [Auto Mode](/de/permission-modes#eliminate-prompts-with-auto-mode), um einen Klassifizierer die Genehmigungen handhaben zu lassen, `/permissions`, um spezifische Befehle auf die Whitelist zu setzen, oder `/sandbox` für Isolation auf Betriebssystemebene. Jede reduziert Unterbrechungen, während Sie die Kontrolle behalten.

207</Tip>

208 

209Standardmäßig fordert Claude Code Berechtigung für Aktionen an, die Ihr System ändern könnten: Dateischreibvorgänge, Bash-Befehle, MCP-Tools usw. Dies ist sicher, aber mühsam. Nach der zehnten Genehmigung überprüfen Sie nicht wirklich mehr, Sie klicken einfach durch. Es gibt drei Möglichkeiten, diese Unterbrechungen zu reduzieren:

210 

211* **Auto Mode**: ein separates Klassifizierer-Modell überprüft Befehle und blockiert nur das, was riskant aussieht: Scope-Eskalation, unbekannte Infrastruktur oder feindselige-Inhalts-getriebene Aktionen. Am besten, wenn Sie der allgemeinen Richtung einer Aufgabe vertrauen, aber nicht jeden Schritt durchklicken möchten

212* **Berechtigungs-Whitelists**: erlauben Sie spezifische Tools, die Sie kennen und die sicher sind, wie `npm run lint` oder `git commit`

213* **Sandboxing**: aktivieren Sie Isolation auf Betriebssystemebene, die Dateisystem- und Netzwerkzugriff einschränkt und Claude ermöglicht, freier innerhalb definierter Grenzen zu arbeiten

214 

215Lesen Sie mehr über [Berechtigungsmodi](/de/permission-modes), [Berechtigungsregeln](/de/permissions) und [Sandboxing](/de/sandboxing).

216 

217### Verwenden Sie CLI-Tools

218 

219<Tip>

220 Sagen Sie Claude Code, dass es CLI-Tools wie `gh`, `aws`, `gcloud` und `sentry-cli` bei der Interaktion mit externen Diensten verwenden soll.

221</Tip>

222 

223CLI-Tools sind die kontexteffizienteste Möglichkeit, mit externen Diensten zu interagieren. Wenn Sie GitHub verwenden, installieren Sie die `gh`-CLI. Claude weiß, wie man sie zum Erstellen von Issues, Öffnen von Pull Requests und Lesen von Kommentaren verwendet. Ohne `gh` kann Claude immer noch die GitHub-API verwenden, aber unauthentifizierte Anfragen treffen oft auf Rate Limits.

224 

225Claude ist auch effektiv beim Erlernen von CLI-Tools, die er nicht bereits kennt. Versuchen Sie Prompts wie `Use 'foo-cli-tool --help' to learn about foo tool, then use it to solve A, B, C.`

226 

227### Verbinden Sie MCP-Server

228 

229<Tip>

230 Führen Sie `claude mcp add` aus, um externe Tools wie Notion, Figma oder Ihre Datenbank zu verbinden.

231</Tip>

232 

233Mit [MCP-Servern](/de/mcp) können Sie Claude bitten, Funktionen von Issue-Trackern zu implementieren, Datenbanken abzufragen, Überwachungsdaten zu analysieren, Designs von Figma zu integrieren und Workflows zu automatisieren.

234 

235### Richten Sie Hooks ein

236 

237<Tip>

238 Verwenden Sie Hooks für Aktionen, die jedes Mal mit null Ausnahmen stattfinden müssen.

239</Tip>

240 

241[Hooks](/de/hooks-guide) führen Skripte automatisch an bestimmten Punkten in Claudes Workflow aus. Im Gegensatz zu CLAUDE.md-Anweisungen, die beratend sind, sind Hooks deterministisch und garantieren, dass die Aktion stattfindet.

242 

243Claude kann Hooks für Sie schreiben. Versuchen Sie Prompts wie *„Schreibe einen Hook, der eslint nach jeder Dateibearbeitung ausführt"* oder *„Schreibe einen Hook, der Schreibvorgänge in den Migrations-Ordner blockiert."* Bearbeiten Sie `.claude/settings.json` direkt, um Hooks von Hand zu konfigurieren, und führen Sie `/hooks` aus, um zu durchsuchen, was konfiguriert ist.

244 

245### Erstellen Sie Skills

246 

247<Tip>

248 Erstellen Sie `SKILL.md`-Dateien in `.claude/skills/`, um Claude Domänenwissen und wiederverwendbare Workflows zu geben.

249</Tip>

250 

251[Skills](/de/skills) erweitern Claudes Wissen mit Informationen, die für Ihr Projekt, Team oder Ihre Domäne spezifisch sind. Claude wendet sie automatisch an, wenn relevant, oder Sie können sie direkt mit `/skill-name` aufrufen.

252 

253Erstellen Sie einen Skill, indem Sie ein Verzeichnis mit einer `SKILL.md` zu `.claude/skills/` hinzufügen:

254 

255```markdown .claude/skills/api-conventions/SKILL.md theme={null}

256---

257name: api-conventions

258description: REST API design conventions for our services

259---

260# API Conventions

261- Use kebab-case for URL paths

262- Use camelCase for JSON properties

263- Always include pagination for list endpoints

264- Version APIs in the URL path (/v1/, /v2/)

265```

266 

267Skills können auch wiederverwendbare Workflows definieren, die Sie direkt aufrufen:

268 

269```markdown .claude/skills/fix-issue/SKILL.md theme={null}

270---

271name: fix-issue

272description: Fix a GitHub issue

273disable-model-invocation: true

274---

275Analyze and fix the GitHub issue: $ARGUMENTS.

276 

2771. Use `gh issue view` to get the issue details

2782. Understand the problem described in the issue

2793. Search the codebase for relevant files

2804. Implement the necessary changes to fix the issue

2815. Write and run tests to verify the fix

2826. Ensure code passes linting and type checking

2837. Create a descriptive commit message

2848. Push and create a PR

285```

286 

287Führen Sie `/fix-issue 1234` aus, um es aufzurufen. Verwenden Sie `disable-model-invocation: true` für Workflows mit Nebenwirkungen, die Sie manuell auslösen möchten.

288 

289### Erstellen Sie benutzerdefinierte Subagents

290 

291<Tip>

292 Definieren Sie spezialisierte Assistenten in `.claude/agents/`, an die Claude für isolierte Aufgaben delegieren kann.

293</Tip>

294 

295[Subagents](/de/sub-agents) laufen in ihrem eigenen Kontext mit ihrem eigenen Satz erlaubter Tools. Sie sind nützlich für Aufgaben, die viele Dateien lesen oder spezialisierte Aufmerksamkeit benötigen, ohne Ihre Hauptkonversation zu überlasten.

296 

297```markdown .claude/agents/security-reviewer.md theme={null}

298---

299name: security-reviewer

300description: Reviews code for security vulnerabilities

301tools: Read, Grep, Glob, Bash

302model: opus

303---

304You are a senior security engineer. Review code for:

305- Injection vulnerabilities (SQL, XSS, command injection)

306- Authentication and authorization flaws

307- Secrets or credentials in code

308- Insecure data handling

309 

310Provide specific line references and suggested fixes.

311```

312 

313Sagen Sie Claude explizit, dass es Subagents verwenden soll: *„Verwende einen Subagent, um diesen Code auf Sicherheitsprobleme zu überprüfen."*

314 

315### Installieren Sie Plugins

316 

317<Tip>

318 Führen Sie `/plugin` aus, um den Marketplace zu durchsuchen. Plugins fügen Skills, Tools und Integrationen ohne Konfiguration hinzu.

319</Tip>

320 

321[Plugins](/de/plugins) bündeln Skills, Hooks, Subagents und MCP-Server in eine einzelne installierbare Einheit aus der Community und von Anthropic. Wenn Sie mit einer typisierten Sprache arbeiten, installieren Sie ein [Code-Intelligence-Plugin](/de/discover-plugins#code-intelligence), um Claude präzise Symbol-Navigation und automatische Fehlererkennung nach Bearbeitungen zu geben.

322 

323Anleitungen zur Auswahl zwischen Skills, Subagents, Hooks und MCP finden Sie unter [Extend Claude Code](/de/features-overview#match-features-to-your-goal).

324 

325***

326 

327## Kommunizieren Sie effektiv

328 

329Die Art und Weise, wie Sie mit Claude Code kommunizieren, hat einen großen Einfluss auf die Qualität der Ergebnisse.

330 

331### Stellen Sie Codebase-Fragen

332 

333<Tip>

334 Stellen Sie Claude Fragen, die Sie einem Senior Engineer stellen würden.

335</Tip>

336 

337Wenn Sie sich in eine neue Codebase einarbeiten, verwenden Sie Claude Code zum Lernen und Erkunden. Sie können Claude die gleichen Fragen stellen, die Sie einem anderen Engineer stellen würden:

338 

339* Wie funktioniert Logging?

340* Wie erstelle ich einen neuen API-Endpunkt?

341* Was macht `async move { ... }` auf Zeile 134 von `foo.rs`?

342* Welche Edge Cases behandelt `CustomerOnboardingFlowImpl`?

343* Warum ruft dieser Code `foo()` anstelle von `bar()` auf Zeile 333 auf?

344 

345Die Verwendung von Claude Code auf diese Weise ist ein effektiver Onboarding-Workflow, der die Einarbeitungszeit verbessert und die Belastung anderer Engineers reduziert. Keine spezielle Prompt-Formulierung erforderlich: stellen Sie Fragen direkt.

346 

347### Lassen Sie Claude Sie interviewen

348 

349<Tip>

350 Für größere Features lassen Sie Claude Sie zuerst interviewen. Beginnen Sie mit einem minimalen Prompt und bitten Sie Claude, Sie mit dem `AskUserQuestion`-Tool zu interviewen.

351</Tip>

352 

353Claude stellt Fragen zu Dingen, die Sie möglicherweise noch nicht berücksichtigt haben, einschließlich technischer Implementierung, UI/UX, Edge Cases und Tradeoffs.

354 

355```text theme={null}

356I want to build [brief description]. Interview me in detail using the AskUserQuestion tool.

357 

358Ask about technical implementation, UI/UX, edge cases, concerns, and tradeoffs. Don't ask obvious questions, dig into the hard parts I might not have considered.

359 

360Keep interviewing until we've covered everything, then write a complete spec to SPEC.md.

361```

362 

363Sobald die Spezifikation fertig ist, starten Sie eine neue Session, um sie auszuführen. Die neue Session hat einen sauberen Kontext, der sich vollständig auf die Implementierung konzentriert, und Sie haben eine geschriebene Spezifikation zum Referenzieren.

364 

365***

366 

367## Verwalten Sie Ihre Session

368 

369Konversationen sind persistent und reversibel. Nutzen Sie dies zu Ihrem Vorteil!

370 

371### Korrigieren Sie früh und oft

372 

373<Tip>

374 Korrigieren Sie Claude, sobald Sie bemerken, dass es vom Weg abkommt.

375</Tip>

376 

377Die besten Ergebnisse kommen aus engen Feedback-Schleifen. Obwohl Claude gelegentlich Probleme beim ersten Versuch perfekt löst, führt eine schnelle Korrektur im Allgemeinen zu besseren Lösungen schneller.

378 

379* **`Esc`**: stoppen Sie Claude mitten in einer Aktion mit der `Esc`-Taste. Der Kontext wird beibehalten, sodass Sie umleiten können.

380* **`Esc + Esc` oder `/rewind`**: drücken Sie `Esc` zweimal oder führen Sie `/rewind` aus, um das Rewind-Menü zu öffnen und die vorherige Konversation und den Code-Status wiederherzustellen, oder fassen Sie eine ausgewählte Nachricht zusammen.

381* **`"Undo that"`**: lassen Sie Claude seine Änderungen rückgängig machen.

382* **`/clear`**: setzen Sie den Kontext zwischen nicht verwandten Aufgaben zurück. Lange Sessions mit irrelevantem Kontext können die Leistung reduzieren.

383 

384Wenn Sie Claude mehr als zweimal bei demselben Problem in einer Session korrigiert haben, ist der Kontext mit fehlgeschlagenen Ansätzen überladen. Führen Sie `/clear` aus und beginnen Sie mit einem spezifischeren Prompt, der das Gelernte einbezieht. Eine saubere Session mit einem besseren Prompt übertrifft fast immer eine lange Session mit angesammelten Korrektionen.

385 

386### Verwalten Sie den Kontext aggressiv

387 

388<Tip>

389 Führen Sie `/clear` zwischen nicht verwandten Aufgaben aus, um den Kontext zurückzusetzen.

390</Tip>

391 

392Claude Code komprimiert automatisch die Konversationshistorie, wenn Sie sich den Kontextlimits nähern, was wichtigen Code und Entscheidungen bewahrt und Platz freimacht.

393 

394Während langer Sessions kann sich Claudes Kontextfenster mit irrelevanten Konversationen, Dateiinhalten und Befehlen füllen. Dies kann die Leistung reduzieren und Claude manchmal ablenken.

395 

396* Verwenden Sie `/clear` häufig zwischen Aufgaben, um das Kontextfenster vollständig zurückzusetzen

397* Wenn die automatische Komprimierung ausgelöst wird, fasst Claude zusammen, was am wichtigsten ist, einschließlich Code-Muster, Dateizustände und wichtige Entscheidungen

398* Für mehr Kontrolle führen Sie `/compact <instructions>` aus, wie `/compact Focus on the API changes`

399* Um nur einen Teil der Konversation zu komprimieren, verwenden Sie `Esc + Esc` oder `/rewind`, wählen Sie einen Nachricht-Checkpoint und wählen Sie **Summarize from here**. Dies verdichtet Nachrichten von diesem Punkt an, während der frühere Kontext erhalten bleibt.

400* Passen Sie das Komprimierungsverhalten in CLAUDE.md mit Anweisungen wie `„When compacting, always preserve the full list of modified files and any test commands"` an, um sicherzustellen, dass kritischer Kontext die Zusammenfassung überlebt

401* Für schnelle Fragen, die nicht im Kontext bleiben müssen, verwenden Sie [`/btw`](/de/interactive-mode#side-questions-with-%2Fbtw). Die Antwort erscheint in einer verwerfbaren Überlagerung und gelangt niemals in die Konversationshistorie, sodass Sie ein Detail überprüfen können, ohne den Kontext zu vergrößern.

402 

403### Verwenden Sie Subagents für Untersuchungen

404 

405<Tip>

406 Delegieren Sie Forschung mit `„use subagents to investigate X"`. Sie erkunden in einem separaten Kontext und halten Ihre Hauptkonversation sauber für die Implementierung.

407</Tip>

408 

409Da der Kontext Ihre grundlegende Einschränkung ist, sind Subagents eines der mächtigsten verfügbaren Tools. Wenn Claude eine Codebase erforscht, liest er viele Dateien, die alle Ihren Kontext verbrauchen. Subagents laufen in separaten Kontextfenstern und berichten Zusammenfassungen zurück:

410 

411```text theme={null}

412Use subagents to investigate how our authentication system handles token

413refresh, and whether we have any existing OAuth utilities I should reuse.

414```

415 

416Der Subagent erkundet die Codebase, liest relevante Dateien und berichtet Erkenntnisse zurück, alles ohne Ihre Hauptkonversation zu überlasten.

417 

418Sie können Subagents auch zur Überprüfung verwenden, nachdem Claude etwas implementiert hat:

419 

420```text theme={null}

421use a subagent to review this code for edge cases

422```

423 

424### Rewind mit Checkpoints

425 

426<Tip>

427 Jede Aktion, die Claude macht, erstellt einen Checkpoint. Sie können Konversation, Code oder beides zu jedem vorherigen Checkpoint wiederherstellen.

428</Tip>

429 

430Claude erstellt automatisch Checkpoints vor Änderungen. Doppeltippen Sie auf `Escape` oder führen Sie `/rewind` aus, um das Rewind-Menü zu öffnen. Sie können nur Konversation wiederherstellen, nur Code wiederherstellen, beides wiederherstellen oder eine ausgewählte Nachricht zusammenfassen. Siehe [Checkpointing](/de/checkpointing) für Details.

431 

432Anstatt jeden Schritt sorgfältig zu planen, können Sie Claude bitten, etwas Riskantes zu versuchen. Wenn es nicht funktioniert, rewind und versuchen Sie einen anderen Ansatz. Checkpoints bleiben über Sessions hinweg erhalten, sodass Sie Ihr Terminal schließen und später immer noch rewind können.

433 

434<Warning>

435 Checkpoints verfolgen nur Änderungen, die *von Claude* vorgenommen wurden, nicht externe Prozesse. Dies ist kein Ersatz für Git.

436</Warning>

437 

438### Setzen Sie Konversationen fort

439 

440<Tip>

441 Führen Sie `claude --continue` aus, um dort weiterzumachen, wo Sie aufgehört haben, oder `--resume`, um aus aktuellen Sessions auszuwählen.

442</Tip>

443 

444Claude Code speichert Konversationen lokal. Wenn sich eine Aufgabe über mehrere Sessions erstreckt, müssen Sie den Kontext nicht erneut erklären:

445 

446```bash theme={null}

447claude --continue # Resume the most recent conversation

448claude --resume # Select from recent conversations

449```

450 

451Verwenden Sie `/rename`, um Sessions aussagekräftige Namen wie `„oauth-migration"` oder `„debugging-memory-leak"` zu geben, damit Sie sie später finden können. Behandeln Sie Sessions wie Branches: verschiedene Workstreams können separate, persistente Kontexte haben.

452 

453***

454 

455## Automatisieren und skalieren Sie

456 

457Sobald Sie mit einem Claude effektiv sind, multiplizieren Sie Ihre Ausgabe mit parallelen Sessions, nicht-interaktivem Modus und Fan-Out-Mustern.

458 

459Alles bisher geht von einem Menschen, einem Claude und einer Konversation aus. Aber Claude Code skaliert horizontal. Die Techniken in diesem Abschnitt zeigen, wie Sie mehr erreichen können.

460 

461### Führen Sie nicht-interaktiven Modus aus

462 

463<Tip>

464 Verwenden Sie `claude -p "prompt"` in CI, Pre-Commit-Hooks oder Skripten. Fügen Sie `--output-format stream-json` für Streaming-JSON-Ausgabe hinzu.

465</Tip>

466 

467Mit `claude -p "your prompt"` können Sie Claude nicht-interaktiv ohne eine Session ausführen. Der nicht-interaktive Modus ist, wie Sie Claude in CI-Pipelines, Pre-Commit-Hooks oder jeden automatisierten Workflow integrieren. Die Ausgabeformate ermöglichen es Ihnen, Ergebnisse programmgesteuert zu analysieren: Klartext, JSON oder Streaming-JSON.

468 

469```bash theme={null}

470# One-off queries

471claude -p "Explain what this project does"

472 

473# Structured output for scripts

474claude -p "List all API endpoints" --output-format json

475 

476# Streaming for real-time processing

477claude -p "Analyze this log file" --output-format stream-json

478```

479 

480### Führen Sie mehrere Claude-Sessions aus

481 

482<Tip>

483 Führen Sie mehrere Claude-Sessions parallel aus, um die Entwicklung zu beschleunigen, isolierte Experimente auszuführen oder komplexe Workflows zu starten.

484</Tip>

485 

486Es gibt drei Hauptmöglichkeiten, parallele Sessions auszuführen:

487 

488* [Claude Code Desktop-App](/de/desktop#work-in-parallel-with-sessions): Verwalten Sie mehrere lokale Sessions visuell. Jede Session erhält ihren eigenen isolierten Worktree.

489* [Claude Code im Web](/de/claude-code-on-the-web): Führen Sie auf der sicheren Cloud-Infrastruktur von Anthropic in isolierten VMs aus.

490* [Agent Teams](/de/agent-teams): Automatisierte Koordination mehrerer Sessions mit gemeinsamen Aufgaben, Messaging und einem Team Lead.

491 

492Über die Parallelisierung von Arbeit hinaus ermöglichen mehrere Sessions qualitätsorientierte Workflows. Ein frischer Kontext verbessert die Code-Überprüfung, da Claude nicht durch Code, den es gerade geschrieben hat, voreingenommen ist.

493 

494Verwenden Sie beispielsweise ein Writer/Reviewer-Muster:

495 

496| Session A (Writer) | Session B (Reviewer) |

497| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

498| `Implement a rate limiter for our API endpoints` | |

499| | `Review the rate limiter implementation in @src/middleware/rateLimiter.ts. Look for edge cases, race conditions, and consistency with our existing middleware patterns.` |

500| `Here's the review feedback: [Session B output]. Address these issues.` | |

501 

502Sie können etwas Ähnliches mit Tests tun: lassen Sie einen Claude Tests schreiben, dann schreiben Sie einen anderen Code, um sie zu bestehen.

503 

504### Fan Out über Dateien

505 

506<Tip>

507 Schleifen Sie durch Aufgaben, die `claude -p` für jede aufrufen. Verwenden Sie `--allowedTools`, um Berechtigungen für Batch-Operationen zu begrenzen.

508</Tip>

509 

510Für große Migrationen oder Analysen können Sie Arbeit über viele parallele Claude-Aufrufe verteilen:

511 

512<Steps>

513 <Step title="Generieren Sie eine Aufgabenliste">

514 Lassen Sie Claude alle Dateien auflisten, die migriert werden müssen (z. B. `list all 2,000 Python files that need migrating`)

515 </Step>

516 

517 <Step title="Schreiben Sie ein Skript, um die Liste zu durchlaufen">

518 ```bash theme={null}

519 for file in $(cat files.txt); do

520 claude -p "Migrate $file from React to Vue. Return OK or FAIL." \

521 --allowedTools "Edit,Bash(git commit *)"

522 done

523 ```

524 </Step>

525 

526 <Step title="Testen Sie auf ein paar Dateien, dann führen Sie in großem Maßstab aus">

527 Verfeinern Sie Ihren Prompt basierend auf dem, was bei den ersten 2-3 Dateien schiefgeht, dann führen Sie auf dem vollständigen Satz aus. Das `--allowedTools`-Flag beschränkt, was Claude tun kann, was wichtig ist, wenn Sie unbeaufsichtigt laufen.

528 </Step>

529</Steps>

530 

531Sie können Claude auch in vorhandene Daten-/Verarbeitungs-Pipelines integrieren:

532 

533```bash theme={null}

534claude -p "<your prompt>" --output-format json | your_command

535```

536 

537Verwenden Sie `--verbose` zum Debuggen während der Entwicklung und schalten Sie es in der Produktion aus.

538 

539### Führen Sie autonom mit Auto Mode aus

540 

541Für ununterbrochene Ausführung mit Hintergrund-Sicherheitsprüfungen verwenden Sie [Auto Mode](/de/permission-modes#eliminate-prompts-with-auto-mode). Ein Klassifizierer-Modell überprüft Befehle vor ihrer Ausführung, blockiert Scope-Eskalation, unbekannte Infrastruktur und feindselige-Inhalts-getriebene Aktionen, während es Routinearbeit ohne Prompts durchlaufen lässt.

542 

543```bash theme={null}

544claude --permission-mode auto -p "fix all lint errors"

545```

546 

547Für nicht-interaktive Läufe mit dem `-p`-Flag bricht Auto Mode ab, wenn der Klassifizierer Aktionen wiederholt blockiert, da es keinen Benutzer gibt, auf den man zurückfallen kann. Siehe [wenn Auto Mode zurückfällt](/de/permission-modes#when-auto-mode-falls-back) für Schwellenwerte.

548 

549***

550 

551## Vermeiden Sie häufige Fehlermuster

552 

553Dies sind häufige Fehler. Sie früh zu erkennen spart Zeit:

554 

555* **Die Kitchen-Sink-Session.** Sie beginnen mit einer Aufgabe, dann fragen Claude etwas Unverwandtes, dann gehen Sie zurück zur ersten Aufgabe. Der Kontext ist voll mit irrelevanten Informationen.

556 > **Lösung**: `/clear` zwischen nicht verwandten Aufgaben.

557* **Immer wieder korrigieren.** Claude macht etwas falsch, Sie korrigieren es, es ist immer noch falsch, Sie korrigieren erneut. Der Kontext ist mit fehlgeschlagenen Ansätzen verschmutzt.

558 > **Lösung**: Nach zwei fehlgeschlagenen Korrektionen `/clear` und schreiben Sie einen besseren anfänglichen Prompt, der das Gelernte einbezieht.

559* **Die über-spezifizierte CLAUDE.md.** Wenn Ihre CLAUDE.md zu lang ist, ignoriert Claude die Hälfte davon, weil wichtige Regeln in dem Lärm verloren gehen.

560 > **Lösung**: Rücksichtslos bereinigen. Wenn Claude etwas bereits ohne die Anweisung richtig macht, löschen Sie es oder konvertieren Sie es in einen Hook.

561* **Die Trust-then-Verify-Lücke.** Claude produziert eine plausibel aussehende Implementierung, die Edge Cases nicht behandelt.

562 > **Lösung**: Geben Sie immer Überprüfung an (Tests, Skripte, Screenshots). Wenn Sie es nicht überprüfen können, versenden Sie es nicht.

563* **Die unendliche Erkundung.** Sie bitten Claude, etwas zu „untersuchen", ohne es zu begrenzen. Claude liest Hunderte von Dateien und füllt den Kontext.

564 > **Lösung**: Begrenzen Sie Untersuchungen eng oder verwenden Sie Subagents, damit die Erkundung Ihren Hauptkontext nicht verbraucht.

565 

566***

567 

568## Entwickeln Sie Ihre Intuition

569 

570Die Muster in diesem Leitfaden sind nicht in Stein gemeißelt. Sie sind Ausgangspunkte, die im Allgemeinen gut funktionieren, aber möglicherweise nicht optimal für jede Situation sind.

571 

572Manchmal *sollten* Sie den Kontext ansammeln lassen, weil Sie tief in einem komplexen Problem stecken und die Geschichte wertvoll ist. Manchmal sollten Sie die Planung überspringen und Claude es herausfinden lassen, weil die Aufgabe explorativ ist. Manchmal ist ein vager Prompt genau richtig, weil Sie sehen möchten, wie Claude das Problem interpretiert, bevor Sie es einschränken.

573 

574Achten Sie auf das, was funktioniert. Wenn Claude großartige Ausgabe produziert, bemerken Sie, was Sie getan haben: die Prompt-Struktur, den Kontext, den Sie bereitgestellt haben, den Modus, in dem Sie waren. Wenn Claude kämpft, fragen Sie warum. War der Kontext zu laut? Der Prompt zu vage? Die Aufgabe zu groß für einen Pass?

575 

576Im Laufe der Zeit werden Sie Intuition entwickeln, die kein Leitfaden erfassen kann. Sie werden wissen, wann Sie spezifisch und wann offen sein sollten, wann Sie planen und wann Sie erkunden sollten, wann Sie den Kontext löschen und wann Sie ihn ansammeln lassen sollten.

577 

578## Verwandte Ressourcen

579 

580* [How Claude Code works](/de/how-claude-code-works): die agentengesteuerte Schleife, Tools und Kontextverwaltung

581* [Extend Claude Code](/de/features-overview): Skills, Hooks, MCP, Subagents und Plugins

582* [Common workflows](/de/common-workflows): Schritt-für-Schritt-Rezepte zum Debuggen, Testen, PRs und mehr

583* [CLAUDE.md](/de/memory): speichern Sie Projektkonventionen und persistenten Kontext

champion-kit.md +193 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Champion-Kit

6 

7> Ein Leitfaden für Ingenieure, die Claude Code intern fördern: was man teilen sollte, wie man Fragen beantwortet und wie man die Akzeptanz im Team erhöht.

8 

9Diese Seite ist für einzelne Ingenieure, die Claude Code bereits nutzen und ihr Team bei der Einführung unterstützen möchten. Sie behandelt, was man teilen sollte, wie man die Fragen beantwortet, die man erhält, einen 30-Tage-Leitfaden und Antworten auf häufige Bedenken.

10 

11Die Einführung eines Entwickler-Tools geschieht selten aufgrund einer Rollout-Ankündigung. Sie geschieht, weil jemand im Team das Tool gut nutzt, offen darüber spricht und es anderen leicht macht, es zu übernehmen. Die Arbeit, die Sie als Champion leisten, hat eine überproportionale Wirkung: Jedes Beispiel, das Sie teilen, verkürzt die Lernkurve für die Ingenieure, die nach Ihnen kommen, und jede Frage, die Sie öffentlich beantworten, verwandelt die Erfahrung einer Person in etwas, das das ganze Team nutzen kann. Sie fungieren als Multiplikator für Ihr Team, nicht als Helpdesk, und dieser Leitfaden ist so strukturiert, dass die Rolle unter diesen Bedingungen nachhaltig bleibt.

12 

13## Die Champion-Rolle

14 

15Die Rolle besteht aus drei Verhaltensweisen, die sich gegenseitig verstärken.

16 

17| Verhalten | Wie es in der Praxis aussieht | Warum es wichtig ist |

18| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

19| Teilen Sie, was Sie entdecken | Posten Sie die Prompts, Screenshots und kleinen Erfolge aus Ihrer eigenen Arbeit an den Orten, die Ihr Team bereits liest, z. B. in einem Engineering-Kanal, einem Standup-Thread oder einer Pull-Request-Beschreibung. | Beispiele aus Ihrer eigenen Codebasis sind überzeugender als jede externe Dokumentation, da Kollegen genau sehen können, wie das Tool auf die Probleme angewendet wird, die Sie teilen. |

20| Seien Sie die Person, die man fragt | Wenn ein Kollege fragt, wie Sie etwas erreicht haben, antworten Sie mit dem tatsächlichen Prompt, den Sie verwendet haben, damit er ihn direkt auf seine eigene Aufgabe anwenden kann. | Ein konkretes, ausführbares Beispiel schließt die Lücke zwischen Neugier und einer ersten erfolgreichen Nutzung, wo die meisten Einführungsbemühungen steckenbleiben. |

21| Erweitern Sie den Kreis | Etablieren Sie eine kleine Anzahl leichter, wiederkehrender Gewohnheiten, z. B. einen dedizierten Kanal oder einen wöchentlichen Thread, damit der Schwung auch dann anhält, wenn Ihre Aufmerksamkeit woanders liegt. | Eine Einführung, die von einer einzelnen Person abhängt, ist fragil. Eine Einführung, die durch gemeinsame Gewohnheiten getragen wird, setzt sich von selbst fort. |

22 

23Das meiste davon passt natürlich in die Arbeit, die Sie bereits leisten. Der Unterschied liegt in einer kleinen zusätzlichen Absicht darüber, wo Ihre Entdeckungen gepostet werden und wie Ihre Antworten verbreitet werden.

24 

25### Was dies Sie kosten sollte

26 

27Setzen Sie Erwartungen mit sich selbst und mit Ihrem Vorgesetzten. Die folgenden Aktivitäten sollen in eine normale Arbeitswoche passen, und die Rolle sollte ein Multiplikator für Ihre bestehende Arbeit bleiben, anstatt eine zusätzliche Support-Verantwortung zu sein.

28 

29| Aktivität | Zeit pro Woche | Anleitung |

30| --------------------------------------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |

31| Erfolge und Prompts posten | Etwa 15 Minuten | Erfassen Sie diese im Moment mit einem Screenshot und ein oder zwei Sätzen; vermeiden Sie es, sie in formale Schriftstücke umzuwandeln. |

32| Fragen in einem gemeinsamen Kanal beantworten | Etwa 20 Minuten | Beantworten Sie die Frage einmal öffentlich, dann verlinken Sie auf diese Antwort, wenn die Frage erneut auftritt. |

33| Wöchentlichen Show-and-Tell-Thread hosten | Etwa 5 Minuten | Sie posten den Eröffnungs-Prompt; das Team liefert den Inhalt. |

34| Optionales Pairing oder Walkthroughs | 0 bis 30 Minuten | Reservieren Sie dies für Kollegen, die wirklich blockiert sind, und bieten Sie den [Quickstart](/de/quickstart)-Link an, bevor Sie Zeit einplanen. |

35 

36## Teilen Sie, was Sie entdecken

37 

38Ihre eigene Erfahrung ist das überzeugendste Material, das Ihre Kollegen antreffen werden, da es spezifisch für die Codebasis, Workflows und Probleme ist, die Sie alle teilen. Dokumentation sagt den Menschen, was möglich ist; Ihre Posts zeigen ihnen, was in Ihrer Umgebung tatsächlich funktioniert.

39 

40### Was es wert ist, geteilt zu werden

41 

42Die nützlichsten Posts beschreiben eine Technik, die ein Kollege morgen wiederverwenden kann, anstatt eines Ergebnisses, das bereits abgeschlossen ist. Techniken verstärken sich, wenn sie sich durch ein Team verbreiten; Statusaktualisierungen nicht.

43 

44Beispiele für wiederverwendbare Techniken:

45 

46* „Ich habe gelernt, dass das @-Erwähnen eines Verzeichnisses funktioniert. Wenn ich es auf `@src/components/` zeige und frage, welche Tests fehlen, werden zwei angezeigt, die ich übersehen hatte."

47* „Plan Mode (`Shift+Tab`) zeigt genau, welche Dateien berührt werden, bevor eine Bearbeitung vorgenommen wird, weshalb ich mich wohlfühle, ihn auf gemeinsamen Code anzuwenden."

48* „Ich habe einen Stop-Hook konfiguriert, damit ich eine Desktop-Benachrichtigung erhalte, wenn eine lange Aufgabe abgeschlossen ist. Die Konfiguration ist im Thread."

49* „Das Ausführen von `/init` generiert eine `CLAUDE.md` aus dem Repository, damit der Assistent nicht mehr nach unseren Konventionen fragt."

50 

51### Wo man es teilt

52 

53Posten Sie überall dort, wo Ihr Team bereits liest. Das Ziel ist es, Beispiele in den Weg der normalen Arbeit zu platzieren, anstatt ein Ziel zu schaffen.

54 

55| Ort | Am besten geeignet für | Empfohlenes Format |

56| ------------------------------------------------------ | ---------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |

57| Ein `#claude-code`- oder allgemeiner Engineering-Kanal | Entdeckungen, Prompts und „heute habe ich gelernt"-Momente | Ein Screenshot mit ein oder zwei Sätzen Kontext |

58| Pull-Request-Beschreibungen | Demonstration des Ansatzes auf echtem Code, den Reviewer bereits lesen | Ein einzelner Satz wie „Claude und ich haben dieses Refactoring durchgeführt; ich stelle gerne den Ansatz vor." |

59| Standups oder wöchentliche schriftliche Updates | Normalisierung der Nutzung mit Vorgesetzten und Skip-Level-Managern | Ein Satz, der ein konkretes Ergebnis beschreibt |

60| Team-Wiki oder interne Dokumentation | Dauerhafte Muster, benutzerdefinierte Skills und `CLAUDE.md`-Beispiele | Eine kurze Seite, verlinkt vom Kanal-Thema, damit sie auffindbar bleibt |

61 

62### Das Format, das funktioniert

63 

64Ein Screenshot mit einem einzelnen Satz Kontext oder eine kurze Vorher-Nachher-Beschreibung ist im Allgemeinen das richtige Detaillierungsniveau. Halten Sie jeden Post kurz genug, dass jemand, der vorbeiscrollt, den Punkt trotzdem versteht. Ein langer Schriftsatz wird tendenziell für später gespeichert und vergessen, während ein kurzer Post mit einem Screenshot tendenziell kopiert und ausprobiert wird.

65 

66Die folgenden Beispiel-Posts veranschaulichen Ton und Länge; passen Sie sie an, anstatt sie wörtlich zu kopieren.

67 

68```text theme={null}

69Heute gelernt, dass das @-Erwähnen eines Verzeichnisses funktioniert. Ich habe es auf

70@src/components/ gezeigt und gefragt, welche Komponenten Tests fehlen, und es

71wurden zwei angezeigt, die ich vergessen hatte.

72```

73 

74```text theme={null}

75Ich habe einen Stop-Hook konfiguriert, damit ich eine Desktop-Benachrichtigung erhalte, wenn eine lange

76Aufgabe abgeschlossen ist. Ich habe ein Refactoring gestartet, bin weggegangen und wurde benachrichtigt, als

77es fertig war. Die Konfiguration ist im Thread.

78```

79 

80```text theme={null}

81Plan Mode ist der Grund, warum ich mich wohlfühle, dies auf Code zu verwenden, der wichtig ist.

82Drücken Sie Shift+Tab, bis Sie „plan" sehen; es zeigt genau, welche Dateien es

83berühren möchte, bevor etwas geändert wird.

84```

85 

86## Seien Sie die Person, die man fragt

87 

88Sobald Sie ein paar Beispiele geteilt haben, werden Fragen folgen. Dies ist der Punkt, an dem die Champion-Rolle die größte Hebelwirkung hat, da eine gute Antwort auf eine Person häufig mehrere andere freischaltet, die denselben Kanal beobachten.

89 

90### Antworten Sie mit einem Prompt statt mit einer Erklärung

91 

92Wenn ein Kollege fragt, wie Sie etwas erreicht haben, ist die nützlichste Antwort der Prompt, den Sie tatsächlich verwendet haben. Sie werden mehr lernen, wenn sie diesen Prompt gegen ihr eigenes Problem ausführen, als aus jeder Beschreibung, die Sie schreiben könnten, und es gibt ihnen etwas, das sie sofort umsetzen können.

93 

94```text theme={null}

95Kollege: Wie hast du es geschafft, diese Race Condition zu finden?

96 

97Champion: Ich habe gefragt: „Der Test in @tests/scheduler.test.ts ist instabil, finde heraus, warum", und es hat zwei nicht verbundene Promises im Scheduler verfolgt. Versuchen Sie die gleiche Formulierung bei Ihrem Test.

98```

99 

100### Zeigen Sie auf die Funktion statt auf die Dokumentation

101 

102Eine Antwort wie „Versuchen Sie Plan Mode, drücken Sie `Shift+Tab`, bis Sie ihn sehen" ist im Moment nützlicher als ein Link zur Dokumentation. Wenn die Person später mehr Tiefe braucht, wird sie sie selbst finden; jetzt brauchen sie das eine, das sie freischaltet.

103 

104### Fragen, die Sie wahrscheinlich hören werden

105 

106| Frage | Vorgeschlagene Antwort | Nachschlageressource |

107| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------- |

108| „Womit sollte ich es zuerst versuchen?" | Empfehlen Sie eine echte, aber begrenzte Aufgabe, idealerweise einen Bug oder eine Aufgabe, die die Person aufgeschoben hat, weil sie mühsam ist, nicht schwierig. | [Häufige Workflows](/de/common-workflows) |

109| „Wie kann ich meinem Code vertrauen?" | Stellen Sie Plan Mode vor: Drücken Sie `Shift+Tab`, um ihn zu aktivieren, Claude schlägt genau vor, was es ändern möchte, und nichts wird geändert, bis der Benutzer zustimmt. | [Berechtigungen](/de/permissions) |

110| „Lohnt sich der Einrichtungsaufwand?" | Die Installation dauert etwa zwei Minuten, läuft im Terminal und erfordert keine IDE-Erweiterung. Das einmalige Ausführen von `/init` reicht aus, um zu beginnen. | [Quickstart](/de/quickstart) |

111| „Es hat ein falsches Ergebnis produziert." | Ermutigen Sie sie, den Fehler an Claude zurückzugeben. Das Einfügen der Fehlermeldung oder des fehlgeschlagenen Tests ist viel effektiver als die Umformulierung der ursprünglichen Anfrage. | [Häufige Workflows](/de/common-workflows) |

112| „Es versteht unsere Codebase-Konventionen nicht." | Schlagen Sie vor, `/init` auszuführen, um eine `CLAUDE.md`-Datei zu generieren, und fügen Sie dann die Konventionen des Teams, Testbefehle und alle Verzeichnisse hinzu, die vermieden werden sollten. | [Memory](/de/memory) |

113| „Ist das nur Autovervollständigung?" | Bieten Sie eine kurze Demonstration an, in der Claude eine unbekannte Datei erklärt, einen Bug über Services hinweg verfolgt oder einen Migrationsplan entwirft. Diese Aufgaben erfordern Überlegungen über das Repository hinweg, nicht das Vervollständigen einer einzelnen Zeile. | Eine zweiminütige Live-Demonstration |

114| „Was ist mit Sicherheit und Datenbehandlung?" | Verweisen Sie diese Frage an Ihren Administrator. Die Bereitstellungs- und Datenbehandlungsrichtlinie Ihrer Organisation ist bereits konfiguriert, und Champions sollten diese Antwort nicht improvisieren. | [Sicherheit](/de/security) · [Datennutzung](/de/data-usage) |

115 

116## Erweitern Sie den Kreis

117 

118Das Ziel ist nicht, ein Programm zu erstellen oder einen Rollout zu besitzen. Es ist, eine kleine Anzahl leichter Gewohnheiten zu etablieren, die es dem Schwung ermöglichen, nach Ihnen fortzufahren. Wenn Fragen im Kanal von anderen Personen als Ihnen beantwortet werden, hat die Rolle ihre Aufgabe erfüllt.

119 

120### Muster, die tendenziell funktionieren

121 

122| Muster | Wie man es ausführt | Erforderlicher Aufwand |

123| -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- |

124| Ein dedizierter Kanal | Erstellen Sie einen `#claude-code`-Kanal (oder einen wiederkehrenden Thread in einem bestehenden), heften Sie den [Quickstart](/de/quickstart)-Link und ein starkes Beispiel an, und beantworten Sie Fragen öffentlich, damit jede Antwort jedem, der zuschaut, zugute kommt. | Etwa fünf Minuten zum Einrichten, dann ambient |

125| Ein wöchentlicher Show-and-Tell-Thread | Jeden Freitag posten Sie „Womit hat Claude dir diese Woche geholfen?" Keine Vorbereitung, Folien oder Meetings erforderlich; Screenshots und kurze Beschreibungen reichen aus. | Etwa zwei Minuten pro Woche |

126| Teilen Sie einen benutzerdefinierten Skill | Posten Sie Ihre nützlichste `.claude/skills/<name>/SKILL.md`-Datei, z. B. einen `/ship`-Skill, der Tests und Lint vor dem Commit ausführt, mit einer einzeiligen Beschreibung. Da Skills einfaches Markdown sind, können Kollegen sie sofort übernehmen. | Etwa fünf Minuten pro Skill |

127| Generieren Sie einen Setup-Leitfaden aus Ihrer eigenen Nutzung | Führen Sie `/team-onboarding` in einem Projekt aus, in dem Sie echte Zeit verbracht haben. Claude scannt Ihre letzten Sessions, Befehle und MCP-Server und erstellt dann einen Leitfaden, den ein neuer Teamkollege als erste Nachricht einfügen kann, um Ihr Setup zu wiederholen. Heften Sie ihn im Kanal an. | Etwa zwei Minuten |

128| Pairing bei einer ersten Aufgabe | Bieten Sie eine einzelne fünfzehnminütige Pairing-Sitzung für jeden an, der anfängt. Ein erfolgreicher Ergebnis auf ihrem eigenen Code ist überzeugender als jede Präsentation. | Etwa fünfzehn Minuten pro Person |

129| Identifizieren Sie den nächsten Champion | Der Kollege, der Ihnen die meisten Fragen stellt, ist normalerweise bereit, diese Rolle zu übernehmen. Leiten Sie diese Seite an ihn weiter und teilen Sie die Kanal-Verantwortung zwischen Ihnen auf. | Vernachlässigbar |

130 

131### 30-Tage-Leitfaden

132 

133Wenn ein lockerer Plan hilfreich ist, spiegelt die folgende Abfolge wider, was über die meisten Teams hinweg tendenziell funktioniert. Passen Sie frei an Ihren Kontext an.

134 

135<Steps>

136 <Step title="Woche 1: Säen Sie den Kanal">

137 Erstellen Sie den Kanal, heften Sie den [Quickstart](/de/quickstart) an, und posten Sie zwei oder drei Ihrer eigenen Beispiele mit den Prompts.

138 

139 **Signal, dass es funktioniert:** Ein paar Kollegen reagieren oder antworten, und mindestens eine Frage wird im Kanal gestellt.

140 </Step>

141 

142 <Step title="Woche 2: Starten Sie den Rhythmus">

143 Starten Sie den wöchentlichen Show-and-Tell-Thread, beantworten Sie jede Frage öffentlich, und teilen Sie einen benutzerdefinierten Skill oder `CLAUDE.md`-Snippet.

144 

145 **Signal, dass es funktioniert:** Jemand anderes als Sie postet ein Beispiel aus seiner eigenen Erfahrung.

146 </Step>

147 

148 <Step title="Woche 3: Pairing und Konsolidierung">

149 Bieten Sie zwei oder drei kurze Pairing-Sitzungen an und konsolidieren Sie die häufigsten Fragen und Antworten in einer angehefteten FAQ-Nachricht.

150 

151 **Signal, dass es funktioniert:** Sie sehen wiederholte Nutzung, wobei die gleichen Kollegen zurückkehren, anstatt einmal zu versuchen und zu stoppen.

152 </Step>

153 

154 <Step title="Woche 4: Übergabe">

155 Identifizieren Sie einen zweiten Champion und teilen Sie eine kurze Zusammenfassung dessen, was funktioniert und was nicht, mit Ihrem Vorgesetzten oder Administrator.

156 

157 **Signal, dass es funktioniert:** Fragen im Kanal werden von anderen Personen als Ihnen beantwortet.

158 </Step>

159</Steps>

160 

161### Wenn jemand tiefer gehen möchte

162 

163Sie sind die warme Einführung, nicht das Onboarding-Programm. Wenn ein Kollege von „sollte ich das versuchen" zu „wie werde ich damit effektiv" übergeht, verweisen Sie ihn auf die Seiten [Quickstart](/de/quickstart) und [Häufige Workflows](/de/common-workflows). Sie enthalten kurze Abschnitte, die die Funktionen abdecken, die wirklich nützlich sind, aber schwer zu entdecken sind.

164 

165## Reagieren Sie auf häufige Bedenken

166 

167Gesunde Skepsis ist zu erwarten; Ingenieure sollten vorsichtig mit Tools sein, die ihren Code berühren. Die effektivste Antwort ist selten, den allgemeinen Fall zu argumentieren. Stattdessen erkennen Sie das Bedenken an, bieten eine kurze Umformulierung an und schlagen eine konkrete Demonstration auf dem eigenen Code der Person vor. Die meisten Bedenken werden durch eine einzige erfolgreiche Erfahrung gelöst.

168 

169| Bedenken | Vorgeschlagene Antwort | Zu bietender Beweis |

170| ------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |

171| „Ich bin schneller ohne es." | Das ist wahrscheinlich wahr für Code, den die Person routinemäßig schreibt. Schlagen Sie vor, es auf die Arbeit zu versuchen, die sie tendenziell vermeiden: Legacy-Dateien, unbekannte Services oder Test-Gerüste, wo die Hebelwirkung am höchsten ist. | Zeitlich eine mühsame Aufgabe auf beide Arten und vergleichen Sie. |

172| „Ich vertraue KI nicht, Production-Code zu berühren." | Stimmen Sie zu, dass keine Änderung ungelesen landen sollte. Plan Mode kombiniert mit normalem Diff-Review bedeutet, dass nichts angewendet wird, das der Ingenieur nicht überprüft hat, der gleiche Standard wie jeder Pull Request. | Demonstrieren Sie Plan Mode auf einer echten Datei. |

173| „Es wird Junior-Ingenieure schwächer machen." | Wenn es gut verwendet wird, ist es ein effektiver Erklärer. Ermutigen Sie Junior-Ingenieure, Claude zu bitten, eine Datei und ihre Aufruforte zu erklären, bevor sie ihn bitten, etwas zu ändern. | Führen Sie „Erklären Sie @file und wo es aufgerufen wird" zusammen aus. |

174| „Ich habe es einmal versucht und es hat halluziniert." | Dies ist normalerweise ein Kontextproblem, kein Modellproblem. Das @-Erwähnen der relevanten Dateien, das Ausführen von `/init` und das Bereitstellen der tatsächlichen Fehlerausgabe lösen es normalerweise. | Führen Sie ihren ursprünglichen Prompt mit ordnungsgemäßem `@`-Kontext erneut aus. |

175| „Wir haben keine Zeit, ein anderes Tool zu lernen." | Claude Code ist ein Terminal-Befehl, kein Plattform. Wenn es in der ersten Sitzung keinen Wert zurückgibt, ist es angemessen, es beiseite zu legen. | Eine zweiminütige Installation gefolgt von einem echten Bug. |

176 

177## Schnellreferenz-Blatt

178 

179Die folgenden Techniken sind diejenigen, die am zuverlässigsten jemanden von einem ersten Versuch zur täglichen Nutzung bewegen. Heften Sie diese Tabelle in einem Kanal an oder teilen Sie sie allein.

180 

181| Technik | Wie man sie anwendet |

182| ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

183| Geben Sie den richtigen Kontext an | Verwenden Sie `@file`- oder `@directory/`-Referenzen, oder fügen Sie die Fehler- oder Log-Ausgabe direkt ein. Die Bereitstellung relevanten Kontexts ist effektiver als aufwendiges Prompting. |

184| Überprüfen Sie den Plan vor der Bearbeitung | Drücken Sie `Shift+Tab`, um in den Plan Mode zu gelangen. Claude wird die beabsichtigten Änderungen zur Genehmigung beschreiben, bevor sie ausgeführt werden. |

185| Lehren Sie es Ihr Repository | Führen Sie `/init` aus, um eine `CLAUDE.md`-Datei zu generieren, und fügen Sie dann Ihre Konventionen, Testbefehle und alle Verzeichnisse hinzu, die nicht geändert werden sollten. Siehe [Memory](/de/memory). |

186| Verwenden Sie einen Workflow erneut | Speichern Sie eine `SKILL.md`-Datei in `.claude/skills/<name>/`, um einen `/name`-Skill zu erstellen, den das gesamte Team verwenden kann. Siehe [Skills](/de/skills). |

187| Bleiben Sie während langer Aufgaben informiert | Konfigurieren Sie einen Stop-Hook, um eine Desktop-Benachrichtigung zu erhalten, wenn eine lange Aufgabe abgeschlossen ist. Siehe [Hooks](/de/hooks-guide). |

188| Erholen Sie sich von einem falschen Ergebnis | Anstatt die Anfrage umzuformulieren, fügen Sie den fehlgeschlagenen Test oder Stack Trace an Claude zurück und bitten Sie ihn, diesen spezifischen Fehler zu beheben. |

189| Halten Sie Bearbeitungen chirurgisch | Fragen Sie nach einem Diff, oder geben Sie an „ändere nur X". Claude respektiert den Umfang, wenn der Umfang angegeben ist. |

190 

191<Tip>

192 Claude Code wird häufig aktualisiert. Überprüfen Sie versionsspezifische Details gegen die [Dokumentationsstartseite](/de/overview), bevor Sie dieses Material intern verteilen.

193</Tip>

channels.md +357 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Ereignisse mit Kanälen in eine laufende Sitzung übertragen

6 

7> Verwenden Sie Kanäle, um Nachrichten, Benachrichtigungen und Webhooks von einem MCP-Server in Ihre Claude Code-Sitzung zu übertragen. Leiten Sie CI-Ergebnisse, Chat-Nachrichten und Überwachungsereignisse weiter, damit Claude reagieren kann, während Sie weg sind.

8 

9<Note>

10 Kanäle befinden sich in der [Forschungsvorschau](#research-preview) und erfordern Claude Code v2.1.80 oder später. Sie erfordern eine claude.ai-Anmeldung. Konsolen- und API-Schlüssel-Authentifizierung wird nicht unterstützt. Team- und Enterprise-Organisationen müssen [sie explizit aktivieren](#enterprise-controls).

11</Note>

12 

13Ein Kanal ist ein MCP-Server, der Ereignisse in Ihre laufende Claude Code-Sitzung überträgt, damit Claude auf Dinge reagieren kann, die passieren, während Sie nicht am Terminal sind. Kanäle können bidirektional sein: Claude liest das Ereignis und antwortet über denselben Kanal zurück, wie eine Chat-Brücke. Ereignisse treffen nur ein, während die Sitzung offen ist. Für ein Always-On-Setup führen Sie Claude in einem Hintergrundprozess oder persistenten Terminal aus.

14 

15Im Gegensatz zu Integrationen, die eine neue Cloud-Sitzung starten oder auf Abruf warten, kommt das Ereignis in der Sitzung an, die Sie bereits offen haben: siehe [wie Kanäle sich vergleichen](#how-channels-compare).

16 

17Sie installieren einen Kanal als Plugin und konfigurieren ihn mit Ihren eigenen Anmeldedaten. Telegram, Discord und iMessage sind in der Forschungsvorschau enthalten.

18 

19Wenn Claude über einen Kanal antwortet, sehen Sie die eingehende Nachricht in Ihrem Terminal, aber nicht den Antworttext. Das Terminal zeigt den Tool-Aufruf und eine Bestätigung (wie „gesendet"), und die eigentliche Antwort erscheint auf der anderen Plattform.

20 

21Diese Seite behandelt:

22 

23* [Unterstützte Kanäle](#supported-channels): Telegram-, Discord- und iMessage-Setup

24* [Installieren und Ausführen eines Kanals](#quickstart) mit fakechat, einer Localhost-Demo

25* [Wer Nachrichten übertragen kann](#security): Sender-Allowlists und wie Sie koppeln

26* [Kanäle für Ihre Organisation aktivieren](#enterprise-controls) auf Team und Enterprise

27* [Wie Kanäle sich vergleichen](#how-channels-compare) mit Web-Sitzungen, Slack, MCP und Remote Control

28 

29Um Ihren eigenen Kanal zu erstellen, siehe die [Kanäle-Referenz](/de/channels-reference).

30 

31## Unterstützte Kanäle

32 

33Jeder unterstützte Kanal ist ein Plugin, das [Bun](https://bun.sh) erfordert. Für eine praktische Demo des Plugin-Flows, bevor Sie eine echte Plattform verbinden, versuchen Sie die [fakechat-Schnellstart](#quickstart).

34 

35<Tabs>

36 <Tab title="Telegram">

37 Sehen Sie sich den vollständigen [Telegram-Plugin-Quellcode](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram) an.

38 

39 <Steps>

40 <Step title="Erstellen Sie einen Telegram-Bot">

41 Öffnen Sie [BotFather](https://t.me/BotFather) in Telegram und senden Sie `/newbot`. Geben Sie ihm einen Anzeigenamen und einen eindeutigen Benutzernamen, der auf `bot` endet. Kopieren Sie das Token, das BotFather zurückgibt.

42 </Step>

43 

44 <Step title="Installieren Sie das Plugin">

45 In Claude Code führen Sie aus:

46 

47 ```

48 /plugin install telegram@claude-plugins-official

49 ```

50 

51 Wenn Claude Code meldet, dass das Plugin in keinem Marketplace gefunden wird, fehlt Ihr Marketplace oder ist veraltet. Führen Sie `/plugin marketplace update claude-plugins-official` aus, um ihn zu aktualisieren, oder `/plugin marketplace add anthropics/claude-plugins-official`, wenn Sie ihn noch nicht hinzugefügt haben. Versuchen Sie dann die Installation erneut.

52 

53 Nach der Installation führen Sie `/reload-plugins` aus, um den Konfigurationsbefehl des Plugins zu aktivieren.

54 </Step>

55 

56 <Step title="Konfigurieren Sie Ihr Token">

57 Führen Sie den Konfigurationsbefehl mit dem Token von BotFather aus:

58 

59 ```

60 /telegram:configure <token>

61 ```

62 

63 Dies speichert es in `~/.claude/channels/telegram/.env`. Sie können auch `TELEGRAM_BOT_TOKEN` in Ihrer Shell-Umgebung setzen, bevor Sie Claude Code starten.

64 </Step>

65 

66 <Step title="Starten Sie mit aktivierten Kanälen neu">

67 Beenden Sie Claude Code und starten Sie mit dem Kanal-Flag neu. Dies startet das Telegram-Plugin, das mit dem Abrufen von Nachrichten von Ihrem Bot beginnt:

68 

69 ```bash theme={null}

70 claude --channels plugin:telegram@claude-plugins-official

71 ```

72 </Step>

73 

74 <Step title="Koppeln Sie Ihr Konto">

75 Öffnen Sie Telegram und senden Sie eine beliebige Nachricht an Ihren Bot. Der Bot antwortet mit einem Kopplungscode.

76 

77 <Note>Wenn Ihr Bot nicht antwortet, stellen Sie sicher, dass Claude Code mit `--channels` aus dem vorherigen Schritt ausgeführt wird. Der Bot kann nur antworten, während der Kanal aktiv ist.</Note>

78 

79 Zurück in Claude Code führen Sie aus:

80 

81 ```

82 /telegram:access pair <code>

83 ```

84 

85 Dann sperren Sie den Zugriff, damit nur Ihr Konto Nachrichten senden kann:

86 

87 ```

88 /telegram:access policy allowlist

89 ```

90 </Step>

91 </Steps>

92 </Tab>

93 

94 <Tab title="Discord">

95 Sehen Sie sich den vollständigen [Discord-Plugin-Quellcode](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord) an.

96 

97 <Steps>

98 <Step title="Erstellen Sie einen Discord-Bot">

99 Gehen Sie zum [Discord Developer Portal](https://discord.com/developers/applications), klicken Sie auf **New Application** und benennen Sie ihn. Im Abschnitt **Bot** erstellen Sie einen Benutzernamen, klicken dann auf **Reset Token** und kopieren das Token.

100 </Step>

101 

102 <Step title="Aktivieren Sie Message Content Intent">

103 In den Einstellungen Ihres Bots scrollen Sie zu **Privileged Gateway Intents** und aktivieren **Message Content Intent**.

104 </Step>

105 

106 <Step title="Laden Sie den Bot auf Ihren Server ein">

107 Gehen Sie zu **OAuth2 > URL Generator**. Wählen Sie den `bot`-Bereich und aktivieren Sie diese Berechtigungen:

108 

109 * View Channels

110 * Send Messages

111 * Send Messages in Threads

112 * Read Message History

113 * Attach Files

114 * Add Reactions

115 

116 Öffnen Sie die generierte URL, um den Bot zu Ihrem Server hinzuzufügen.

117 </Step>

118 

119 <Step title="Installieren Sie das Plugin">

120 In Claude Code führen Sie aus:

121 

122 ```

123 /plugin install discord@claude-plugins-official

124 ```

125 

126 Wenn Claude Code meldet, dass das Plugin in keinem Marketplace gefunden wird, fehlt Ihr Marketplace oder ist veraltet. Führen Sie `/plugin marketplace update claude-plugins-official` aus, um ihn zu aktualisieren, oder `/plugin marketplace add anthropics/claude-plugins-official`, wenn Sie ihn noch nicht hinzugefügt haben. Versuchen Sie dann die Installation erneut.

127 

128 Nach der Installation führen Sie `/reload-plugins` aus, um den Konfigurationsbefehl des Plugins zu aktivieren.

129 </Step>

130 

131 <Step title="Konfigurieren Sie Ihr Token">

132 Führen Sie den Konfigurationsbefehl mit dem Bot-Token aus, den Sie kopiert haben:

133 

134 ```

135 /discord:configure <token>

136 ```

137 

138 Dies speichert es in `~/.claude/channels/discord/.env`. Sie können auch `DISCORD_BOT_TOKEN` in Ihrer Shell-Umgebung setzen, bevor Sie Claude Code starten.

139 </Step>

140 

141 <Step title="Starten Sie mit aktivierten Kanälen neu">

142 Beenden Sie Claude Code und starten Sie mit dem Kanal-Flag neu. Dies verbindet das Discord-Plugin, damit Ihr Bot Nachrichten empfangen und beantworten kann:

143 

144 ```bash theme={null}

145 claude --channels plugin:discord@claude-plugins-official

146 ```

147 </Step>

148 

149 <Step title="Koppeln Sie Ihr Konto">

150 Schreiben Sie Ihrem Bot auf Discord eine Direktnachricht. Der Bot antwortet mit einem Kopplungscode.

151 

152 <Note>Wenn Ihr Bot nicht antwortet, stellen Sie sicher, dass Claude Code mit `--channels` aus dem vorherigen Schritt ausgeführt wird. Der Bot kann nur antworten, während der Kanal aktiv ist.</Note>

153 

154 Zurück in Claude Code führen Sie aus:

155 

156 ```

157 /discord:access pair <code>

158 ```

159 

160 Dann sperren Sie den Zugriff, damit nur Ihr Konto Nachrichten senden kann:

161 

162 ```

163 /discord:access policy allowlist

164 ```

165 </Step>

166 </Steps>

167 </Tab>

168 

169 <Tab title="iMessage">

170 Sehen Sie sich den vollständigen [iMessage-Plugin-Quellcode](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage) an.

171 

172 Der iMessage-Kanal liest Ihre Messages-Datenbank direkt und sendet Antworten über AppleScript. Er erfordert macOS und benötigt kein Bot-Token oder externen Service.

173 

174 <Steps>

175 <Step title="Gewähren Sie vollständigen Festplattenzugriff">

176 Die Messages-Datenbank unter `~/Library/Messages/chat.db` ist durch macOS geschützt. Wenn der Server sie zum ersten Mal liest, fordert macOS Zugriff an: klicken Sie auf **Allow**. Die Aufforderung nennt die App, die Bun gestartet hat, wie Terminal, iTerm oder Ihre IDE.

177 

178 Wenn die Aufforderung nicht angezeigt wird oder Sie auf „Don't Allow" geklickt haben, gewähren Sie den Zugriff manuell unter **System Settings > Privacy & Security > Full Disk Access** und fügen Sie Ihr Terminal hinzu. Ohne dies beendet sich der Server sofort mit `authorization denied`.

179 </Step>

180 

181 <Step title="Installieren Sie das Plugin">

182 In Claude Code führen Sie aus:

183 

184 ```

185 /plugin install imessage@claude-plugins-official

186 ```

187 

188 Wenn Claude Code meldet, dass das Plugin in keinem Marketplace gefunden wird, fehlt Ihr Marketplace oder ist veraltet. Führen Sie `/plugin marketplace update claude-plugins-official` aus, um ihn zu aktualisieren, oder `/plugin marketplace add anthropics/claude-plugins-official`, wenn Sie ihn noch nicht hinzugefügt haben. Versuchen Sie dann die Installation erneut.

189 </Step>

190 

191 <Step title="Starten Sie mit aktivierten Kanälen neu">

192 Beenden Sie Claude Code und starten Sie mit dem Kanal-Flag neu:

193 

194 ```bash theme={null}

195 claude --channels plugin:imessage@claude-plugins-official

196 ```

197 </Step>

198 

199 <Step title="Schreiben Sie sich selbst">

200 Öffnen Sie Messages auf einem beliebigen Gerät, das in Ihrer Apple ID angemeldet ist, und senden Sie sich selbst eine Nachricht. Sie erreicht Claude sofort: Self-Chat umgeht die Zugriffskontrolle ohne Setup.

201 

202 <Note>Die erste Antwort, die Claude sendet, löst eine macOS-Automatisierungsaufforderung aus, die fragt, ob Ihr Terminal Messages steuern kann. Klicken Sie auf **OK**.</Note>

203 </Step>

204 

205 <Step title="Erlauben Sie anderen Absendern">

206 Standardmäßig passieren nur Ihre eigenen Nachrichten durch. Um einem anderen Kontakt zu ermöglichen, Claude zu erreichen, fügen Sie seinen Handle hinzu:

207 

208 ```

209 /imessage:access allow +15551234567

210 ```

211 

212 Handles sind Telefonnummern im Format `+country` oder Apple ID-E-Mails wie `user@example.com`.

213 </Step>

214 </Steps>

215 </Tab>

216</Tabs>

217 

218Sie können auch [Ihren eigenen Kanal erstellen](/de/channels-reference) für Systeme, die noch kein Plugin haben.

219 

220## Schnellstart

221 

222Fakechat ist ein offiziell unterstützter Demo-Kanal, der eine Chat-Benutzeroberfläche auf localhost ausführt, ohne dass etwas authentifiziert werden muss und kein externer Service konfiguriert werden muss.

223 

224Sobald Sie fakechat installieren und aktivieren, können Sie im Browser eingeben und die Nachricht kommt in Ihrer Claude Code-Sitzung an. Claude antwortet, und die Antwort erscheint zurück im Browser. Nachdem Sie die fakechat-Benutzeroberfläche getestet haben, versuchen Sie [Telegram](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram), [Discord](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord) oder [iMessage](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage).

225 

226Um die fakechat-Demo zu versuchen, benötigen Sie:

227 

228* Claude Code [installiert und authentifiziert](/de/quickstart#step-1-install-claude-code) mit einem claude.ai-Konto

229* [Bun](https://bun.sh) installiert. Die vorgefertigten Kanal-Plugins sind Bun-Skripte. Überprüfen Sie mit `bun --version`; wenn das fehlschlägt, [installieren Sie Bun](https://bun.sh/docs/installation).

230* **Team/Enterprise-Benutzer**: Ihr Organisationsadministrator muss [Kanäle aktivieren](#enterprise-controls) in verwalteten Einstellungen

231 

232<Steps>

233 <Step title="Installieren Sie das fakechat-Kanal-Plugin">

234 Starten Sie eine Claude Code-Sitzung und führen Sie den Installationsbefehl aus:

235 

236 ```text theme={null}

237 /plugin install fakechat@claude-plugins-official

238 ```

239 

240 Wenn Claude Code meldet, dass das Plugin in keinem Marketplace gefunden wird, fehlt Ihr Marketplace oder ist veraltet. Führen Sie `/plugin marketplace update claude-plugins-official` aus, um ihn zu aktualisieren, oder `/plugin marketplace add anthropics/claude-plugins-official`, wenn Sie ihn noch nicht hinzugefügt haben. Versuchen Sie dann die Installation erneut.

241 </Step>

242 

243 <Step title="Starten Sie mit dem aktivierten Kanal neu">

244 Beenden Sie Claude Code und starten Sie dann mit `--channels` neu und übergeben Sie das fakechat-Plugin, das Sie installiert haben:

245 

246 ```bash theme={null}

247 claude --channels plugin:fakechat@claude-plugins-official

248 ```

249 

250 Der fakechat-Server startet automatisch.

251 

252 <Tip>

253 Sie können mehrere Plugins an `--channels` übergeben, durch Leerzeichen getrennt.

254 </Tip>

255 </Step>

256 

257 <Step title="Übertragen Sie eine Nachricht">

258 Öffnen Sie die fakechat-Benutzeroberfläche unter [http://localhost:8787](http://localhost:8787) und geben Sie eine Nachricht ein:

259 

260 ```text theme={null}

261 hey, what's in my working directory?

262 ```

263 

264 Die Nachricht kommt in Ihrer Claude Code-Sitzung als `<channel source="fakechat">` Ereignis an. Claude liest es, macht die Arbeit und ruft das `reply`-Tool von fakechat auf. Die Antwort erscheint in der Chat-Benutzeroberfläche.

265 </Step>

266</Steps>

267 

268Wenn Claude auf eine Berechtigungsaufforderung trifft, während Sie weg vom Terminal sind, pausiert die Sitzung, bis Sie antworten. Kanal-Server, die die [Berechtigungsweiterleitungsfähigkeit](/de/channels-reference#relay-permission-prompts) deklarieren, können diese Aufforderungen an Sie weiterleiten, damit Sie remote genehmigen oder ablehnen können. Für unbeaufsichtigte Nutzung umgeht [`--dangerously-skip-permissions`](/de/permission-modes#skip-all-checks-with-bypasspermissions-mode) Aufforderungen vollständig, aber verwenden Sie es nur in Umgebungen, denen Sie vertrauen.

269 

270## Sicherheit

271 

272Jedes genehmigte Kanal-Plugin verwaltet eine Sender-Allowlist: Nur IDs, die Sie hinzugefügt haben, können Nachrichten übertragen, und alle anderen werden stillschweigend gelöscht.

273 

274Telegram und Discord starten die Liste durch Kopplung:

275 

2761. Finden Sie Ihren Bot in Telegram oder Discord und senden Sie ihm eine beliebige Nachricht

2772. Der Bot antwortet mit einem Kopplungscode

2783. In Ihrer Claude Code-Sitzung genehmigen Sie den Code, wenn Sie dazu aufgefordert werden

2794. Ihre Sender-ID wird zur Allowlist hinzugefügt

280 

281iMessage funktioniert anders: Sich selbst zu schreiben umgeht das Gate automatisch, und Sie fügen andere Kontakte mit `/imessage:access allow` nach Handle hinzu.

282 

283Darüber hinaus kontrollieren Sie, welche Server in jeder Sitzung mit `--channels` aktiviert sind, und auf Team- und Enterprise-Plänen kontrolliert Ihre Organisation die Verfügbarkeit mit [`channelsEnabled`](#enterprise-controls).

284 

285In `.mcp.json` zu sein reicht nicht aus, um Nachrichten zu übertragen: Ein Server muss auch in `--channels` benannt werden.

286 

287Die Allowlist kontrolliert auch [Berechtigungsweiterleitungen](/de/channels-reference#relay-permission-prompts), wenn der Kanal sie deklariert. Jeder, der über den Kanal antworten kann, kann die Tool-Nutzung in Ihrer Sitzung genehmigen oder ablehnen. Fügen Sie daher nur Sender zur Allowlist hinzu, denen Sie diese Autorität vertrauen.

288 

289## Enterprise-Steuerelemente

290 

291Auf Team- und Enterprise-Plänen sind Kanäle standardmäßig deaktiviert. Administratoren kontrollieren die Verfügbarkeit durch zwei [verwaltete Einstellungen](/de/settings), die Benutzer nicht überschreiben können:

292 

293| Einstellung | Zweck | Wenn nicht konfiguriert |

294| :---------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------- |

295| `channelsEnabled` | Hauptschalter. Muss `true` sein, damit ein Kanal Nachrichten liefert. Legen Sie über den [claude.ai Admin-Konsole](https://claude.ai/admin-settings/claude-code) Umschalter oder direkt in verwalteten Einstellungen fest. Blockiert alle Kanäle einschließlich des Entwicklungs-Flags, wenn deaktiviert. | Kanäle blockiert |

296| `allowedChannelPlugins` | Welche Plugins sich registrieren können, sobald Kanäle aktiviert sind. Ersetzt die von Anthropic verwaltete Liste, wenn gesetzt. Gilt nur, wenn `channelsEnabled` `true` ist. | Anthropic-Standardliste gilt |

297 

298Pro- und Max-Benutzer ohne Organisation überspringen diese Überprüfungen vollständig: Kanäle sind verfügbar und Benutzer aktivieren sie pro Sitzung mit `--channels`.

299 

300### Aktivieren Sie Kanäle für Ihre Organisation

301 

302Administratoren können Kanäle von [**claude.ai → Admin settings → Claude Code → Channels**](https://claude.ai/admin-settings/claude-code) aktivieren oder indem sie `channelsEnabled` in verwalteten Einstellungen auf `true` setzen.

303 

304Nach der Aktivierung können Benutzer in Ihrer Organisation `--channels` verwenden, um Kanal-Server in einzelne Sitzungen zu aktivieren. Wenn die Einstellung deaktiviert oder nicht gesetzt ist, verbindet sich der MCP-Server immer noch und seine Tools funktionieren, aber Kanal-Nachrichten kommen nicht an. Eine Startwarnmeldung teilt dem Benutzer mit, dass ein Administrator die Einstellung aktivieren muss.

305 

306### Beschränken Sie, welche Kanal-Plugins ausgeführt werden können

307 

308Standardmäßig kann jedes Plugin auf der von Anthropic verwalteten Allowlist sich als Kanal registrieren. Administratoren auf Team- und Enterprise-Plänen können diese Allowlist durch Setzen von `allowedChannelPlugins` in verwalteten Einstellungen durch ihre eigene ersetzen. Verwenden Sie dies, um zu beschränken, welche offiziellen Plugins zulässig sind, Kanäle aus Ihrem eigenen internen Marketplace zu genehmigen oder beides. Jeder Eintrag benennt ein Plugin und den Marketplace, aus dem es stammt:

309 

310```json theme={null}

311{

312 "channelsEnabled": true,

313 "allowedChannelPlugins": [

314 { "marketplace": "claude-plugins-official", "plugin": "telegram" },

315 { "marketplace": "claude-plugins-official", "plugin": "discord" },

316 { "marketplace": "acme-corp-plugins", "plugin": "internal-alerts" }

317 ]

318}

319```

320 

321Wenn `allowedChannelPlugins` gesetzt ist, ersetzt es die Anthropic-Allowlist vollständig: Nur die aufgelisteten Plugins können sich registrieren. Lassen Sie es ungesetzt, um auf die Standard-Anthropic-Allowlist zurückzufallen. Ein leeres Array blockiert alle Kanal-Plugins aus der Allowlist, aber `--dangerously-load-development-channels` kann es immer noch für lokale Tests umgehen. Um Kanäle vollständig einschließlich des Entwicklungs-Flags zu blockieren, lassen Sie stattdessen `channelsEnabled` ungesetzt.

322 

323Diese Einstellung erfordert `channelsEnabled: true`. Wenn ein Benutzer ein Plugin an `--channels` übergibt, das nicht auf Ihrer Liste steht, startet Claude Code normal, aber der Kanal registriert sich nicht, und die Startnachricht erklärt, dass das Plugin nicht auf der genehmigten Liste Ihrer Organisation steht.

324 

325## Forschungsvorschau

326 

327Kanäle sind eine Forschungsvorschau-Funktion. Die Verfügbarkeit wird schrittweise ausgerollt, und die `--channels`-Flag-Syntax und der Protokollvertrag können sich basierend auf Feedback ändern.

328 

329Während der Vorschau akzeptiert `--channels` nur Plugins von einer von Anthropic verwalteten Allowlist oder von der Allowlist Ihrer Organisation, wenn ein Administrator [`allowedChannelPlugins`](#restrict-which-channel-plugins-can-run) gesetzt hat. Die Kanal-Plugins in [claude-plugins-official](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins) sind die genehmigten. Wenn Sie etwas anderes übergeben, das nicht auf der geltenden Allowlist steht, startet Claude Code normal, aber der Kanal registriert sich nicht, und die Startnachricht teilt Ihnen mit, warum.

330 

331Um einen Kanal zu testen, den Sie erstellen, verwenden Sie `--dangerously-load-development-channels`. Siehe [Test während der Forschungsvorschau](/de/channels-reference#test-during-the-research-preview) für Informationen zum Testen benutzerdefinierter Kanäle, die Sie erstellen.

332 

333Melden Sie Probleme oder Feedback im [Claude Code GitHub-Repository](https://github.com/anthropics/claude-code/issues).

334 

335## Wie Kanäle sich vergleichen

336 

337Mehrere Claude Code-Funktionen verbinden sich mit Systemen außerhalb des Terminals, jede für eine andere Art von Arbeit geeignet:

338 

339| Funktion | Was sie tut | Gut für |

340| ------------------------------------------------ | --------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |

341| [Claude Code im Web](/de/claude-code-on-the-web) | Führt Aufgaben in einer neuen Cloud-Sandbox aus, geklont von GitHub | Delegieren von in sich geschlossener asynchroner Arbeit, die Sie später überprüfen |

342| [Claude in Slack](/de/slack) | Startet eine Web-Sitzung von einer `@Claude`-Erwähnung in einem Kanal oder Thread | Starten von Aufgaben direkt aus dem Kontext von Team-Gesprächen |

343| Standard-[MCP-Server](/de/mcp) | Claude fragt ihn während einer Aufgabe ab; nichts wird in die Sitzung übertragen | Claude auf Abruf Zugriff zum Lesen oder Abfragen eines Systems geben |

344| [Remote Control](/de/remote-control) | Sie steuern Ihre lokale Sitzung von claude.ai oder der Claude Mobile App | Steuern einer laufenden Sitzung, während Sie weg von Ihrem Schreibtisch sind |

345 

346Kanäle füllen die Lücke in dieser Liste, indem sie Ereignisse von Nicht-Claude-Quellen in Ihre bereits laufende lokale Sitzung übertragen.

347 

348* **Chat-Brücke**: Fragen Sie Claude etwas von Ihrem Telefon über Telegram, Discord oder iMessage, und die Antwort kommt im selben Chat zurück, während die Arbeit auf Ihrem Computer gegen Ihre echten Dateien läuft.

349* **[Webhook-Empfänger](/de/channels-reference#example-build-a-webhook-receiver)**: Ein Webhook von CI, Ihrem Error Tracker, einer Deploy-Pipeline oder einem anderen externen Service kommt dort an, wo Claude bereits Ihre Dateien offen hat und sich erinnert, was Sie debuggt haben.

350 

351## Nächste Schritte

352 

353Sobald Sie einen Kanal ausgeführt haben, erkunden Sie diese verwandten Funktionen:

354 

355* [Erstellen Sie Ihren eigenen Kanal](/de/channels-reference) für Systeme, die noch keine Plugins haben

356* [Remote Control](/de/remote-control), um eine lokale Sitzung von Ihrem Telefon aus zu steuern, anstatt Ereignisse darin zu übertragen

357* [Geplante Aufgaben](/de/scheduled-tasks), um auf einem Timer abzurufen, anstatt auf übertragene Ereignisse zu reagieren

channels-reference.md +749 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Channels-Referenz

6 

7> Erstellen Sie einen MCP-Server, der Webhooks, Benachrichtigungen und Chat-Nachrichten in eine Claude Code-Sitzung pusht. Referenz für den Channel-Vertrag: Funktionsdeklaration, Benachrichtigungsereignisse, Antwort-Tools, Sender-Gating und Berechtigungsweitergabe.

8 

9<Note>

10 Channels befinden sich in [Research Preview](/de/channels#research-preview) und erfordern Claude Code v2.1.80 oder später. Sie erfordern eine claude.ai-Anmeldung. Konsolen- und API-Schlüssel-Authentifizierung wird nicht unterstützt. Team- und Enterprise-Organisationen müssen [diese explizit aktivieren](/de/channels#enterprise-controls).

11</Note>

12 

13Ein Channel ist ein MCP-Server, der Ereignisse in eine Claude Code-Sitzung pusht, damit Claude auf Dinge reagieren kann, die außerhalb des Terminals geschehen.

14 

15Sie können einen unidirektionalen oder bidirektionalen Channel erstellen. Unidirektionale Channels leiten Benachrichtigungen, Webhooks oder Überwachungsereignisse weiter, auf die Claude reagieren kann. Bidirektionale Channels wie Chat-Brücken [stellen auch ein Antwort-Tool zur Verfügung](#expose-a-reply-tool), damit Claude Nachrichten zurücksendet. Ein Channel mit einem vertrauenswürdigen Sender-Pfad kann sich auch für [Berechtigungsprompts weitergeben](#relay-permission-prompts) entscheiden, damit Sie die Tool-Nutzung remote genehmigen oder ablehnen können.

16 

17Diese Seite behandelt:

18 

19* [Übersicht](#overview): wie Channels funktionieren

20* [Was Sie benötigen](#what-you-need): Anforderungen und allgemeine Schritte

21* [Beispiel: Webhook-Empfänger erstellen](#example-build-a-webhook-receiver): eine minimale unidirektionale Anleitung

22* [Server-Optionen](#server-options): die Constructor-Felder

23* [Benachrichtigungsformat](#notification-format): die Event-Payload

24* [Antwort-Tool bereitstellen](#expose-a-reply-tool): Claude Nachrichten zurücksendet

25* [Eingehende Nachrichten gaten](#gate-inbound-messages): Sender-Überprüfungen zur Verhinderung von Prompt-Injection

26* [Berechtigungsprompts weitergeben](#relay-permission-prompts): Tool-Genehmigungsprompts an Remote-Channels weiterleiten

27 

28Um einen vorhandenen Channel zu verwenden, anstatt einen zu erstellen, siehe [Channels](/de/channels). Telegram, Discord, iMessage und fakechat sind in der Research Preview enthalten.

29 

30## Übersicht

31 

32Ein Channel ist ein [MCP](https://modelcontextprotocol.io)-Server, der auf demselben Computer wie Claude Code ausgeführt wird. Claude Code startet ihn als Unterprozess und kommuniziert über stdio. Ihr Channel-Server ist die Brücke zwischen externen Systemen und der Claude Code-Sitzung:

33 

34* **Chat-Plattformen** (Telegram, Discord): Ihr Plugin läuft lokal und fragt die API der Plattform nach neuen Nachrichten ab. Wenn jemand Ihrem Bot eine Direktnachricht sendet, empfängt das Plugin die Nachricht und leitet sie an Claude weiter. Keine URL zum Bereitstellen erforderlich.

35* **Webhooks** (CI, Überwachung): Ihr Server lauscht auf einem lokalen HTTP-Port. Externe Systeme POSTen an diesen Port, und Ihr Server pusht die Payload an Claude.

36 

37<img src="https://mintlify.s3.us-west-1.amazonaws.com/claude-code/de/images/channel-architecture.svg" alt="Architekturdiagramm, das externe Systeme zeigt, die sich mit Ihrem lokalen Channel-Server verbinden, der über stdio mit Claude Code kommuniziert" />

38 

39## Was Sie benötigen

40 

41Die einzige harte Anforderung ist das [`@modelcontextprotocol/sdk`](https://www.npmjs.com/package/@modelcontextprotocol/sdk)-Paket und eine Node.js-kompatible Laufzeit. [Bun](https://bun.sh), [Node](https://nodejs.org) und [Deno](https://deno.com) funktionieren alle. Die vorgefertigten Plugins in der Research Preview verwenden Bun, aber Ihr Channel muss das nicht.

42 

43Ihr Server muss:

44 

451. Die `claude/channel`-Funktionalität deklarieren, damit Claude Code einen Benachrichtigungslistener registriert

462. `notifications/claude/channel`-Ereignisse emittieren, wenn etwas geschieht

473. Sich über [stdio-Transport](https://modelcontextprotocol.io/docs/concepts/transports#standard-io) verbinden (Claude Code startet Ihren Server als Unterprozess)

48 

49Die Abschnitte [Server-Optionen](#server-options) und [Benachrichtigungsformat](#notification-format) behandeln jede dieser Punkte im Detail. Siehe [Beispiel: Webhook-Empfänger erstellen](#example-build-a-webhook-receiver) für eine vollständige Anleitung.

50 

51Während der Research Preview befinden sich benutzerdefinierte Channels nicht auf der [genehmigten Allowlist](/de/channels#supported-channels). Verwenden Sie `--dangerously-load-development-channels` zum lokalen Testen. Siehe [Testen während der Research Preview](#test-during-the-research-preview) für Details.

52 

53## Beispiel: Webhook-Empfänger erstellen

54 

55Diese Anleitung erstellt einen Single-File-Server, der auf HTTP-Anfragen lauscht und diese in Ihre Claude Code-Sitzung weiterleitet. Am Ende kann alles, das einen HTTP POST senden kann, wie eine CI-Pipeline, eine Überwachungsbenachrichtigung oder ein `curl`-Befehl, Ereignisse an Claude pushen.

56 

57Dieses Beispiel verwendet [Bun](https://bun.sh) als Laufzeit für seinen integrierten HTTP-Server und TypeScript-Unterstützung. Sie können stattdessen [Node](https://nodejs.org) oder [Deno](https://deno.com) verwenden; die einzige Anforderung ist das [MCP SDK](https://www.npmjs.com/package/@modelcontextprotocol/sdk).

58 

59<Steps>

60 <Step title="Erstellen Sie das Projekt">

61 Erstellen Sie ein neues Verzeichnis und installieren Sie das MCP SDK:

62 

63 ```bash theme={null}

64 mkdir webhook-channel && cd webhook-channel

65 bun add @modelcontextprotocol/sdk

66 ```

67 </Step>

68 

69 <Step title="Schreiben Sie den Channel-Server">

70 Erstellen Sie eine Datei namens `webhook.ts`. Dies ist Ihr gesamter Channel-Server: Er verbindet sich mit Claude Code über stdio und lauscht auf HTTP POSTs auf Port 8788. Wenn eine Anfrage ankommt, pusht er den Body als Channel-Ereignis an Claude.

71 

72 ```ts title="webhook.ts" theme={null}

73 #!/usr/bin/env bun

74 import { Server } from '@modelcontextprotocol/sdk/server/index.js'

75 import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

76 

77 // Erstellen Sie den MCP-Server und deklarieren Sie ihn als Channel

78 const mcp = new Server(

79 { name: 'webhook', version: '0.0.1' },

80 {

81 // dieser Schlüssel macht ihn zu einem Channel — Claude Code registriert einen Listener dafür

82 capabilities: { experimental: { 'claude/channel': {} } },

83 // hinzugefügt zu Claudes System-Prompt, damit es weiß, wie diese Ereignisse zu behandeln sind

84 instructions: 'Events from the webhook channel arrive as <channel source="webhook" ...>. They are one-way: read them and act, no reply expected.',

85 },

86 )

87 

88 // Verbinden Sie sich mit Claude Code über stdio (Claude Code startet diesen Prozess)

89 await mcp.connect(new StdioServerTransport())

90 

91 // Starten Sie einen HTTP-Server, der jeden POST an Claude weiterleitet

92 Bun.serve({

93 port: 8788, // jeder offene Port funktioniert

94 // nur localhost: nichts außerhalb dieser Maschine kann POSTen

95 hostname: '127.0.0.1',

96 async fetch(req) {

97 const body = await req.text()

98 await mcp.notification({

99 method: 'notifications/claude/channel',

100 params: {

101 content: body, // wird zum Body des <channel>-Tags

102 // jeder Schlüssel wird zu einem Tag-Attribut, z.B. <channel path="/" method="POST">

103 meta: { path: new URL(req.url).pathname, method: req.method },

104 },

105 })

106 return new Response('ok')

107 },

108 })

109 ```

110 

111 Die Datei macht drei Dinge in Reihenfolge:

112 

113 * **Server-Konfiguration**: erstellt den MCP-Server mit `claude/channel` in seinen Funktionalitäten, was Claude Code mitteilt, dass dies ein Channel ist. Die [`instructions`](#server-options)-Zeichenkette geht in Claudes System-Prompt: teilen Sie Claude mit, welche Ereignisse zu erwarten sind, ob es antworten soll, und wie Antworten weitergeleitet werden sollen, falls ja.

114 * **Stdio-Verbindung**: verbindet sich mit Claude Code über stdin/stdout. Dies ist Standard für jeden [MCP-Server](https://modelcontextprotocol.io/docs/concepts/transports#standard-io): Claude Code startet ihn als Unterprozess.

115 * **HTTP-Listener**: startet einen lokalen Webserver auf Port 8788. Jeder POST-Body wird über `mcp.notification()` als Channel-Ereignis an Claude weitergeleitet. Der `content` wird zum Event-Body, und jeder `meta`-Eintrag wird zu einem Attribut auf dem `<channel>`-Tag. Der Listener benötigt Zugriff auf die `mcp`-Instanz, daher läuft er im selben Prozess. Sie könnten ihn für ein größeres Projekt in separate Module aufteilen.

116 </Step>

117 

118 <Step title="Registrieren Sie Ihren Server bei Claude Code">

119 Fügen Sie den Server zu Ihrer MCP-Konfiguration hinzu, damit Claude Code weiß, wie er zu starten ist. Für eine Projekt-Level `.mcp.json` im selben Verzeichnis verwenden Sie einen relativen Pfad. Für Benutzer-Level-Konfiguration in `~/.claude.json` verwenden Sie den vollständigen absoluten Pfad, damit der Server von jedem Projekt aus gefunden werden kann:

120 

121 ```json title=".mcp.json" theme={null}

122 {

123 "mcpServers": {

124 "webhook": { "command": "bun", "args": ["./webhook.ts"] }

125 }

126 }

127 ```

128 

129 Claude Code liest Ihre MCP-Konfiguration beim Start und startet jeden Server als Unterprozess.

130 </Step>

131 

132 <Step title="Testen Sie es">

133 Während der Research Preview befinden sich benutzerdefinierte Channels nicht auf der Allowlist, daher starten Sie Claude Code mit dem Development-Flag:

134 

135 ```bash theme={null}

136 claude --dangerously-load-development-channels server:webhook

137 ```

138 

139 Wenn Claude Code startet, liest es Ihre MCP-Konfiguration, startet Ihre `webhook.ts` als Unterprozess, und der HTTP-Listener startet automatisch auf dem konfigurierten Port (8788 in diesem Beispiel). Sie müssen den Server nicht selbst ausführen.

140 

141 Wenn Sie "blocked by org policy" sehen, muss Ihr Team- oder Enterprise-Admin [Channels aktivieren](/de/channels#enterprise-controls) zuerst.

142 

143 Simulieren Sie in einem separaten Terminal einen Webhook, indem Sie einen HTTP POST mit einer Nachricht an Ihren Server senden. Dieses Beispiel sendet eine CI-Fehlerbenachrichtigung an Port 8788 (oder welchen Port Sie konfiguriert haben):

144 

145 ```bash theme={null}

146 curl -X POST localhost:8788 -d "build failed on main: https://ci.example.com/run/1234"

147 ```

148 

149 Die Payload kommt in Ihrer Claude Code-Sitzung als `<channel>`-Tag an:

150 

151 ```text theme={null}

152 <channel source="webhook" path="/" method="POST">build failed on main: https://ci.example.com/run/1234</channel>

153 ```

154 

155 In Ihrem Claude Code-Terminal sehen Sie, dass Claude die Nachricht empfängt und anfängt zu antworten: Dateien lesen, Befehle ausführen oder was auch immer die Nachricht erfordert. Dies ist ein unidirektionaler Channel, daher handelt Claude in Ihrer Sitzung, sendet aber nichts über den Webhook zurück. Um Antworten hinzuzufügen, siehe [Antwort-Tool bereitstellen](#expose-a-reply-tool).

156 

157 Wenn das Ereignis nicht ankommt, hängt die Diagnose davon ab, was `curl` zurückgegeben hat:

158 

159 * **`curl` erfolgreich, aber nichts erreicht Claude**: führen Sie `/mcp` in Ihrer Sitzung aus, um den Status des Servers zu überprüfen. "Failed to connect" bedeutet normalerweise einen Abhängigkeits- oder Importfehler in Ihrer Serverdatei; überprüfen Sie das Debug-Log unter `~/.claude/debug/<session-id>.txt` für die stderr-Spur.

160 * **`curl` schlägt mit "connection refused" fehl**: der Port ist entweder noch nicht gebunden oder ein veralteter Prozess aus einem früheren Lauf hält ihn. `lsof -i :<port>` zeigt, was lauscht; `kill` den veralteten Prozess, bevor Sie Ihre Sitzung neu starten.

161 </Step>

162</Steps>

163 

164Der [fakechat-Server](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/fakechat) erweitert dieses Muster mit einer Web-UI, Dateianhängen und einem Antwort-Tool für bidirektionalen Chat.

165 

166## Testen während der Research Preview

167 

168Während der Research Preview muss sich jeder Channel auf der [genehmigten Allowlist](/de/channels#research-preview) befinden, um sich zu registrieren. Das Development-Flag umgeht die Allowlist für spezifische Einträge nach einer Bestätigungsaufforderung. Dieses Beispiel zeigt beide Eintragstypen:

169 

170```bash theme={null}

171# Testen eines Plugins, das Sie entwickeln

172claude --dangerously-load-development-channels plugin:yourplugin@yourmarketplace

173 

174# Testen eines bloßen .mcp.json-Servers (noch kein Plugin-Wrapper)

175claude --dangerously-load-development-channels server:webhook

176```

177 

178Der Bypass ist pro Eintrag. Das Kombinieren dieses Flags mit `--channels` erweitert den Bypass nicht auf die `--channels`-Einträge. Während der Research Preview ist die genehmigte Allowlist von Anthropic kuratiert, daher bleibt Ihr Channel auf dem Development-Flag, während Sie ihn erstellen und testen.

179 

180<Note>

181 Dieses Flag überspringt nur die Allowlist. Die `channelsEnabled`-Organisationsrichtlinie gilt weiterhin. Verwenden Sie es nicht, um Channels aus nicht vertrauenswürdigen Quellen auszuführen.

182</Note>

183 

184## Server-Optionen

185 

186Ein Channel setzt diese Optionen im [`Server`](https://modelcontextprotocol.io/docs/concepts/servers)-Constructor. Die Felder `instructions` und `capabilities.tools` sind [Standard-MCP](https://modelcontextprotocol.io/docs/concepts/servers); `capabilities.experimental['claude/channel']` und `capabilities.experimental['claude/channel/permission']` sind die Channel-spezifischen Ergänzungen:

187 

188| Feld | Typ | Beschreibung |

189| :------------------------------------------------------- | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

190| `capabilities.experimental['claude/channel']` | `object` | Erforderlich. Immer `{}`. Das Vorhandensein registriert den Benachrichtigungslistener. |

191| `capabilities.experimental['claude/channel/permission']` | `object` | Optional. Immer `{}`. Deklariert, dass dieser Channel Berechtigungsweitergabeanfragen empfangen kann. Wenn deklariert, leitet Claude Code Tool-Genehmigungsprompts an Ihren Channel weiter, damit Sie diese remote genehmigen oder ablehnen können. Siehe [Berechtigungsprompts weitergeben](#relay-permission-prompts). |

192| `capabilities.tools` | `object` | Nur bidirektional. Immer `{}`. Standard-MCP-Tool-Funktionalität. Siehe [Antwort-Tool bereitstellen](#expose-a-reply-tool). |

193| `instructions` | `string` | Empfohlen. Hinzugefügt zu Claudes System-Prompt. Teilen Sie Claude mit, welche Ereignisse zu erwarten sind, was die `<channel>`-Tag-Attribute bedeuten, ob es antworten soll, und wenn ja, welches Tool zu verwenden ist und welches Attribut zurückzugeben ist (wie `chat_id`). |

194 

195Um einen unidirektionalen Channel zu erstellen, lassen Sie `capabilities.tools` weg. Dieses Beispiel zeigt ein bidirektionales Setup mit der Channel-Funktionalität, Tools und Anweisungen:

196 

197```ts theme={null}

198import { Server } from '@modelcontextprotocol/sdk/server/index.js'

199 

200const mcp = new Server(

201 { name: 'your-channel', version: '0.0.1' },

202 {

203 capabilities: {

204 experimental: { 'claude/channel': {} }, // registriert den Channel-Listener

205 tools: {}, // weglassen für unidirektionale Channels

206 },

207 // hinzugefügt zu Claudes System-Prompt, damit es weiß, wie Ihre Ereignisse zu behandeln sind

208 instructions: 'Messages arrive as <channel source="your-channel" ...>. Reply with the reply tool.',

209 },

210)

211```

212 

213Um ein Ereignis zu pushen, rufen Sie `mcp.notification()` mit der Methode `notifications/claude/channel` auf. Die Parameter sind im nächsten Abschnitt.

214 

215## Benachrichtigungsformat

216 

217Ihr Server emittiert `notifications/claude/channel` mit zwei Parametern:

218 

219| Feld | Typ | Beschreibung |

220| :-------- | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

221| `content` | `string` | Der Event-Body. Wird als Body des `<channel>`-Tags bereitgestellt. |

222| `meta` | `Record<string, string>` | Optional. Jeder Eintrag wird zu einem Attribut auf dem `<channel>`-Tag für Routing-Kontext wie Chat-ID, Sendername oder Benachrichtigungsschweregrad. Schlüssel müssen Bezeichner sein: nur Buchstaben, Ziffern und Unterstriche. Schlüssel mit Bindestrichen oder anderen Zeichen werden stillschweigend gelöscht. |

223 

224Ihr Server pusht Ereignisse durch Aufrufen von `mcp.notification()` auf der `Server`-Instanz. Dieses Beispiel pusht eine CI-Fehlerbenachrichtigung mit zwei Meta-Schlüsseln:

225 

226```ts theme={null}

227await mcp.notification({

228 method: 'notifications/claude/channel',

229 params: {

230 content: 'build failed on main: https://ci.example.com/run/1234',

231 meta: { severity: 'high', run_id: '1234' },

232 },

233})

234```

235 

236Das Ereignis kommt in Claudes Kontext in einem `<channel>`-Tag an. Das `source`-Attribut wird automatisch aus dem konfigurierten Namen Ihres Servers gesetzt:

237 

238```text theme={null}

239<channel source="your-channel" severity="high" run_id="1234">

240build failed on main: https://ci.example.com/run/1234

241</channel>

242```

243 

244## Antwort-Tool bereitstellen

245 

246Wenn Ihr Channel bidirektional ist, wie eine Chat-Brücke statt eines Alert-Forwarders, stellen Sie ein Standard-[MCP-Tool](https://modelcontextprotocol.io/docs/concepts/tools) zur Verfügung, das Claude aufrufen kann, um Nachrichten zurückzusenden. Nichts an der Tool-Registrierung ist Channel-spezifisch. Ein Antwort-Tool hat drei Komponenten:

247 

2481. Ein `tools: {}`-Eintrag in Ihren `Server`-Constructor-Funktionalitäten, damit Claude Code das Tool entdeckt

2492. Tool-Handler, die das Tool-Schema definieren und die Versendungslogik implementieren

2503. Eine `instructions`-Zeichenkette in Ihrem `Server`-Constructor, die Claude mitteilt, wann und wie das Tool aufgerufen wird

251 

252Um diese zum [Webhook-Empfänger oben](#example-build-a-webhook-receiver) hinzuzufügen:

253 

254<Steps>

255 <Step title="Aktivieren Sie die Tool-Entdeckung">

256 In Ihrem `Server`-Constructor in `webhook.ts` fügen Sie `tools: {}` zu den Funktionalitäten hinzu, damit Claude Code weiß, dass Ihr Server Tools anbietet:

257 

258 ```ts theme={null}

259 capabilities: {

260 experimental: { 'claude/channel': {} },

261 tools: {}, // aktiviert die Tool-Entdeckung

262 },

263 ```

264 </Step>

265 

266 <Step title="Registrieren Sie das Antwort-Tool">

267 Fügen Sie Folgendes zu `webhook.ts` hinzu. Der `import` geht oben in der Datei mit Ihren anderen Importen; die zwei Handler gehen zwischen dem `Server`-Constructor und `mcp.connect()`. Dies registriert ein `reply`-Tool, das Claude mit einer `chat_id` und `text` aufrufen kann:

268 

269 ```ts theme={null}

270 // Fügen Sie diesen Import oben in webhook.ts hinzu

271 import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'

272 

273 // Claude fragt dies beim Start ab, um zu entdecken, welche Tools Ihr Server anbietet

274 mcp.setRequestHandler(ListToolsRequestSchema, async () => ({

275 tools: [{

276 name: 'reply',

277 description: 'Send a message back over this channel',

278 // inputSchema teilt Claude mit, welche Argumente zu übergeben sind

279 inputSchema: {

280 type: 'object',

281 properties: {

282 chat_id: { type: 'string', description: 'The conversation to reply in' },

283 text: { type: 'string', description: 'The message to send' },

284 },

285 required: ['chat_id', 'text'],

286 },

287 }],

288 }))

289 

290 // Claude ruft dies auf, wenn es ein Tool aufrufen möchte

291 mcp.setRequestHandler(CallToolRequestSchema, async req => {

292 if (req.params.name === 'reply') {

293 const { chat_id, text } = req.params.arguments as { chat_id: string; text: string }

294 // send() ist Ihre Ausgangsrichtung: POST an Ihre Chat-Plattform, oder für lokales

295 // Testen die SSE-Übertragung, die im vollständigen Beispiel unten gezeigt wird.

296 send(`Reply to ${chat_id}: ${text}`)

297 return { content: [{ type: 'text', text: 'sent' }] }

298 }

299 throw new Error(`unknown tool: ${req.params.name}`)

300 })

301 ```

302 </Step>

303 

304 <Step title="Aktualisieren Sie die Anweisungen">

305 Aktualisieren Sie die `instructions`-Zeichenkette in Ihrem `Server`-Constructor, damit Claude weiß, dass Antworten über das Tool zurückgeleitet werden. Dieses Beispiel teilt Claude mit, `chat_id` aus dem eingehenden Tag zu übergeben:

306 

307 ```ts theme={null}

308 instructions: 'Messages arrive as <channel source="webhook" chat_id="...">. Reply with the reply tool, passing the chat_id from the tag.'

309 ```

310 </Step>

311</Steps>

312 

313Hier ist die vollständige `webhook.ts` mit bidirektionaler Unterstützung. Ausgehende Antworten streamen über `GET /events` mit [Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events) (SSE), daher kann `curl -N localhost:8788/events` sie live beobachten; eingehender Chat kommt auf `POST /` an:

314 

315```ts title="Full webhook.ts with reply tool' expandable theme={null}

316#!/usr/bin/env bun

317import { Server } from '@modelcontextprotocol/sdk/server/index.js'

318import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

319import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'

320 

321// --- Ausgangsrichtung: schreiben Sie an alle curl -N-Listener auf /events ---

322// Eine echte Brücke würde stattdessen an Ihre Chat-Plattform POSTen.

323const listeners = new Set<(chunk: string) => void>()

324function send(text: string) {

325 const chunk = text.split('\n').map(l => `data: ${l}\n`).join('') + '\n'

326 for (const emit of listeners) emit(chunk)

327}

328 

329const mcp = new Server(

330 { name: 'webhook', version: '0.0.1' },

331 {

332 capabilities: {

333 experimental: { 'claude/channel': {} },

334 tools: {},

335 },

336 instructions: 'Messages arrive as <channel source="webhook" chat_id="...">. Reply with the reply tool, passing the chat_id from the tag.',

337 },

338)

339 

340mcp.setRequestHandler(ListToolsRequestSchema, async () => ({

341 tools: [{

342 name: 'reply',

343 description: 'Send a message back over this channel',

344 inputSchema: {

345 type: 'object',

346 properties: {

347 chat_id: { type: 'string', description: 'The conversation to reply in' },

348 text: { type: 'string', description: 'The message to send' },

349 },

350 required: ['chat_id', 'text'],

351 },

352 }],

353}))

354 

355mcp.setRequestHandler(CallToolRequestSchema, async req => {

356 if (req.params.name === 'reply') {

357 const { chat_id, text } = req.params.arguments as { chat_id: string; text: string }

358 send(`Reply to ${chat_id}: ${text}`)

359 return { content: [{ type: 'text', text: 'sent' }] }

360 }

361 throw new Error(`unknown tool: ${req.params.name}`)

362})

363 

364await mcp.connect(new StdioServerTransport())

365 

366let nextId = 1

367Bun.serve({

368 port: 8788,

369 hostname: '127.0.0.1',

370 idleTimeout: 0, // don't close idle SSE streams

371 async fetch(req) {

372 const url = new URL(req.url)

373 

374 // GET /events: SSE stream so curl -N can watch Claude's replies live

375 if (req.method === 'GET' && url.pathname === '/events') {

376 const stream = new ReadableStream({

377 start(ctrl) {

378 ctrl.enqueue(': connected\n\n') // so curl shows something immediately

379 const emit = (chunk: string) => ctrl.enqueue(chunk)

380 listeners.add(emit)

381 req.signal.addEventListener('abort', () => listeners.delete(emit))

382 },

383 })

384 return new Response(stream, {

385 headers: { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache' },

386 })

387 }

388 

389 // POST: forward to Claude as a channel event

390 const body = await req.text()

391 const chat_id = String(nextId++)

392 await mcp.notification({

393 method: 'notifications/claude/channel',

394 params: {

395 content: body,

396 meta: { chat_id, path: url.pathname, method: req.method },

397 },

398 })

399 return new Response('ok')

400 },

401})

402```

403 

404Der [fakechat-Server](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/fakechat) zeigt ein vollständigeres Beispiel mit Dateianhängen und Nachrichtenbearbeitung.

405 

406## Eingehende Nachrichten gaten

407 

408Ein ungegatterter Channel ist ein Prompt-Injection-Vektor. Jeder, der Ihren Endpunkt erreichen kann, kann Text vor Claude platzieren. Ein Channel, der auf einer Chat-Plattform oder einem öffentlichen Endpunkt lauscht, benötigt eine echte Sender-Überprüfung, bevor er etwas emittiert.

409 

410Überprüfen Sie den Sender gegen eine Allowlist, bevor Sie `mcp.notification()` aufrufen. Dieses Beispiel löscht jede Nachricht von einem Sender, der nicht in der Menge ist:

411 

412```ts theme={null}

413const allowed = new Set(loadAllowlist()) // from your access.json or equivalent

414 

415// inside your message handler, before emitting:

416if (!allowed.has(message.from.id)) { // sender, not room

417 return // drop silently

418}

419await mcp.notification({ ... })

420```

421 

422Gaten Sie auf der Identität des Senders, nicht auf der Chat- oder Raumidentität: `message.from.id` im Beispiel, nicht `message.chat.id`. In Gruppenchats unterscheiden sich diese, und das Gaten auf dem Raum würde jedem in einer genehmigten Gruppe erlauben, Nachrichten in die Sitzung einzuspritzen.

423 

424Die [Telegram](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram)- und [Discord](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord)-Channels gaten auf die gleiche Weise auf einer Sender-Allowlist. Sie bootstrappen die Liste durch Pairing: Der Benutzer sendet dem Bot eine Direktnachricht, der Bot antwortet mit einem Pairing-Code, der Benutzer genehmigt ihn in seiner Claude Code-Sitzung, und seine Plattform-ID wird hinzugefügt. Siehe eine der Implementierungen für den vollständigen Pairing-Flow. Der [iMessage](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage)-Channel verfolgt einen anderen Ansatz: Er erkennt die eigenen Adressen des Benutzers aus der Messages-Datenbank beim Start und lässt sie automatisch durch, wobei andere Sender nach Handle hinzugefügt werden.

425 

426## Berechtigungsprompts weitergeben

427 

428<Note>

429 Die Berechtigungsweitergabe erfordert Claude Code v2.1.81 oder später. Frühere Versionen ignorieren die `claude/channel/permission`-Funktionalität.

430</Note>

431 

432Wenn Claude ein Tool aufruft, das Genehmigung benötigt, öffnet sich der lokale Terminal-Dialog und die Sitzung wartet. Ein bidirektionaler Channel kann sich dafür entscheiden, denselben Prompt parallel zu empfangen und ihn an Sie auf einem anderen Gerät weiterzuleiten. Beide bleiben aktiv: Sie können im Terminal oder auf Ihrem Telefon antworten, und Claude Code wendet die Antwort an, die zuerst ankommt, und schließt die andere.

433 

434Die Weitergabe deckt Tool-Nutzungsgenehmigungen wie Bash, Write und Edit ab. Projekt-Vertrauen und MCP-Server-Zustimmungsdialoge werden nicht weitergeleitet; diese erscheinen nur im lokalen Terminal.

435 

436### Wie die Weitergabe funktioniert

437 

438Wenn ein Berechtigungsprompt öffnet, hat die Weitergabeschleife vier Schritte:

439 

4401. Claude Code generiert eine kurze Request-ID und benachrichtigt Ihren Server

4412. Ihr Server leitet den Prompt und die ID an Ihre Chat-App weiter

4423. Der Remote-Benutzer antwortet mit ja oder nein und dieser ID

4434. Ihr eingehender Handler analysiert die Antwort in ein Urteil, und Claude Code wendet es nur an, wenn die ID einer offenen Anfrage entspricht

444 

445Der lokale Terminal-Dialog bleibt während all dessen offen. Wenn jemand am Terminal antwortet, bevor das Remote-Urteil ankommt, wird diese Antwort stattdessen angewendet und die ausstehende Remote-Anfrage wird gelöscht.

446 

447<img src="https://mintlify.s3.us-west-1.amazonaws.com/claude-code/de/images/channel-permission-relay.svg" alt="Sequenzdiagramm: Claude Code sendet eine permission_request-Benachrichtigung an den Channel-Server, der Server formatiert und sendet den Prompt an die Chat-App, der Mensch antwortet mit einem Urteil, und der Server analysiert diese Antwort in eine Berechtigungsbenachrichtigung zurück an Claude Code" />

448 

449### Berechtigungsanfrage-Felder

450 

451Die ausgehende Benachrichtigung von Claude Code ist `notifications/claude/channel/permission_request`. Wie die [Channel-Benachrichtigung](#notification-format) ist der Transport Standard-MCP, aber die Methode und das Schema sind Claude Code-Erweiterungen. Das `params`-Objekt hat vier String-Felder, die Ihr Server in den ausgehenden Prompt formatiert:

452 

453| Feld | Beschreibung |

454| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

455| `request_id` | Fünf Kleinbuchstaben aus `a`-`z` ohne `l`, damit es nie als `1` oder `I` gelesen wird, wenn es auf einem Telefon eingegeben wird. Fügen Sie es in Ihren ausgehenden Prompt ein, damit es in der Antwort wiederholt werden kann. Claude Code akzeptiert nur ein Urteil, das eine ID trägt, die es ausgestellt hat. Der lokale Terminal-Dialog zeigt diese ID nicht an, daher ist Ihr ausgehender Handler die einzige Möglichkeit, sie zu erfahren. |

456| `tool_name` | Name des Tools, das Claude verwenden möchte, zum Beispiel `Bash` oder `Write`. |

457| `description` | Menschenlesbarer Zusammenfassung dessen, was dieser spezifische Tool-Aufruf tut, derselbe Text, den der lokale Terminal-Dialog zeigt. Für einen Bash-Aufruf ist dies Claudes Beschreibung des Befehls oder der Befehl selbst, wenn keine gegeben wurde. |

458| `input_preview` | Die Argumente des Tools als JSON-Zeichenkette, gekürzt auf 200 Zeichen. Für Bash ist dies der Befehl; für Write ist es der Dateipfad und ein Präfix des Inhalts. Lassen Sie es aus Ihrem Prompt weg, wenn Sie nur Platz für eine einzeilige Nachricht haben. Ihr Server entscheidet, was angezeigt wird. |

459 

460Das Urteil, das Ihr Server zurücksendet, ist `notifications/claude/channel/permission` mit zwei Feldern: `request_id`, das die obige ID wiederholt, und `behavior`, das auf `'allow'` oder `'deny'` gesetzt ist. Allow lässt den Tool-Aufruf fortfahren; deny lehnt ihn ab, dasselbe wie das Antworten mit Nein im lokalen Dialog. Weder das Urteil beeinflusst zukünftige Aufrufe.

461 

462### Weitergabe zu einer Chat-Brücke hinzufügen

463 

464Das Hinzufügen von Berechtigungsweitergabe zu einem bidirektionalen Channel erfordert drei Komponenten:

465 

4661. Ein `claude/channel/permission: {}`-Eintrag unter `experimental`-Funktionalitäten in Ihrem `Server`-Constructor, damit Claude Code weiß, dass Prompts weitergeleitet werden sollen

4672. Ein Benachrichtigungshandler für `notifications/claude/channel/permission_request`, der den Prompt formatiert und ihn über Ihre Plattform-API sendet

4683. Eine Überprüfung in Ihrem eingehenden Nachrichtenhandler, die `yes <id>` oder `no <id>` erkennt und stattdessen eine `notifications/claude/channel/permission`-Urteilsbenachrichtigung emittiert, anstatt den Text an Claude weiterzuleiten

469 

470Deklarieren Sie die Funktionalität nur, wenn Ihr Channel [den Sender authentifiziert](#gate-inbound-messages), da jeder, der über Ihren Channel antworten kann, Tool-Nutzung in Ihrer Sitzung genehmigen oder ablehnen kann.

471 

472Um diese zu einer bidirektionalen Chat-Brücke wie der in [Antwort-Tool bereitstellen](#expose-a-reply-tool) zusammengestellten hinzuzufügen:

473 

474<Steps>

475 <Step title="Deklarieren Sie die Berechtigungsfunktionalität">

476 In Ihrem `Server`-Constructor fügen Sie `claude/channel/permission: {}` neben `claude/channel` unter `experimental` hinzu:

477 

478 ```ts theme={null}

479 capabilities: {

480 experimental: {

481 'claude/channel': {},

482 'claude/channel/permission': {}, // opt in to permission relay

483 },

484 tools: {},

485 },

486 ```

487 </Step>

488 

489 <Step title="Behandeln Sie die eingehende Anfrage">

490 Registrieren Sie einen Benachrichtigungshandler zwischen Ihrem `Server`-Constructor und `mcp.connect()`. Claude Code ruft ihn mit den [vier Anfrage-Feldern](#permission-request-fields) auf, wenn ein Berechtigungsdialog öffnet. Ihr Handler formatiert den Prompt für Ihre Plattform und enthält Anweisungen zum Antworten mit der ID:

491 

492 ```ts theme={null}

493 import { z } from 'zod'

494 

495 // setNotificationHandler leitet nach z.literal auf dem method-Feld weiter,

496 // daher ist dieses Schema sowohl der Validator als auch der Dispatch-Schlüssel

497 const PermissionRequestSchema = z.object({

498 method: z.literal('notifications/claude/channel/permission_request'),

499 params: z.object({

500 request_id: z.string(), // five lowercase letters, include verbatim in your prompt

501 tool_name: z.string(), // e.g. "Bash", "Write"

502 description: z.string(), // human-readable summary of this call

503 input_preview: z.string(), // tool args as JSON, truncated to ~200 chars

504 }),

505 })

506 

507 mcp.setNotificationHandler(PermissionRequestSchema, async ({ params }) => {

508 // send() ist Ihre Ausgangsrichtung: POST an Ihre Chat-Plattform, oder für lokales

509 // Testen die SSE-Übertragung, die im vollständigen Beispiel unten gezeigt wird.

510 send(

511 `Claude wants to run ${params.tool_name}: ${params.description}\n\n` +

512 // die ID in der Anweisung ist das, was Ihr eingehender Handler in Schritt 3 analysiert

513 `Reply "yes ${params.request_id}" or "no ${params.request_id}"`,

514 )

515 })

516 ```

517 </Step>

518 

519 <Step title="Fangen Sie das Urteil in Ihrem eingehenden Handler ab">

520 Ihr eingehender Handler ist die Schleife oder der Callback, der Nachrichten von Ihrer Plattform empfängt: derselbe Ort, an dem Sie [auf Sender gaten](#gate-inbound-messages) und `notifications/claude/channel` emittieren, um Chat an Claude weiterzuleiten. Fügen Sie eine Überprüfung vor dem Chat-Weiterleitungsaufruf hinzu, die das Urteilsformat erkennt und stattdessen die Berechtigungsbenachrichtigung emittiert.

521 

522 Der Regex entspricht dem ID-Format, das Claude Code generiert: fünf Buchstaben, nie `l`. Das `/i`-Flag toleriert Telefon-Autokorrektur, die die Antwort großschreibt; kleinschreiben Sie die erfasste ID, bevor Sie sie zurücksendet.

523 

524 ```ts theme={null}

525 // matches "y abcde", "yes abcde", "n abcde", "no abcde"

526 // [a-km-z] is the ID alphabet Claude Code uses (lowercase, skips 'l')

527 // /i tolerates phone autocorrect; lowercase the capture before sending

528 const PERMISSION_REPLY_RE = /^\s*(y|yes|n|no)\s+([a-km-z]{5})\s*$/i

529 

530 async function onInbound(message: PlatformMessage) {

531 if (!allowed.has(message.from.id)) return // gate on sender first

532 

533 const m = PERMISSION_REPLY_RE.exec(message.text)

534 if (m) {

535 // m[1] is the verdict word, m[2] is the request ID

536 // emit the verdict notification back to Claude Code instead of chat

537 await mcp.notification({

538 method: 'notifications/claude/channel/permission',

539 params: {

540 request_id: m[2].toLowerCase(), // normalize in case of autocorrect caps

541 behavior: m[1].toLowerCase().startsWith('y') ? 'allow' : 'deny',

542 },

543 })

544 return // handled as verdict, don't also forward as chat

545 }

546 

547 // didn't match verdict format: fall through to the normal chat path

548 await mcp.notification({

549 method: 'notifications/claude/channel',

550 params: { content: message.text, meta: { chat_id: String(message.chat.id) } },

551 })

552 }

553 ```

554 </Step>

555</Steps>

556 

557Claude Code hält auch den lokalen Terminal-Dialog offen, daher können Sie an beiden Orten antworten, und die erste Antwort, die ankommt, wird angewendet. Eine Remote-Antwort, die nicht genau dem erwarteten Format entspricht, schlägt auf eine von zwei Arten fehl, und in beiden Fällen bleibt der Dialog offen:

558 

559* **Anderes Format**: der Regex Ihres eingehenden Handlers schlägt fehl zu entsprechen, daher fällt Text wie `approve it` oder `yes` ohne ID als normale Nachricht an Claude durch.

560* **Richtiges Format, falsche ID**: Ihr Server emittiert ein Urteil, aber Claude Code findet keine offene Anfrage mit dieser ID und löscht es stillschweigend.

561 

562### Vollständiges Beispiel

563 

564Die zusammengestellte `webhook.ts` unten kombiniert alle drei Erweiterungen von dieser Seite: das Antwort-Tool, Sender-Gating und Berechtigungsweitergabe. Wenn Sie hier anfangen, benötigen Sie auch die [Projekt-Setup und `.mcp.json`-Eintrag](#example-build-a-webhook-receiver) aus der anfänglichen Anleitung.

565 

566Um beide Richtungen von curl aus testbar zu machen, dient der HTTP-Listener zwei Pfaden:

567 

568* **`GET /events`**: hält einen SSE-Stream offen und pusht jede ausgehende Nachricht als `data:`-Zeile, daher kann `curl -N` Claudes Antworten und Berechtigungsprompts live beobachten, wenn sie ankommen.

569* **`POST /`**: die eingehende Seite, derselbe Handler wie zuvor, jetzt mit der Urteilsformat-Überprüfung vor dem Chat-Weiterleitungszweig eingefügt.

570 

571```ts title="Full webhook.ts with permission relay' expandable theme={null}

572#!/usr/bin/env bun

573import { Server } from '@modelcontextprotocol/sdk/server/index.js'

574import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

575import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'

576import { z } from 'zod'

577 

578// --- Ausgangsrichtung: schreiben Sie an alle curl -N-Listener auf /events ---

579// Eine echte Brücke würde stattdessen an Ihre Chat-Plattform POSTen.

580const listeners = new Set<(chunk: string) => void>()

581function send(text: string) {

582 const chunk = text.split('\n').map(l => `data: ${l}\n`).join('') + '\n'

583 for (const emit of listeners) emit(chunk)

584}

585 

586// Sender-Allowlist. Für die lokale Anleitung vertrauen wir dem einzelnen X-Sender

587// Header-Wert "dev"; eine echte Brücke würde die Plattform-Benutzer-ID überprüfen.

588const allowed = new Set(['dev'])

589 

590const mcp = new Server(

591 { name: 'webhook', version: '0.0.1' },

592 {

593 capabilities: {

594 experimental: {

595 'claude/channel': {},

596 'claude/channel/permission': {}, // opt in to permission relay

597 },

598 tools: {},

599 },

600 instructions:

601 'Messages arrive as <channel source="webhook" chat_id="...">. ' +

602 'Reply with the reply tool, passing the chat_id from the tag.',

603 },

604)

605 

606// --- reply tool: Claude calls this to send a message back ---

607mcp.setRequestHandler(ListToolsRequestSchema, async () => ({

608 tools: [{

609 name: 'reply',

610 description: 'Send a message back over this channel',

611 inputSchema: {

612 type: 'object',

613 properties: {

614 chat_id: { type: 'string', description: 'The conversation to reply in' },

615 text: { type: 'string', description: 'The message to send' },

616 },

617 required: ['chat_id', 'text'],

618 },

619 }],

620}))

621 

622mcp.setRequestHandler(CallToolRequestSchema, async req => {

623 if (req.params.name === 'reply') {

624 const { chat_id, text } = req.params.arguments as { chat_id: string; text: string }

625 send(`Reply to ${chat_id}: ${text}`)

626 return { content: [{ type: 'text', text: 'sent' }] }

627 }

628 throw new Error(`unknown tool: ${req.params.name}`)

629})

630 

631// --- permission relay: Claude Code (not Claude) calls this when a dialog opens

632const PermissionRequestSchema = z.object({

633 method: z.literal('notifications/claude/channel/permission_request'),

634 params: z.object({

635 request_id: z.string(),

636 tool_name: z.string(),

637 description: z.string(),

638 input_preview: z.string(),

639 }),

640})

641 

642mcp.setNotificationHandler(PermissionRequestSchema, async ({ params }) => {

643 send(

644 `Claude wants to run ${params.tool_name}: ${params.description}\n\n` +

645 `Reply "yes ${params.request_id}" or "no ${params.request_id}"`,

646 )

647})

648 

649await mcp.connect(new StdioServerTransport())

650 

651// --- HTTP on :8788: GET /events streams outbound, POST routes inbound ---

652const PERMISSION_REPLY_RE = /^\s*(y|yes|n|no)\s+([a-km-z]{5})\s*$/i

653let nextId = 1

654 

655Bun.serve({

656 port: 8788,

657 hostname: '127.0.0.1',

658 idleTimeout: 0, // don't close idle SSE streams

659 async fetch(req) {

660 const url = new URL(req.url)

661 

662 // GET /events: SSE stream so curl -N can watch replies and prompts live

663 if (req.method === 'GET' && url.pathname === '/events') {

664 const stream = new ReadableStream({

665 start(ctrl) {

666 ctrl.enqueue(': connected\n\n') // so curl shows something immediately

667 const emit = (chunk: string) => ctrl.enqueue(chunk)

668 listeners.add(emit)

669 req.signal.addEventListener('abort', () => listeners.delete(emit))

670 },

671 })

672 return new Response(stream, {

673 headers: { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache' },

674 })

675 }

676 

677 // everything else is inbound: gate on sender first

678 const body = await req.text()

679 const sender = req.headers.get('X-Sender') ?? ''

680 if (!allowed.has(sender)) return new Response('forbidden', { status: 403 })

681 

682 // check for verdict format before treating as chat

683 const m = PERMISSION_REPLY_RE.exec(body)

684 if (m) {

685 await mcp.notification({

686 method: 'notifications/claude/channel/permission',

687 params: {

688 request_id: m[2].toLowerCase(),

689 behavior: m[1].toLowerCase().startsWith('y') ? 'allow' : 'deny',

690 },

691 })

692 return new Response('verdict recorded')

693 }

694 

695 // normal chat: forward to Claude as a channel event

696 const chat_id = String(nextId++)

697 await mcp.notification({

698 method: 'notifications/claude/channel',

699 params: { content: body, meta: { chat_id, path: url.pathname } },

700 })

701 return new Response('ok')

702 },

703})

704```

705 

706Testen Sie den Urteilspfad in drei Terminals. Das erste ist Ihre Claude Code-Sitzung, gestartet mit dem [Development-Flag](#test-during-the-research-preview), damit es `webhook.ts` startet:

707 

708```bash theme={null}

709claude --dangerously-load-development-channels server:webhook

710```

711 

712Im zweiten streamen Sie die ausgehende Seite, damit Sie Claudes Antworten und alle Berechtigungsprompts live sehen können, wenn sie ankommen:

713 

714```bash theme={null}

715curl -N localhost:8788/events

716```

717 

718Im dritten senden Sie eine Nachricht, die Claude veranlasst, einen Befehl auszuführen:

719 

720```bash theme={null}

721curl -d "list the files in this directory" -H "X-Sender: dev" localhost:8788

722```

723 

724Der lokale Berechtigungsdialog öffnet sich in Ihrem Claude Code-Terminal. Einen Moment später erscheint der Prompt im `/events`-Stream, einschließlich der fünf-buchstabigen ID. Genehmigen Sie ihn von der Remote-Seite:

725 

726```bash theme={null}

727curl -d "yes <id>" -H "X-Sender: dev" localhost:8788

728```

729 

730Der lokale Dialog schließt sich und das Tool läuft. Claudes Antwort kommt über das `reply`-Tool zurück und landet auch im Stream.

731 

732Die drei Channel-spezifischen Teile in dieser Datei:

733 

734* **Funktionalitäten** im `Server`-Constructor: `claude/channel` registriert den Benachrichtigungslistener, `claude/channel/permission` entscheidet sich für Berechtigungsweitergabe, `tools` lässt Claude das Antwort-Tool entdecken.

735* **Ausgehende Pfade**: der `reply`-Tool-Handler ist das, was Claude für Gesprächsantworten aufruft; der `PermissionRequestSchema`-Benachrichtigungshandler ist das, was Claude Code aufruft, wenn ein Berechtigungsdialog öffnet. Beide rufen `send()` auf, um über `/events` zu übertragen, aber sie werden von verschiedenen Teilen des Systems ausgelöst.

736* **HTTP-Handler**: `GET /events` hält einen SSE-Stream offen, damit curl Ausgangsrichtung live beobachten kann; `POST` ist eingehend, gatet auf dem `X-Sender`-Header. Ein `yes <id>`- oder `no <id>`-Body geht an Claude Code als Urteilsbenachrichtigung und erreicht nie Claude; alles andere wird an Claude als Channel-Ereignis weitergeleitet.

737 

738## Als Plugin verpacken

739 

740Um Ihren Channel installierbar und teilbar zu machen, wickeln Sie ihn in ein [Plugin](/de/plugins) ein und veröffentlichen Sie ihn auf einem [Marketplace](/de/plugin-marketplaces). Benutzer installieren ihn mit `/plugin install`, dann aktivieren ihn pro Sitzung mit `--channels plugin:<name>@<marketplace>`.

741 

742Ein Channel, der auf Ihrem eigenen Marketplace veröffentlicht wird, benötigt immer noch `--dangerously-load-development-channels` zum Ausführen, da er nicht auf der [genehmigten Allowlist](/de/channels#supported-channels) ist. Um ihn hinzufügen zu lassen, [reichen Sie ihn beim offiziellen Marketplace ein](/de/plugins#submit-your-plugin-to-the-official-marketplace). Channel-Plugins durchlaufen eine Sicherheitsüberprüfung, bevor sie genehmigt werden. Bei Team- und Enterprise-Plänen kann ein Admin stattdessen Ihr Plugin in die [`allowedChannelPlugins`](/de/channels#restrict-which-channel-plugins-can-run)-Liste der Organisation aufnehmen, die die Standard-Anthropic-Allowlist ersetzt.

743 

744## Siehe auch

745 

746* [Channels](/de/channels) zum Installieren und Verwenden von Telegram, Discord, iMessage oder der fakechat-Demo und zum Aktivieren von Channels für eine Team- oder Enterprise-Organisation

747* [Arbeitende Channel-Implementierungen](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins) für vollständigen Server-Code mit Pairing-Flows, Antwort-Tools und Dateianhängen

748* [MCP](/de/mcp) für das zugrunde liegende Protokoll, das Channel-Server implementieren

749* [Plugins](/de/plugins) zum Verpacken Ihres Channels, damit Benutzer ihn mit `/plugin install` installieren können

checkpointing.md +89 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Checkpointing

6 

7> Verfolgen, zurückspulen und fassen Sie Claudes Bearbeitungen und Konversation zusammen, um den Sitzungsstatus zu verwalten.

8 

9Claude Code verfolgt automatisch Claudes Dateibearbeitungen während Sie arbeiten, sodass Sie Änderungen schnell rückgängig machen und zu vorherigen Zuständen zurückspulen können, falls etwas schiefgeht.

10 

11## Wie Checkpointing funktioniert

12 

13Während Sie mit Claude arbeiten, erfasst Checkpointing automatisch den Zustand Ihres Codes vor jeder Bearbeitung. Dieses Sicherheitsnetz ermöglicht es Ihnen, ehrgeizige, großflächige Aufgaben zu verfolgen, da Sie immer zu einem vorherigen Code-Zustand zurückkehren können.

14 

15### Automatische Verfolgung

16 

17Claude Code verfolgt alle Änderungen, die von seinen Datei-Bearbeitungswerkzeugen vorgenommen werden:

18 

19* Jede Benutzereingabe erstellt einen neuen Checkpoint

20* Checkpoints bleiben über Sitzungen hinweg erhalten, sodass Sie auf sie in fortgesetzten Konversationen zugreifen können

21* Werden automatisch zusammen mit Sitzungen nach 30 Tagen bereinigt (konfigurierbar)

22 

23### Zurückspulen und zusammenfassen

24 

25Drücken Sie `Esc` zweimal (`Esc` + `Esc`) oder verwenden Sie den `/rewind` Befehl, um das Zurückspul-Menü zu öffnen. Eine scrollbare Liste zeigt jede Ihrer Eingaben aus der Sitzung. Wählen Sie den Punkt aus, auf den Sie einwirken möchten, und wählen Sie dann eine Aktion:

26 

27* **Code und Konversation wiederherstellen**: Setzt sowohl Code als auch Konversation auf diesen Punkt zurück

28* **Konversation wiederherstellen**: Zurückspulen zu dieser Nachricht, während der aktuelle Code beibehalten wird

29* **Code wiederherstellen**: Dateiänderungen rückgängig machen, während die Konversation beibehalten wird

30* **Von hier aus zusammenfassen**: Komprimieren Sie die Konversation von diesem Punkt an in eine Zusammenfassung und geben Sie Kontextfensterplatz frei

31* **Abbrechen**: Kehren Sie zur Nachrichtenliste zurück, ohne Änderungen vorzunehmen

32 

33Nach dem Wiederherstellen der Konversation oder dem Zusammenfassen wird die ursprüngliche Eingabe aus der ausgewählten Nachricht in das Eingabefeld wiederhergestellt, sodass Sie sie erneut senden oder bearbeiten können.

34 

35#### Wiederherstellen vs. zusammenfassen

36 

37Die drei Wiederherstellungsoptionen setzen den Zustand zurück: Sie machen Code-Änderungen, Konversationsverlauf oder beides rückgängig. „Von hier aus zusammenfassen" funktioniert anders:

38 

39* Nachrichten vor der ausgewählten Nachricht bleiben intakt

40* Die ausgewählte Nachricht und alle nachfolgenden Nachrichten werden durch eine kompakte KI-generierte Zusammenfassung ersetzt

41* Keine Dateien auf der Festplatte werden geändert

42* Die ursprünglichen Nachrichten bleiben im Sitzungstranskript erhalten, sodass Claude die Details bei Bedarf referenzieren kann

43 

44Dies ähnelt `/compact`, ist aber gezielt: Anstatt die gesamte Konversation zusammenzufassen, behalten Sie frühen Kontext in vollem Detail und komprimieren nur die Teile, die Platz verbrauchen. Sie können optionale Anweisungen eingeben, um zu lenken, worauf sich die Zusammenfassung konzentriert.

45 

46<Note>

47 Zusammenfassen hält Sie in derselben Sitzung und komprimiert Kontext. Wenn Sie abzweigen und einen anderen Ansatz versuchen möchten, während Sie die ursprüngliche Sitzung intakt bewahren, verwenden Sie stattdessen [fork](/de/how-claude-code-works#resume-or-fork-sessions) (`claude --continue --fork-session`).

48</Note>

49 

50## Häufige Anwendungsfälle

51 

52Checkpoints sind besonders nützlich, wenn:

53 

54* **Alternativen erkunden**: Versuchen Sie verschiedene Implementierungsansätze, ohne Ihren Ausgangspunkt zu verlieren

55* **Fehler beheben**: Machen Sie schnell Änderungen rückgängig, die Fehler eingeführt oder Funktionalität unterbrochen haben

56* **Funktionen iterieren**: Experimentieren Sie mit Variationen, da Sie zu funktionierenden Zuständen zurückkehren können

57* **Kontextplatz freigeben**: Fassen Sie eine ausführliche Debugging-Sitzung von der Mitte an zusammen, während Sie Ihre ursprünglichen Anweisungen intakt halten

58 

59## Einschränkungen

60 

61### Bash-Befehlsänderungen werden nicht verfolgt

62 

63Checkpointing verfolgt keine Dateien, die durch Bash-Befehle geändert werden. Wenn Claude Code beispielsweise ausführt:

64 

65```bash theme={null}

66rm file.txt

67mv old.txt new.txt

68cp source.txt dest.txt

69```

70 

71Diese Dateiänderungen können nicht durch Zurückspulen rückgängig gemacht werden. Nur direkte Dateibearbeitungen, die durch Claudes Datei-Bearbeitungswerkzeuge vorgenommen werden, werden verfolgt.

72 

73### Externe Änderungen werden nicht verfolgt

74 

75Checkpointing verfolgt nur Dateien, die in der aktuellen Sitzung bearbeitet wurden. Manuelle Änderungen, die Sie an Dateien außerhalb von Claude Code vornehmen, und Bearbeitungen aus anderen gleichzeitigen Sitzungen werden normalerweise nicht erfasst, es sei denn, sie ändern zufällig dieselben Dateien wie die aktuelle Sitzung.

76 

77### Kein Ersatz für Versionskontrolle

78 

79Checkpoints sind für schnelle, sitzungsebene Wiederherstellung konzipiert. Für permanente Versionshistorie und Zusammenarbeit:

80 

81* Verwenden Sie weiterhin Versionskontrolle (z. B. Git) für Commits, Branches und langfristige Historie

82* Checkpoints ergänzen, ersetzen aber nicht ordnungsgemäße Versionskontrolle

83* Denken Sie an Checkpoints als „lokales Rückgängigmachen" und Git als „permanente Historie"

84 

85## Siehe auch

86 

87* [Interaktiver Modus](/de/interactive-mode) - Tastaturkürzel und Sitzungssteuerungen

88* [Integrierte Befehle](/de/commands) - Zugriff auf Checkpoints mit `/rewind`

89* [CLI-Referenz](/de/cli-reference) - Befehlszeilenoptionen

chrome.md +232 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code mit Chrome verwenden (Beta)

6 

7> Verbinden Sie Claude Code mit Ihrem Chrome-Browser, um Web-Apps zu testen, mit Konsolenprotokollen zu debuggen, Formularausfüllungen zu automatisieren und Daten von Webseiten zu extrahieren.

8 

9Claude Code integriert sich mit der [Claude in Chrome Browser-Erweiterung](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn), um Ihnen Browser-Automatisierungsfunktionen über die CLI oder die [VS Code-Erweiterung](/de/vs-code#automate-browser-tasks-with-chrome) bereitzustellen. Erstellen Sie Ihren Code und testen und debuggen Sie ihn dann im Browser, ohne den Kontext zu wechseln.

10 

11Claude öffnet neue Registerkarten für Browser-Aufgaben und teilt den Anmeldestatus Ihres Browsers, sodass er auf alle Websites zugreifen kann, bei denen Sie bereits angemeldet sind. Browser-Aktionen werden in Echtzeit in einem sichtbaren Chrome-Fenster ausgeführt. Wenn Claude auf eine Anmeldeseite oder ein CAPTCHA trifft, wird es angehalten und fordert Sie auf, es manuell zu bearbeiten.

12 

13<Note>

14 Die Chrome-Integration befindet sich in der Beta-Phase und funktioniert derzeit mit Google Chrome und Microsoft Edge. Sie wird noch nicht auf Brave, Arc oder anderen Chromium-basierten Browsern unterstützt. WSL (Windows Subsystem for Linux) wird ebenfalls nicht unterstützt.

15</Note>

16 

17## Funktionen

18 

19Mit verbundenem Chrome können Sie Browser-Aktionen mit Codierungsaufgaben in einem einzigen Workflow verketten:

20 

21* **Live-Debugging**: Lesen Sie Konsolenfehler und DOM-Status direkt aus und beheben Sie dann den Code, der sie verursacht hat

22* **Design-Verifizierung**: Erstellen Sie eine Benutzeroberfläche aus einem Figma-Mock und öffnen Sie sie dann im Browser, um zu überprüfen, ob sie übereinstimmt

23* **Web-App-Tests**: Testen Sie die Formularvalidierung, überprüfen Sie auf visuelle Regressionen oder überprüfen Sie Benutzerflüsse

24* **Authentifizierte Web-Apps**: Interagieren Sie mit Google Docs, Gmail, Notion oder einer beliebigen App, bei der Sie angemeldet sind, ohne API-Konnektoren

25* **Datenextraktion**: Extrahieren Sie strukturierte Informationen von Webseiten und speichern Sie sie lokal

26* **Task-Automatisierung**: Automatisieren Sie wiederholte Browser-Aufgaben wie Dateneingabe, Formularausfüllung oder Multi-Site-Workflows

27* **Sitzungsaufzeichnung**: Zeichnen Sie Browser-Interaktionen als GIFs auf, um zu dokumentieren oder zu teilen, was passiert ist

28 

29## Voraussetzungen

30 

31Bevor Sie Claude Code mit Chrome verwenden, benötigen Sie:

32 

33* [Google Chrome](https://www.google.com/chrome/) oder [Microsoft Edge](https://www.microsoft.com/edge) Browser

34* [Claude in Chrome-Erweiterung](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) Version 1.0.36 oder höher, verfügbar im Chrome Web Store für beide Browser

35* [Claude Code](/de/quickstart#step-1-install-claude-code) Version 2.0.73 oder höher

36* Einen direkten Anthropic-Plan (Pro, Max, Team oder Enterprise)

37 

38<Note>

39 Die Chrome-Integration ist nicht über Drittanbieter wie Amazon Bedrock, Google Cloud Vertex AI oder Microsoft Foundry verfügbar. Wenn Sie Claude ausschließlich über einen Drittanbieter nutzen, benötigen Sie ein separates claude.ai-Konto, um diese Funktion zu verwenden.

40</Note>

41 

42## Erste Schritte in der CLI

43 

44<Steps>

45 <Step title="Claude Code mit Chrome starten">

46 Starten Sie Claude Code mit dem Flag `--chrome`:

47 

48 ```bash theme={null}

49 claude --chrome

50 ```

51 

52 Sie können Chrome auch innerhalb einer bestehenden Sitzung aktivieren, indem Sie `/chrome` ausführen.

53 </Step>

54 

55 <Step title="Bitten Sie Claude, den Browser zu verwenden">

56 Dieses Beispiel navigiert zu einer Seite, interagiert mit ihr und meldet, was es findet, alles von Ihrem Terminal oder Editor aus:

57 

58 ```text theme={null}

59 Go to code.claude.com/docs, click on the search box,

60 type "hooks", and tell me what results appear

61 ```

62 </Step>

63</Steps>

64 

65Führen Sie `/chrome` jederzeit aus, um den Verbindungsstatus zu überprüfen, Berechtigungen zu verwalten oder die Erweiterung erneut zu verbinden.

66 

67Für VS Code siehe [Browser-Automatisierung in VS Code](/de/vs-code#automate-browser-tasks-with-chrome).

68 

69### Chrome standardmäßig aktivieren

70 

71Um zu vermeiden, dass Sie `--chrome` jede Sitzung übergeben müssen, führen Sie `/chrome` aus und wählen Sie „Standardmäßig aktiviert".

72 

73In der [VS Code-Erweiterung](/de/vs-code#automate-browser-tasks-with-chrome) ist Chrome verfügbar, wenn die Chrome-Erweiterung installiert ist. Kein zusätzliches Flag ist erforderlich.

74 

75<Note>

76 Das standardmäßige Aktivieren von Chrome in der CLI erhöht die Kontextnutzung, da Browser-Tools immer geladen werden. Wenn Sie eine erhöhte Kontextnutzung bemerken, deaktivieren Sie diese Einstellung und verwenden Sie `--chrome` nur bei Bedarf.

77</Note>

78 

79### Verwalten Sie Website-Berechtigungen

80 

81Website-Berechtigungen werden von der Chrome-Erweiterung geerbt. Verwalten Sie Berechtigungen in den Einstellungen der Chrome-Erweiterung, um zu steuern, welche Websites Claude durchsuchen, anklicken und eingeben kann.

82 

83## Beispiel-Workflows

84 

85Diese Beispiele zeigen häufige Möglichkeiten, Browser-Aktionen mit Codierungsaufgaben zu kombinieren. Führen Sie `/mcp` aus und wählen Sie `claude-in-chrome`, um die vollständige Liste der verfügbaren Browser-Tools anzuzeigen.

86 

87### Testen Sie eine lokale Web-Anwendung

88 

89Wenn Sie eine Web-App entwickeln, bitten Sie Claude, zu überprüfen, ob Ihre Änderungen ordnungsgemäß funktionieren:

90 

91```text theme={null}

92I just updated the login form validation. Can you open localhost:3000,

93try submitting the form with invalid data, and check if the error

94messages appear correctly?

95```

96 

97Claude navigiert zu Ihrem lokalen Server, interagiert mit dem Formular und meldet, was es beobachtet.

98 

99### Debuggen mit Konsolenprotokollen

100 

101Claude kann Konsolenausgaben lesen, um Probleme zu diagnostizieren. Teilen Sie Claude mit, welche Muster zu suchen sind, anstatt alle Konsolenausgaben anzufordern, da Protokolle ausführlich sein können:

102 

103```text theme={null}

104Open the dashboard page and check the console for any errors when

105the page loads.

106```

107 

108Claude liest die Konsolenmeldungen und kann nach bestimmten Mustern oder Fehlertypen filtern.

109 

110### Automatisieren Sie die Formularausfüllung

111 

112Beschleunigen Sie wiederholte Dateneingabeaufgaben:

113 

114```text theme={null}

115I have a spreadsheet of customer contacts in contacts.csv. For each row,

116go to the CRM at crm.example.com, click "Add Contact", and fill in the

117name, email, and phone fields.

118```

119 

120Claude liest Ihre lokale Datei, navigiert die Web-Schnittstelle und gibt die Daten für jeden Datensatz ein.

121 

122### Entwurf von Inhalten in Google Docs

123 

124Verwenden Sie Claude, um direkt in Ihren Dokumenten zu schreiben, ohne API-Setup:

125 

126```text theme={null}

127Draft a project update based on the recent commits and add it to my

128Google Doc at docs.google.com/document/d/abc123

129```

130 

131Claude öffnet das Dokument, klickt in den Editor und gibt den Inhalt ein. Dies funktioniert mit jeder Web-App, bei der Sie angemeldet sind: Gmail, Notion, Sheets und mehr.

132 

133### Extrahieren Sie Daten von Webseiten

134 

135Extrahieren Sie strukturierte Informationen von Websites:

136 

137```text theme={null}

138Go to the product listings page and extract the name, price, and

139availability for each item. Save the results as a CSV file.

140```

141 

142Claude navigiert zur Seite, liest den Inhalt und kompiliert die Daten in ein strukturiertes Format.

143 

144### Führen Sie Multi-Site-Workflows aus

145 

146Koordinieren Sie Aufgaben über mehrere Websites hinweg:

147 

148```text theme={null}

149Check my calendar for meetings tomorrow, then for each meeting with

150an external attendee, look up their company website and add a note

151about what they do.

152```

153 

154Claude arbeitet über Registerkarten hinweg, um Informationen zu sammeln und den Workflow abzuschließen.

155 

156### Zeichnen Sie eine Demo-GIF auf

157 

158Erstellen Sie teilbare Aufzeichnungen von Browser-Interaktionen:

159 

160```text theme={null}

161Record a GIF showing how to complete the checkout flow, from adding

162an item to the cart through to the confirmation page.

163```

164 

165Claude zeichnet die Interaktionssequenz auf und speichert sie als GIF-Datei.

166 

167## Fehlerbehebung

168 

169### Erweiterung nicht erkannt

170 

171Wenn Claude Code „Chrome-Erweiterung nicht erkannt" anzeigt:

172 

1731. Überprüfen Sie, ob die Chrome-Erweiterung in `chrome://extensions` installiert und aktiviert ist

1742. Überprüfen Sie, ob Claude Code aktuell ist, indem Sie `claude --version` ausführen

1753. Überprüfen Sie, ob Chrome ausgeführt wird

1764. Führen Sie `/chrome` aus und wählen Sie „Erweiterung erneut verbinden", um die Verbindung wiederherzustellen

1775. Wenn das Problem weiterhin besteht, starten Sie sowohl Claude Code als auch Chrome neu

178 

179Wenn Sie die Chrome-Integration zum ersten Mal aktivieren, installiert Claude Code eine Konfigurationsdatei für den nativen Messaging-Host. Chrome liest diese Datei beim Start, daher sollten Sie Chrome neu starten, um die neue Konfiguration zu übernehmen, wenn die Erweiterung beim ersten Versuch nicht erkannt wird.

180 

181Wenn die Verbindung weiterhin fehlschlägt, überprüfen Sie, ob die Host-Konfigurationsdatei vorhanden ist unter:

182 

183Für Chrome:

184 

185* **macOS**: `~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

186* **Linux**: `~/.config/google-chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

187* **Windows**: Überprüfen Sie `HKCU\Software\Google\Chrome\NativeMessagingHosts\` in der Windows-Registrierung

188 

189Für Edge:

190 

191* **macOS**: `~/Library/Application Support/Microsoft Edge/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

192* **Linux**: `~/.config/microsoft-edge/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

193* **Windows**: Überprüfen Sie `HKCU\Software\Microsoft\Edge\NativeMessagingHosts\` in der Windows-Registrierung

194 

195### Browser antwortet nicht

196 

197Wenn Claudes Browser-Befehle nicht mehr funktionieren:

198 

1991. Überprüfen Sie, ob ein modales Dialogfeld (Warnung, Bestätigung, Eingabeaufforderung) die Seite blockiert. JavaScript-Dialoge blockieren Browser-Ereignisse und verhindern, dass Claude Befehle empfängt. Schließen Sie das Dialogfeld manuell und teilen Sie Claude mit, dass es fortfahren soll.

2002. Bitten Sie Claude, eine neue Registerkarte zu erstellen und es erneut zu versuchen

2013. Starten Sie die Chrome-Erweiterung neu, indem Sie sie in `chrome://extensions` deaktivieren und erneut aktivieren

202 

203### Verbindung wird während langer Sitzungen unterbrochen

204 

205Der Service Worker der Chrome-Erweiterung kann während längerer Sitzungen in den Leerlauf gehen, was die Verbindung unterbricht. Wenn Browser-Tools nach einer Inaktivitätsphase nicht mehr funktionieren, führen Sie `/chrome` aus und wählen Sie „Erweiterung erneut verbinden".

206 

207### Windows-spezifische Probleme

208 

209Unter Windows können folgende Probleme auftreten:

210 

211* **Named Pipe-Konflikte (EADDRINUSE)**: Wenn ein anderer Prozess das gleiche Named Pipe verwendet, starten Sie Claude Code neu. Schließen Sie alle anderen Claude Code-Sitzungen, die möglicherweise Chrome verwenden.

212* **Fehler beim nativen Messaging-Host**: Wenn der native Messaging-Host beim Start abstürzt, versuchen Sie, Claude Code neu zu installieren, um die Host-Konfiguration zu regenerieren.

213 

214### Häufige Fehlermeldungen

215 

216Dies sind die am häufigsten auftretenden Fehler und wie man sie behebt:

217 

218| Fehler | Ursache | Behebung |

219| ----------------------------------------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |

220| „Browser-Erweiterung ist nicht verbunden" | Der native Messaging-Host kann die Erweiterung nicht erreichen | Starten Sie Chrome und Claude Code neu und führen Sie dann `/chrome` aus, um die Verbindung wiederherzustellen |

221| „Erweiterung nicht erkannt" | Chrome-Erweiterung ist nicht installiert oder deaktiviert | Installieren oder aktivieren Sie die Erweiterung in `chrome://extensions` |

222| „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 |

223| „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" |

224 

225## Siehe auch

226 

227* [Computernutzung](/de/computer-use): Steuern Sie native macOS-Apps, wenn eine Aufgabe nicht in einem Browser ausgeführt werden kann

228* [Claude Code in VS Code verwenden](/de/vs-code#automate-browser-tasks-with-chrome): Browser-Automatisierung in der VS Code-Erweiterung

229* [CLI-Referenz](/de/cli-reference): Befehlszeilenflags einschließlich `--chrome`

230* [Häufige Workflows](/de/common-workflows): Weitere Möglichkeiten zur Verwendung von Claude Code

231* [Daten und Datenschutz](/de/data-usage): Wie Claude Code Ihre Daten verarbeitet

232* [Erste Schritte mit Claude in Chrome](https://support.claude.com/en/articles/12012173-getting-started-with-claude-in-chrome): Vollständige Dokumentation für die Chrome-Erweiterung, einschließlich Verknüpfungen, Planung und Berechtigungen

claude-code-on-the-web.md +773 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code im Web verwenden

6 

7> Konfigurieren Sie Cloud-Umgebungen, Setup-Skripte, Netzwerkzugriff und Docker in Anthropics Sandbox. Verschieben Sie Sitzungen zwischen Web und Terminal mit `--remote` und `--teleport`.

8 

9<Note>

10 Claude Code im Web befindet sich in der Forschungsvorschau für Pro-, Max- und Team-Benutzer sowie für Enterprise-Benutzer mit Premium-Sitzen oder Chat + Claude Code-Sitzen.

11</Note>

12 

13Claude Code im Web führt Aufgaben auf von Anthropic verwalteter Cloud-Infrastruktur unter [claude.ai/code](https://claude.ai/code) aus. Sitzungen bleiben bestehen, auch wenn Sie Ihren Browser schließen, und Sie können sie über die Claude Mobile-App überwachen.

14 

15<Tip>

16 Neu bei Claude Code im Web? Beginnen Sie mit [Erste Schritte](/de/web-quickstart), um Ihr GitHub-Konto zu verbinden und Ihre erste Aufgabe einzureichen.

17</Tip>

18 

19Diese Seite behandelt:

20 

21* [GitHub-Authentifizierungsoptionen](#github-authentication-options): zwei Möglichkeiten, GitHub zu verbinden

22* [Die Cloud-Umgebung](#the-cloud-environment): welche Konfiguration übertragen wird, welche Tools installiert sind und wie Umgebungen konfiguriert werden

23* [Setup-Skripte](#setup-scripts) und Abhängigkeitsverwaltung

24* [Netzwerkzugriff](#network-access): Ebenen, Proxys und die Standard-Allowlist

25* [Aufgaben zwischen Web und Terminal verschieben](#move-tasks-between-web-and-terminal) mit `--remote` und `--teleport`

26* [Mit Sitzungen arbeiten](#work-with-sessions): Überprüfung, Freigabe, Archivierung, Löschung

27* [Auto-fix Pull Requests](#auto-fix-pull-requests): automatische Reaktion auf CI-Fehler und Review-Kommentare

28* [Sicherheit und Isolation](#security-and-isolation): wie Sitzungen isoliert sind

29* [Einschränkungen](#limitations): Ratenlimits und Plattformbeschränkungen

30 

31## GitHub-Authentifizierungsoptionen

32 

33Cloud-Sitzungen benötigen Zugriff auf Ihre GitHub-Repositories, um Code zu klonen und Branches zu pushen. Sie können Zugriff auf zwei Arten gewähren:

34 

35| Methode | Funktionsweise | Am besten für |

36| :--------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------- |

37| **GitHub App** | Installieren Sie die Claude GitHub App auf bestimmten Repositories während des [Web-Onboardings](/de/web-quickstart). Der Zugriff ist pro Repository begrenzt. | Teams, die explizite Pro-Repository-Autorisierung wünschen |

38| **`/web-setup`** | Führen Sie `/web-setup` in Ihrem Terminal aus, um Ihr lokales `gh` CLI-Token mit Ihrem Claude-Konto zu synchronisieren. Der Zugriff entspricht dem, was Ihr `gh`-Token sehen kann. | Einzelne Entwickler, die bereits `gh` verwenden |

39 

40Beide Methoden funktionieren. [`/schedule`](/de/routines) überprüft auf beide Formen des Zugriffs und fordert Sie auf, `/web-setup` auszuführen, wenn keines konfiguriert ist. Siehe [Vom Terminal verbinden](/de/web-quickstart#connect-from-your-terminal) für die `/web-setup`-Anleitung.

41 

42Die GitHub App ist erforderlich für [Auto-fix](#auto-fix-pull-requests), das die App verwendet, um PR-Webhooks zu empfangen. Wenn Sie sich mit `/web-setup` verbinden und später Auto-fix möchten, installieren Sie die App auf diesen Repositories.

43 

44Team- und Enterprise-Administratoren können `/web-setup` mit dem Quick web setup-Umschalter unter [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) deaktivieren.

45 

46<Note>

47 Organisationen mit aktivierter [Zero Data Retention](/de/zero-data-retention) können `/web-setup` oder andere Cloud-Sitzungsfunktionen nicht verwenden.

48</Note>

49 

50## Die Cloud-Umgebung

51 

52Jede Sitzung wird in einer frischen, von Anthropic verwalteten VM mit Ihrem geklonten Repository ausgeführt. Dieser Abschnitt behandelt, was verfügbar ist, wenn eine Sitzung startet, und wie Sie sie anpassen können.

53 

54### Was in Cloud-Sitzungen verfügbar ist

55 

56Cloud-Sitzungen starten von einem frischen Klon Ihres Repositories. Alles, was zum Repo committed ist, ist verfügbar. Alles, was Sie nur auf Ihrem eigenen Computer installiert oder konfiguriert haben, ist nicht verfügbar.

57 

58| | Verfügbar in Cloud-Sitzungen | Warum |

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

60| Ihr Repo's `CLAUDE.md` | Ja | Teil des Klons |

61| Ihr Repo's `.claude/settings.json` Hooks | Ja | Teil des Klons |

62| Ihr Repo's `.mcp.json` MCP-Server | Ja | Teil des Klons |

63| Ihr Repo's `.claude/rules/` | Ja | Teil des Klons |

64| Ihr Repo's `.claude/skills/`, `.claude/agents/`, `.claude/commands/` | Ja | Teil des Klons |

65| In `.claude/settings.json` deklarierte Plugins | Ja | Installiert beim Sitzungsstart vom [Marketplace](/de/plugin-marketplaces), den Sie deklariert haben. Erfordert Netzwerkzugriff, um die Marketplace-Quelle zu erreichen |

66| Ihr Benutzer `~/.claude/CLAUDE.md` | Nein | Lebt auf Ihrem Computer, nicht im Repo |

67| Plugins, die nur in Ihren Benutzereinstellungen aktiviert sind | Nein | Benutzer-scoped `enabledPlugins` lebt in `~/.claude/settings.json`. Deklarieren Sie sie stattdessen in der `.claude/settings.json` des Repos |

68| MCP-Server, die Sie mit `claude mcp add` hinzugefügt haben | Nein | Diese schreiben in Ihre lokale Benutzerkonfiguration, nicht ins Repo. Deklarieren Sie den Server stattdessen in [`.mcp.json`](/de/mcp#project-scope) |

69| Statische API-Token und Anmeldedaten | Nein | Es existiert noch kein dedizierter Secrets-Store. Siehe unten |

70| Interaktive Authentifizierung wie AWS SSO | Nein | Nicht unterstützt. SSO erfordert browserbasierte Anmeldung, die nicht in einer Cloud-Sitzung ausgeführt werden kann |

71 

72Um Konfiguration in Cloud-Sitzungen verfügbar zu machen, committen Sie sie ins Repo. Ein dedizierter Secrets-Store ist noch nicht verfügbar. Sowohl Umgebungsvariablen als auch Setup-Skripte werden in der Umgebungskonfiguration gespeichert, sichtbar für jeden, der diese Umgebung bearbeiten kann. Wenn Sie Secrets in einer Cloud-Sitzung benötigen, fügen Sie sie als Umgebungsvariablen mit dieser Sichtbarkeit im Hinterkopf hinzu.

73 

74### Installierte Tools

75 

76Cloud-Sitzungen werden mit gängigen Sprachlaufzeiten, Build-Tools und Datenbanken vorinstalliert geliefert. Die folgende Tabelle fasst zusammen, was nach Kategorie enthalten ist.

77 

78| Kategorie | Enthalten |

79| :-------------- | :-------------------------------------------------------------------------------- |

80| **Python** | Python 3.x mit pip, poetry, uv, black, mypy, pytest, ruff |

81| **Node.js** | 20, 21 und 22 über nvm, mit npm, yarn, pnpm, bun¹, eslint, prettier, chromedriver |

82| **Ruby** | 3.1, 3.2, 3.3 mit gem, bundler, rbenv |

83| **PHP** | 8.4 mit Composer |

84| **Java** | OpenJDK 21 mit Maven und Gradle |

85| **Go** | neueste stabile Version mit Modulunterstützung |

86| **Rust** | rustc und cargo |

87| **C/C++** | GCC, Clang, cmake, ninja, conan |

88| **Docker** | docker, dockerd, docker compose |

89| **Datenbanken** | PostgreSQL 16, Redis 7.0 |

90| **Utilities** | git, jq, yq, ripgrep, tmux, vim, nano |

91 

92¹ Bun ist installiert, hat aber bekannte [Proxy-Kompatibilitätsprobleme](#install-dependencies-with-a-sessionstart-hook) beim Paketabruf.

93 

94Für genaue Versionen bitten Sie Claude, `check-tools` in einer Cloud-Sitzung auszuführen. Dieser Befehl existiert nur in Cloud-Sitzungen.

95 

96### Mit GitHub-Issues und Pull Requests arbeiten

97 

98Cloud-Sitzungen enthalten integrierte GitHub-Tools, mit denen Claude Issues lesen, Pull Requests auflisten, Diffs abrufen und Kommentare posten kann, ohne Setup. Diese Tools authentifizieren sich über den [GitHub-Proxy](#github-proxy) mit der Methode, die Sie unter [GitHub-Authentifizierungsoptionen](#github-authentication-options) konfiguriert haben, sodass Ihr Token niemals in den Container gelangt.

99 

100Die `gh` CLI ist nicht vorinstalliert. Wenn Sie einen `gh`-Befehl benötigen, den die integrierten Tools nicht abdecken, wie `gh release` oder `gh workflow run`, installieren und authentifizieren Sie ihn selbst:

101 

102<Steps>

103 <Step title="Installieren Sie gh in Ihrem Setup-Skript">

104 Fügen Sie `apt update && apt install -y gh` zu Ihrem [Setup-Skript](#setup-scripts) hinzu.

105 </Step>

106 

107 <Step title="Stellen Sie ein Token bereit">

108 Fügen Sie eine `GH_TOKEN`-Umgebungsvariable zu Ihren [Umgebungseinstellungen](#configure-your-environment) mit einem GitHub Personal Access Token hinzu. `gh` liest `GH_TOKEN` automatisch, daher ist kein `gh auth login`-Schritt erforderlich.

109 </Step>

110</Steps>

111 

112### Verknüpfen Sie Artifacts zurück zur Sitzung

113 

114Jede Cloud-Sitzung hat eine Transkript-URL auf claude.ai, und die Sitzung kann ihre eigene ID aus der Umgebungsvariablen `CLAUDE_CODE_REMOTE_SESSION_ID` lesen. Verwenden Sie dies, um einen nachverfolgbaren Link in PR-Bodies, Commit-Nachrichten, Slack-Posts oder generierten Berichten zu platzieren, damit ein Reviewer den Lauf öffnen kann, der sie produziert hat.

115 

116Bitten Sie Claude, den Link aus der Umgebungsvariablen zu konstruieren. Der folgende Befehl gibt die URL aus:

117 

118```bash theme={null}

119echo "https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID}"

120```

121 

122### Tests ausführen, Services starten und Pakete hinzufügen

123 

124Claude führt Tests als Teil der Arbeit an einer Aufgabe aus. Bitten Sie darum in Ihrem Prompt, wie „fix the failing tests in `tests/`" oder „run pytest after each change." Test-Runner wie pytest, jest und cargo test funktionieren sofort, da sie vorinstalliert sind.

125 

126PostgreSQL und Redis sind vorinstalliert, aber nicht standardmäßig ausgeführt. Bitten Sie Claude, jeden während der Sitzung zu starten:

127 

128```bash theme={null}

129service postgresql start

130```

131 

132```bash theme={null}

133service redis-server start

134```

135 

136Docker ist für die Ausführung containerisierter Services verfügbar. Bitten Sie Claude, `docker compose up` auszuführen, um die Services Ihres Projekts zu starten. Der Netzwerkzugriff zum Abrufen von Images folgt der [Zugriffsstufe](#access-levels) Ihrer Umgebung, und die [Vertrauenswürdigen Standards](#default-allowed-domains) enthalten Docker Hub und andere gängige Registries.

137 

138Wenn Ihre Images groß oder langsam zum Abrufen sind, fügen Sie `docker compose pull` oder `docker compose build` zu Ihrem [Setup-Skript](#setup-scripts) hinzu. Die abgerufenen Images werden in der [gecachten Umgebung](#environment-caching) gespeichert, daher hat jede neue Sitzung sie auf der Festplatte. Der Cache speichert nur Dateien, keine laufenden Prozesse, daher startet Claude die Container immer noch jede Sitzung.

139 

140Um Pakete hinzuzufügen, die nicht vorinstalliert sind, verwenden Sie ein [Setup-Skript](#setup-scripts). Die Ausgabe des Skripts wird [gecacht](#environment-caching), daher sind Pakete, die Sie dort installieren, am Anfang jeder Sitzung verfügbar, ohne jedes Mal neu installiert zu werden. Sie können Claude auch bitten, Pakete während der Sitzung zu installieren, aber diese Installationen bleiben nicht über Sitzungen hinweg bestehen.

141 

142### Ressourcenlimits

143 

144Cloud-Sitzungen werden mit ungefähren Ressourcengrenzen ausgeführt, die sich im Laufe der Zeit ändern können:

145 

146* 4 vCPUs

147* 16 GB RAM

148* 30 GB Festplatte

149 

150Aufgaben, die erheblich mehr Speicher erfordern, wie große Build-Jobs oder speicherintensive Tests, können fehlschlagen oder beendet werden. Für Workloads jenseits dieser Limits verwenden Sie [Remote Control](/de/remote-control), um Claude Code auf Ihrer eigenen Hardware auszuführen.

151 

152### Konfigurieren Sie Ihre Umgebung

153 

154Umgebungen steuern [Netzwerkzugriff](#network-access), Umgebungsvariablen und das [Setup-Skript](#setup-scripts), das vor einer Sitzung ausgeführt wird. Siehe [Installierte Tools](#installed-tools) für das, was ohne Konfiguration verfügbar ist. Sie können Umgebungen über die Web-Oberfläche oder das Terminal verwalten:

155 

156| Aktion | Wie |

157| :-------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

158| Umgebung hinzufügen | Wählen Sie die aktuelle Umgebung, um die Auswahl zu öffnen, dann wählen Sie **Umgebung hinzufügen**. Der Dialog enthält Name, Netzwerkzugriffsstufe, Umgebungsvariablen und Setup-Skript. |

159| Umgebung bearbeiten | Wählen Sie das Einstellungssymbol rechts neben dem Umgebungsnamen. |

160| Umgebung archivieren | Öffnen Sie die Umgebung zum Bearbeiten und wählen Sie **Archivieren**. Archivierte Umgebungen sind in der Auswahl ausgeblendet, aber vorhandene Sitzungen werden weiterhin ausgeführt. |

161| Standard für `--remote` festlegen | Führen Sie `/remote-env` in Ihrem Terminal aus. Wenn Sie eine einzelne Umgebung haben, zeigt dieser Befehl Ihre aktuelle Konfiguration. `/remote-env` wählt nur den Standard; fügen Sie Umgebungen über die Web-Oberfläche hinzu, bearbeiten und archivieren Sie sie. |

162 

163Umgebungsvariablen verwenden das `.env`-Format mit einem `KEY=value`-Paar pro Zeile. Wickeln Sie Werte nicht in Anführungszeichen ein, da Anführungszeichen als Teil des Werts gespeichert werden.

164 

165```text theme={null}

166NODE_ENV=development

167LOG_LEVEL=debug

168DATABASE_URL=postgres://localhost:5432/myapp

169```

170 

171## Setup-Skripte

172 

173Ein Setup-Skript ist ein Bash-Skript, das ausgeführt wird, wenn eine neue Cloud-Sitzung startet, bevor Claude Code startet. Verwenden Sie Setup-Skripte, um Abhängigkeiten zu installieren, Tools zu konfigurieren oder alles zu holen, das die Sitzung benötigt und nicht vorinstalliert ist.

174 

175Skripte werden als Root auf Ubuntu 24.04 ausgeführt, daher funktionieren `apt install` und die meisten Sprachpaketmanager.

176 

177Um ein Setup-Skript hinzuzufügen, öffnen Sie den Dialog Umgebungseinstellungen und geben Sie Ihr Skript in das Feld **Setup-Skript** ein.

178 

179Dieses Beispiel installiert die `gh` CLI, die nicht vorinstalliert ist:

180 

181```bash theme={null}

182#!/bin/bash

183apt update && apt install -y gh

184```

185 

186Wenn das Skript mit einem Nicht-Null-Wert beendet wird, schlägt die Sitzung fehl zu starten. Fügen Sie `|| true` an nicht kritische Befehle an, um zu vermeiden, dass die Sitzung bei einem fehlerhaften Install blockiert wird.

187 

188<Note>

189 Setup-Skripte, die Pakete installieren, benötigen Netzwerkzugriff, um Registries zu erreichen. Der Standard-**Trusted**-Netzwerkzugriff ermöglicht Verbindungen zu [gängigen Paketregistries](#default-allowed-domains), einschließlich npm, PyPI, RubyGems und crates.io. Skripte schlagen fehl, Pakete zu installieren, wenn Ihre Umgebung **None**-Netzwerkzugriff verwendet.

190</Note>

191 

192### Umgebungs-Caching

193 

194Das Setup-Skript wird beim ersten Starten einer Sitzung in einer Umgebung ausgeführt. Nach Abschluss erstellt Anthropic einen Snapshot des Dateisystems und verwendet diesen Snapshot als Ausgangspunkt für spätere Sitzungen. Neue Sitzungen starten mit Ihren Abhängigkeiten, Tools und Docker-Images bereits auf der Festplatte, und der Setup-Skript-Schritt wird übersprungen. Dies hält den Start schnell, auch wenn das Skript große Toolchains installiert oder Container-Images abruft.

195 

196Der Cache erfasst Dateien, keine laufenden Prozesse. Alles, das das Setup-Skript auf die Festplatte schreibt, wird übertragen. Services oder Container, die es startet, nicht, daher starten Sie diese pro Sitzung, indem Sie Claude bitten oder einen [SessionStart-Hook](#setup-scripts-vs-sessionstart-hooks) verwenden.

197 

198Das Setup-Skript wird erneut ausgeführt, um den Cache neu zu erstellen, wenn Sie das Setup-Skript der Umgebung oder die zulässigen Netzwerk-Hosts ändern, und wenn der Cache nach ungefähr sieben Tagen abläuft. Das Fortsetzen einer vorhandenen Sitzung führt das Setup-Skript niemals erneut aus.

199 

200Sie müssen Caching nicht aktivieren oder Snapshots selbst verwalten.

201 

202### Setup-Skripte vs. SessionStart-Hooks

203 

204Verwenden Sie ein Setup-Skript, um Dinge zu installieren, die die Cloud benötigt, aber Ihr Laptop bereits hat, wie eine Sprachlaufzeit oder ein CLI-Tool. Verwenden Sie einen [SessionStart-Hook](/de/hooks#sessionstart) für Projekt-Setup, das überall ausgeführt werden sollte, Cloud und lokal, wie `npm install`.

205 

206Beide werden am Anfang einer Sitzung ausgeführt, aber sie gehören an verschiedene Orte:

207 

208| | Setup-Skripte | SessionStart-Hooks |

209| --------------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |

210| Angehängt an | Die Cloud-Umgebung | Ihr Repository |

211| Konfiguriert in | Cloud-Umgebungs-UI | `.claude/settings.json` in Ihrem Repo |

212| Wird ausgeführt | Bevor Claude Code startet, wenn keine [gecachte Umgebung](#environment-caching) verfügbar ist | Nach Claude Code startet, bei jeder Sitzung einschließlich fortgesetzter |

213| Umfang | Nur Cloud-Umgebungen | Sowohl lokal als auch Cloud |

214 

215SessionStart-Hooks können auch in Ihrer Benutzer-Level-Datei `~/.claude/settings.json` lokal definiert werden, aber Benutzer-Level-Einstellungen werden nicht zu Cloud-Sitzungen übertragen. In der Cloud werden nur Hooks ausgeführt, die zum Repo committed sind.

216 

217### Abhängigkeiten mit einem SessionStart-Hook installieren

218 

219Um Abhängigkeiten nur in Cloud-Sitzungen zu installieren, fügen Sie einen SessionStart-Hook zu Ihrer Repo's `.claude/settings.json` hinzu:

220 

221```json theme={null}

222{

223 "hooks": {

224 "SessionStart": [

225 {

226 "matcher": "startup|resume",

227 "hooks": [

228 {

229 "type": "command",

230 "command": "\"$CLAUDE_PROJECT_DIR\"/scripts/install_pkgs.sh"

231 }

232 ]

233 }

234 ]

235 }

236}

237```

238 

239Erstellen Sie das Skript unter `scripts/install_pkgs.sh` und machen Sie es ausführbar mit `chmod +x`. Die Umgebungsvariable `CLAUDE_CODE_REMOTE` ist in Cloud-Sitzungen auf `true` gesetzt, daher können Sie sie verwenden, um die lokale Ausführung zu überspringen:

240 

241```bash theme={null}

242#!/bin/bash

243 

244if [ "$CLAUDE_CODE_REMOTE" != "true" ]; then

245 exit 0

246fi

247 

248npm install

249pip install -r requirements.txt

250exit 0

251```

252 

253SessionStart-Hooks haben einige Einschränkungen in Cloud-Sitzungen:

254 

255* **Keine Cloud-Only-Scoping**: Hooks werden in lokalen und Cloud-Sitzungen ausgeführt. Um die lokale Ausführung zu überspringen, überprüfen Sie die Umgebungsvariable `CLAUDE_CODE_REMOTE` wie oben gezeigt.

256* **Erfordert Netzwerkzugriff**: Installationsbefehle benötigen Zugriff auf Paketregistries. Wenn Ihre Umgebung **None**-Netzwerkzugriff verwendet, schlagen diese Hooks fehl. Die [Standard-Allowlist](#default-allowed-domains) unter **Trusted** deckt npm, PyPI, RubyGems und crates.io ab.

257* **Proxy-Kompatibilität**: Der gesamte ausgehende Datenverkehr läuft durch einen [Sicherheits-Proxy](#security-proxy). Einige Paketmanager funktionieren mit diesem Proxy nicht korrekt. Bun ist ein bekanntes Beispiel.

258* **Fügt Startup-Latenz hinzu**: Hooks werden jedes Mal ausgeführt, wenn eine Sitzung startet oder fortgesetzt wird, im Gegensatz zu Setup-Skripten, die von [Umgebungs-Caching](#environment-caching) profitieren. Halten Sie Installationsskripte schnell, indem Sie überprüfen, ob Abhängigkeiten bereits vorhanden sind, bevor Sie sie neu installieren.

259 

260Um Umgebungsvariablen für nachfolgende Bash-Befehle beizubehalten, schreiben Sie in die Datei unter `$CLAUDE_ENV_FILE`. Siehe [SessionStart-Hooks](/de/hooks#sessionstart) für Details.

261 

262Das Ersetzen des Basis-Images durch Ihr eigenes Docker-Image wird noch nicht unterstützt. Verwenden Sie ein Setup-Skript, um zu installieren, was Sie auf dem [bereitgestellten Image](#installed-tools) benötigen, oder führen Sie Ihr Image als Container neben Claude mit `docker compose` aus.

263 

264## Netzwerkzugriff

265 

266Der Netzwerkzugriff steuert ausgehende Verbindungen aus der Cloud-Umgebung. Jede Umgebung gibt eine Zugriffsstufe an, und Sie können sie mit benutzerdefinierten zulässigen Domains erweitern. Der Standard ist **Trusted**, das Paketregistries und andere [Allowlist-Domains](#default-allowed-domains) ermöglicht.

267 

268### Zugriffsstufen

269 

270Wählen Sie eine Zugriffsstufe, wenn Sie eine Umgebung erstellen oder bearbeiten:

271 

272| Stufe | Ausgehende Verbindungen |

273| :---------- | :------------------------------------------------------------------------------------- |

274| **None** | Kein ausgehender Netzwerkzugriff |

275| **Trusted** | [Allowlist-Domains](#default-allowed-domains) nur: Paketregistries, GitHub, Cloud-SDKs |

276| **Full** | Jede Domain |

277| **Custom** | Ihre eigene Allowlist, optional einschließlich der Standards |

278 

279GitHub-Operationen verwenden einen [separaten Proxy](#github-proxy), der unabhängig von dieser Einstellung ist.

280 

281### Spezifische Domains zulassen

282 

283Um Domains zuzulassen, die nicht in der Trusted-Liste enthalten sind, wählen Sie **Custom** in den Netzwerkzugriffseinstellungen der Umgebung. Ein Feld **Zulässige Domains** wird angezeigt. Geben Sie eine Domain pro Zeile ein:

284 

285```text theme={null}

286api.example.com

287*.internal.example.com

288registry.example.com

289```

290 

291Verwenden Sie `*.` für Wildcard-Subdomain-Matching. Aktivieren Sie **Auch Standard-Liste der gängigen Paketmanager einschließen**, um die [Trusted-Domains](#default-allowed-domains) neben Ihren benutzerdefinierten Einträgen zu behalten, oder lassen Sie es deaktiviert, um nur das zuzulassen, was Sie auflisten.

292 

293### GitHub-Proxy

294 

295Aus Sicherheitsgründen gehen alle GitHub-Operationen durch einen dedizierten Proxy-Service, der alle Git-Interaktionen transparent verwaltet. Innerhalb der Sandbox authentifiziert sich der Git-Client mit einem benutzerdefinierten Scoped-Credential. Dieser Proxy:

296 

297* Verwaltet GitHub-Authentifizierung sicher: Der Git-Client verwendet ein Scoped-Credential innerhalb der Sandbox, das der Proxy überprüft und in Ihr tatsächliches GitHub-Authentifizierungstoken übersetzt

298* Beschränkt Git-Push-Operationen auf den aktuellen Arbeitsbranch aus Sicherheitsgründen

299* Ermöglicht Klonen, Abrufen und PR-Operationen bei Beibehaltung von Sicherheitsgrenzen

300 

301### Sicherheits-Proxy

302 

303Umgebungen werden aus Sicherheits- und Missbrauchspräventionsgründen hinter einem HTTP/HTTPS-Netzwerk-Proxy ausgeführt. Der gesamte ausgehende Internetdatenverkehr läuft durch diesen Proxy, der Folgendes bietet:

304 

305* Schutz vor böswilligen Anfragen

306* Ratenbegrenzung und Missbrauchsprävention

307* Inhaltsfilterung für erhöhte Sicherheit

308 

309### Standard-Allowlist-Domains

310 

311Bei Verwendung von **Trusted**-Netzwerkzugriff sind die folgenden Domains standardmäßig zulässig. Domains, die mit `*` gekennzeichnet sind, zeigen Wildcard-Subdomain-Matching an, daher erlaubt `*.gcr.io` jede Subdomain von `gcr.io`.

312 

313<AccordionGroup>

314 <Accordion title="Anthropic-Services">

315 * api.anthropic.com

316 * statsig.anthropic.com

317 * docs.claude.com

318 * platform.claude.com

319 * code.claude.com

320 * claude.ai

321 </Accordion>

322 

323 <Accordion title="Versionskontrolle">

324 * github.com

325 * [www.github.com](http://www.github.com)

326 * api.github.com

327 * npm.pkg.github.com

328 * raw\.githubusercontent.com

329 * pkg-npm.githubusercontent.com

330 * objects.githubusercontent.com

331 * release-assets.githubusercontent.com

332 * codeload.github.com

333 * avatars.githubusercontent.com

334 * camo.githubusercontent.com

335 * gist.github.com

336 * gitlab.com

337 * [www.gitlab.com](http://www.gitlab.com)

338 * registry.gitlab.com

339 * bitbucket.org

340 * [www.bitbucket.org](http://www.bitbucket.org)

341 * api.bitbucket.org

342 </Accordion>

343 

344 <Accordion title="Container-Registries">

345 * registry-1.docker.io

346 * auth.docker.io

347 * index.docker.io

348 * hub.docker.com

349 * [www.docker.com](http://www.docker.com)

350 * production.cloudflare.docker.com

351 * download.docker.com

352 * gcr.io

353 * \*.gcr.io

354 * ghcr.io

355 * mcr.microsoft.com

356 * \*.data.mcr.microsoft.com

357 * public.ecr.aws

358 </Accordion>

359 

360 <Accordion title="Cloud-Plattformen">

361 * cloud.google.com

362 * accounts.google.com

363 * gcloud.google.com

364 * \*.googleapis.com

365 * storage.googleapis.com

366 * compute.googleapis.com

367 * container.googleapis.com

368 * azure.com

369 * portal.azure.com

370 * microsoft.com

371 * [www.microsoft.com](http://www.microsoft.com)

372 * \*.microsoftonline.com

373 * packages.microsoft.com

374 * dotnet.microsoft.com

375 * dot.net

376 * visualstudio.com

377 * dev.azure.com

378 * \*.amazonaws.com

379 * \*.api.aws

380 * oracle.com

381 * [www.oracle.com](http://www.oracle.com)

382 * java.com

383 * [www.java.com](http://www.java.com)

384 * java.net

385 * [www.java.net](http://www.java.net)

386 * download.oracle.com

387 * yum.oracle.com

388 </Accordion>

389 

390 <Accordion title="JavaScript und Node-Paketmanager">

391 * registry.npmjs.org

392 * [www.npmjs.com](http://www.npmjs.com)

393 * [www.npmjs.org](http://www.npmjs.org)

394 * npmjs.com

395 * npmjs.org

396 * yarnpkg.com

397 * registry.yarnpkg.com

398 </Accordion>

399 

400 <Accordion title="Python-Paketmanager">

401 * pypi.org

402 * [www.pypi.org](http://www.pypi.org)

403 * files.pythonhosted.org

404 * pythonhosted.org

405 * test.pypi.org

406 * pypi.python.org

407 * pypa.io

408 * [www.pypa.io](http://www.pypa.io)

409 </Accordion>

410 

411 <Accordion title="Ruby-Paketmanager">

412 * rubygems.org

413 * [www.rubygems.org](http://www.rubygems.org)

414 * api.rubygems.org

415 * index.rubygems.org

416 * ruby-lang.org

417 * [www.ruby-lang.org](http://www.ruby-lang.org)

418 * rubyforge.org

419 * [www.rubyforge.org](http://www.rubyforge.org)

420 * rubyonrails.org

421 * [www.rubyonrails.org](http://www.rubyonrails.org)

422 * rvm.io

423 * get.rvm.io

424 </Accordion>

425 

426 <Accordion title="Rust-Paketmanager">

427 * crates.io

428 * [www.crates.io](http://www.crates.io)

429 * index.crates.io

430 * static.crates.io

431 * rustup.rs

432 * static.rust-lang.org

433 * [www.rust-lang.org](http://www.rust-lang.org)

434 </Accordion>

435 

436 <Accordion title="Go-Paketmanager">

437 * proxy.golang.org

438 * sum.golang.org

439 * index.golang.org

440 * golang.org

441 * [www.golang.org](http://www.golang.org)

442 * goproxy.io

443 * pkg.go.dev

444 </Accordion>

445 

446 <Accordion title="JVM-Paketmanager">

447 * maven.org

448 * repo.maven.org

449 * central.maven.org

450 * repo1.maven.org

451 * repo.maven.apache.org

452 * jcenter.bintray.com

453 * gradle.org

454 * [www.gradle.org](http://www.gradle.org)

455 * services.gradle.org

456 * plugins.gradle.org

457 * kotlinlang.org

458 * [www.kotlinlang.org](http://www.kotlinlang.org)

459 * spring.io

460 * repo.spring.io

461 </Accordion>

462 

463 <Accordion title="Andere Paketmanager">

464 * packagist.org (PHP Composer)

465 * [www.packagist.org](http://www.packagist.org)

466 * repo.packagist.org

467 * nuget.org (.NET NuGet)

468 * [www.nuget.org](http://www.nuget.org)

469 * api.nuget.org

470 * pub.dev (Dart/Flutter)

471 * api.pub.dev

472 * hex.pm (Elixir/Erlang)

473 * [www.hex.pm](http://www.hex.pm)

474 * cpan.org (Perl CPAN)

475 * [www.cpan.org](http://www.cpan.org)

476 * metacpan.org

477 * [www.metacpan.org](http://www.metacpan.org)

478 * api.metacpan.org

479 * cocoapods.org (iOS/macOS)

480 * [www.cocoapods.org](http://www.cocoapods.org)

481 * cdn.cocoapods.org

482 * haskell.org

483 * [www.haskell.org](http://www.haskell.org)

484 * hackage.haskell.org

485 * swift.org

486 * [www.swift.org](http://www.swift.org)

487 </Accordion>

488 

489 <Accordion title="Linux-Distributionen">

490 * archive.ubuntu.com

491 * security.ubuntu.com

492 * ubuntu.com

493 * [www.ubuntu.com](http://www.ubuntu.com)

494 * \*.ubuntu.com

495 * ppa.launchpad.net

496 * launchpad.net

497 * [www.launchpad.net](http://www.launchpad.net)

498 * \*.nixos.org

499 </Accordion>

500 

501 <Accordion title="Entwicklungstools und Plattformen">

502 * dl.k8s.io (Kubernetes)

503 * pkgs.k8s.io

504 * k8s.io

505 * [www.k8s.io](http://www.k8s.io)

506 * releases.hashicorp.com (HashiCorp)

507 * apt.releases.hashicorp.com

508 * rpm.releases.hashicorp.com

509 * archive.releases.hashicorp.com

510 * hashicorp.com

511 * [www.hashicorp.com](http://www.hashicorp.com)

512 * repo.anaconda.com (Anaconda/Conda)

513 * conda.anaconda.org

514 * anaconda.org

515 * [www.anaconda.com](http://www.anaconda.com)

516 * anaconda.com

517 * continuum.io

518 * apache.org (Apache)

519 * [www.apache.org](http://www.apache.org)

520 * archive.apache.org

521 * downloads.apache.org

522 * eclipse.org (Eclipse)

523 * [www.eclipse.org](http://www.eclipse.org)

524 * download.eclipse.org

525 * nodejs.org (Node.js)

526 * [www.nodejs.org](http://www.nodejs.org)

527 * developer.apple.com

528 * developer.android.com

529 * pkg.stainless.com

530 * binaries.prisma.sh

531 </Accordion>

532 

533 <Accordion title="Cloud-Services und Überwachung">

534 * statsig.com

535 * [www.statsig.com](http://www.statsig.com)

536 * api.statsig.com

537 * sentry.io

538 * \*.sentry.io

539 * downloads.sentry-cdn.com

540 * http-intake.logs.datadoghq.com

541 * \*.datadoghq.com

542 * \*.datadoghq.eu

543 * api.honeycomb.io

544 </Accordion>

545 

546 <Accordion title="Content Delivery und Mirrors">

547 * sourceforge.net

548 * \*.sourceforge.net

549 * packagecloud.io

550 * \*.packagecloud.io

551 * fonts.googleapis.com

552 * fonts.gstatic.com

553 </Accordion>

554 

555 <Accordion title="Schema und Konfiguration">

556 * json-schema.org

557 * [www.json-schema.org](http://www.json-schema.org)

558 * json.schemastore.org

559 * [www.schemastore.org](http://www.schemastore.org)

560 </Accordion>

561 

562 <Accordion title="Model Context Protocol">

563 * \*.modelcontextprotocol.io

564 </Accordion>

565</AccordionGroup>

566 

567## Aufgaben zwischen Web und Terminal verschieben

568 

569Diese Workflows erfordern die [Claude Code CLI](/de/quickstart), die bei demselben claude.ai-Konto angemeldet ist. Sie können neue Cloud-Sitzungen von Ihrem Terminal aus starten oder Cloud-Sitzungen in Ihr Terminal ziehen, um lokal fortzufahren. Cloud-Sitzungen bleiben bestehen, auch wenn Sie Ihren Laptop schließen, und Sie können sie von überall aus überwachen, einschließlich der Claude Mobile-App.

570 

571<Note>

572 Von der CLI ist die Sitzungsübergabe unidirektional: Sie können Cloud-Sitzungen mit `--teleport` in Ihr Terminal ziehen, aber Sie können keine vorhandene Terminal-Sitzung ins Web verschieben. Das Flag `--remote` erstellt eine neue Cloud-Sitzung für Ihr aktuelles Repository. Die [Desktop-App](/de/desktop#continue-in-another-surface) bietet ein Continue in-Menü, das eine lokale Sitzung ins Web senden kann.

573</Note>

574 

575### Vom Terminal zum Web

576 

577Starten Sie eine Cloud-Sitzung von der Befehlszeile mit dem Flag `--remote`:

578 

579```bash theme={null}

580claude --remote "Fix the authentication bug in src/auth/login.ts"

581```

582 

583Dies erstellt eine neue Cloud-Sitzung auf claude.ai. Die Sitzung klont Ihr aktuelles Verzeichnis's GitHub-Remote bei Ihrem aktuellen Branch, daher pushen Sie zuerst, wenn Sie lokale Commits haben, da die VM von GitHub klont, nicht von Ihrem Computer. `--remote` funktioniert mit einem Repository auf einmal. Die Aufgabe wird in der Cloud ausgeführt, während Sie lokal weiterarbeiten.

584 

585<Note>

586 `--remote` erstellt Cloud-Sitzungen. `--remote-control` ist nicht verwandt: Es stellt eine lokale CLI-Sitzung zur Überwachung vom Web aus bereit. Siehe [Remote Control](/de/remote-control).

587</Note>

588 

589Verwenden Sie `/tasks` in der Claude Code CLI, um den Fortschritt zu überprüfen, oder öffnen Sie die Sitzung auf claude.ai oder der Claude Mobile-App, um direkt zu interagieren. Von dort aus können Sie Claude steuern, Feedback geben oder Fragen beantworten, genau wie in jedem anderen Gespräch.

590 

591#### Tipps für Cloud-Aufgaben

592 

593**Planen Sie lokal, führen Sie remote aus**: Für komplexe Aufgaben starten Sie Claude im Plan Mode, um den Ansatz zu besprechen, und senden Sie dann die Arbeit ins Web:

594 

595```bash theme={null}

596claude --permission-mode plan

597```

598 

599Im Plan Mode liest Claude Dateien, führt Befehle aus, um zu erkunden, und schlägt einen Plan vor, ohne Quellcode zu bearbeiten. Sobald Sie mit dem Plan zufrieden sind, speichern Sie den Plan im Repo, committen und pushen Sie, damit die Cloud-VM ihn klonen kann. Dann starten Sie eine Cloud-Sitzung für autonome Ausführung:

600 

601```bash theme={null}

602claude --remote "Execute the migration plan in docs/migration-plan.md"

603```

604 

605Dieses Muster gibt Ihnen Kontrolle über die Strategie, während Claude autonom in der Cloud ausgeführt wird.

606 

607**Planen Sie in der Cloud mit ultraplan**: Um den Plan selbst in einer Web-Sitzung zu entwerfen und zu überprüfen, verwenden Sie [ultraplan](/de/ultraplan). Claude generiert den Plan auf Claude Code im Web, während Sie weiterarbeiten, dann kommentieren Sie Abschnitte in Ihrem Browser und wählen, ob Sie remote ausführen oder den Plan zurück zu Ihrem Terminal senden.

608 

609**Führen Sie Aufgaben parallel aus**: Jeder `--remote`-Befehl erstellt seine eigene Cloud-Sitzung, die unabhängig ausgeführt wird. Sie können mehrere Aufgaben starten und sie werden alle gleichzeitig in separaten Sitzungen ausgeführt:

610 

611```bash theme={null}

612claude --remote "Fix the flaky test in auth.spec.ts"

613claude --remote "Update the API documentation"

614claude --remote "Refactor the logger to use structured output"

615```

616 

617Überwachen Sie alle Sitzungen mit `/tasks` in der Claude Code CLI. Wenn eine Sitzung abgeschlossen ist, können Sie einen PR aus der Web-Oberfläche erstellen oder [die Sitzung teleportieren](#from-web-to-terminal), um lokal fortzufahren.

618 

619#### Senden Sie lokale Repositories ohne GitHub

620 

621Wenn Sie `claude --remote` aus einem Repository ausführen, das nicht mit GitHub verbunden ist, bündelt Claude Code Ihr lokales Repository und lädt es direkt in die Cloud-Sitzung hoch. Das Bündel enthält Ihre vollständige Repository-Historie über alle Branches hinweg, plus alle nicht committeten Änderungen an verfolgten Dateien.

622 

623Dieses Fallback wird automatisch aktiviert, wenn GitHub-Zugriff nicht verfügbar ist. Um es zu erzwingen, auch wenn GitHub verbunden ist, setzen Sie `CCR_FORCE_BUNDLE=1`:

624 

625```bash theme={null}

626CCR_FORCE_BUNDLE=1 claude --remote "Run the test suite and fix any failures"

627```

628 

629Gebündelte Repositories müssen diese Limits erfüllen:

630 

631* Das Verzeichnis muss ein Git-Repository mit mindestens einem Commit sein

632* Das gebündelte Repository muss unter 100 MB liegen. Größere Repositories fallen auf das Bündeln nur des aktuellen Branches zurück, dann auf einen einzelnen gequetschten Snapshot des Arbeitsbaums, und schlagen nur fehl, wenn der Snapshot immer noch zu groß ist

633* Nicht verfolgte Dateien sind nicht enthalten; führen Sie `git add` auf Dateien aus, die die Cloud-Sitzung sehen soll

634* Sitzungen, die aus einem Bündel erstellt wurden, können nicht zurück zu einem Remote pushen, es sei denn, Sie haben auch [GitHub-Authentifizierung](#github-authentication-options) konfiguriert

635 

636### Vom Web zum Terminal

637 

638Ziehen Sie eine Cloud-Sitzung in Ihr Terminal mit einer dieser Methoden:

639 

640* **Mit `--teleport`**: Führen Sie von der Befehlszeile `claude --teleport` für eine interaktive Sitzungsauswahl aus, oder `claude --teleport <session-id>`, um eine bestimmte Sitzung direkt fortzusetzen. Wenn Sie nicht committete Änderungen haben, werden Sie aufgefordert, diese zuerst zu stashen.

641* **Mit `/teleport`**: Führen Sie innerhalb einer vorhandenen CLI-Sitzung `/teleport` (oder `/tp`) aus, um die gleiche Sitzungsauswahl zu öffnen, ohne Claude Code neu zu starten.

642* **Von `/tasks`**: Führen Sie `/tasks` aus, um Ihre Hintergrund-Sitzungen zu sehen, drücken Sie dann `t`, um in eine zu teleportieren

643* **Von der Web-Oberfläche**: Wählen Sie **Open in CLI**, um einen Befehl zu kopieren, den Sie in Ihr Terminal einfügen können

644 

645Wenn Sie eine Sitzung teleportieren, überprüft Claude, dass Sie sich im richtigen Repository befinden, ruft den Branch aus der Cloud-Sitzung ab und checkt ihn aus, und lädt die vollständige Gesprächshistorie in Ihr Terminal.

646 

647`--teleport` unterscheidet sich von `--resume`. `--resume` öffnet ein Gespräch aus der lokalen Historie dieser Maschine und listet keine Cloud-Sitzungen auf; `--teleport` zieht eine Cloud-Sitzung und ihren Branch.

648 

649#### Teleport-Anforderungen

650 

651Teleport überprüft diese Anforderungen, bevor eine Sitzung fortgesetzt wird. Wenn eine Anforderung nicht erfüllt ist, sehen Sie einen Fehler oder werden aufgefordert, das Problem zu beheben.

652 

653| Anforderung | Details |

654| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |

655| Sauberer Git-Status | Ihr Arbeitsverzeichnis darf keine nicht committeten Änderungen haben. Teleport fordert Sie auf, Änderungen zu stashen, falls erforderlich. |

656| Korrektes Repository | Sie müssen `--teleport` aus einem Checkout desselben Repositories ausführen, nicht aus einem Fork. |

657| Branch verfügbar | Der Branch aus der Cloud-Sitzung muss in das Remote gepusht worden sein. Teleport ruft ihn automatisch ab und checkt ihn aus. |

658| Gleiches Konto | Sie müssen sich bei demselben claude.ai-Konto authentifizieren, das in der Cloud-Sitzung verwendet wurde. |

659 

660#### `--teleport` ist nicht verfügbar

661 

662Teleport erfordert claude.ai-Abonnement-Authentifizierung. Wenn Sie sich über API-Schlüssel, Bedrock, Vertex AI oder Microsoft Foundry authentifizieren, führen Sie `/login` aus, um sich stattdessen mit Ihrem claude.ai-Konto anzumelden. Wenn Sie bereits über claude.ai angemeldet sind und `--teleport` immer noch nicht verfügbar ist, hat Ihre Organisation möglicherweise Cloud-Sitzungen deaktiviert.

663 

664## Mit Sitzungen arbeiten

665 

666Sitzungen werden in der Seitenleiste unter claude.ai/code angezeigt. Von dort aus können Sie Änderungen überprüfen, mit Teamkollegen teilen, abgeschlossene Arbeiten archivieren oder Sitzungen dauerhaft löschen.

667 

668### Kontext verwalten

669 

670Cloud-Sitzungen unterstützen [integrierte Befehle](/de/commands), die Textausgabe erzeugen. Befehle, die eine interaktive Terminal-Auswahl öffnen, wie `/model` oder `/config`, sind nicht verfügbar.

671 

672Für Kontextverwaltung speziell:

673 

674| Befehl | Funktioniert in Cloud-Sitzungen | Notizen |

675| :--------- | :------------------------------ | :------------------------------------------------------------------------------------------------------------------------------ |

676| `/compact` | Ja | Fasst das Gespräch zusammen, um Kontext freizugeben. Akzeptiert optionale Fokus-Anweisungen wie `/compact keep the test output` |

677| `/context` | Ja | Zeigt, was sich derzeit im Kontextfenster befindet |

678| `/clear` | Nein | Starten Sie stattdessen eine neue Sitzung aus der Seitenleiste |

679 

680Auto-Kompaktierung wird automatisch ausgeführt, wenn sich das Kontextfenster der Kapazität nähert, genau wie in der CLI. Um es früher auszulösen, setzen Sie [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/de/env-vars) in Ihren [Umgebungsvariablen](#configure-your-environment). Zum Beispiel kompaktiert `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=70` bei 70% Kapazität statt des Standards \~95%. Um die effektive Fenstergröße für Kompaktierungsberechnungen zu ändern, verwenden Sie [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/de/env-vars).

681 

682[Subagents](/de/sub-agents) funktionieren genauso wie lokal. Claude kann sie mit dem Task-Tool spawnen, um Forschung oder parallele Arbeit in ein separates Kontextfenster auszulagern, um das Hauptgespräch leichter zu halten. Subagents, die in Ihrem Repo's `.claude/agents/` definiert sind, werden automatisch aufgegriffen. [Agent-Teams](/de/agent-teams) sind standardmäßig deaktiviert, können aber aktiviert werden, indem Sie `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` zu Ihren [Umgebungsvariablen](#configure-your-environment) hinzufügen.

683 

684### Änderungen überprüfen

685 

686Jede Sitzung zeigt einen Diff-Indikator mit hinzugefügten und entfernten Zeilen, wie `+42 -18`. Wählen Sie ihn, um die Diff-Ansicht zu öffnen, hinterlassen Sie Inline-Kommentare zu bestimmten Zeilen und senden Sie sie mit Ihrer nächsten Nachricht an Claude. Siehe [Überprüfung und Iteration](/de/web-quickstart#review-and-iterate) für die vollständige Anleitung, einschließlich PR-Erstellung. Um Claude den PR auf CI-Fehler und Review-Kommentare automatisch überwachen zu lassen, siehe [Auto-fix Pull Requests](#auto-fix-pull-requests).

687 

688### Sitzungen teilen

689 

690Um eine Sitzung zu teilen, schalten Sie ihre Sichtbarkeit gemäß den folgenden Kontotypen um. Danach teilen Sie den Sitzungslink wie gewohnt. Empfänger sehen den neuesten Status, wenn sie den Link öffnen, aber ihre Ansicht wird nicht in Echtzeit aktualisiert.

691 

692#### Teilen von einem Enterprise- oder Team-Konto

693 

694Für Enterprise- und Team-Konten sind die beiden Sichtbarkeitsoptionen **Private** und **Team**. Team-Sichtbarkeit macht die Sitzung für andere Mitglieder Ihrer claude.ai-Organisation sichtbar. Die Überprüfung des Repository-Zugriffs ist standardmäßig aktiviert, basierend auf dem GitHub-Konto, das mit dem Konto des Empfängers verbunden ist. Der Anzeigename Ihres Kontos ist für alle Empfänger mit Zugriff sichtbar. [Claude in Slack](/de/slack)-Sitzungen werden automatisch mit Team-Sichtbarkeit geteilt.

695 

696#### Teilen von einem Max- oder Pro-Konto

697 

698Für Max- und Pro-Konten sind die beiden Sichtbarkeitsoptionen **Private** und **Public**. Public-Sichtbarkeit macht die Sitzung für jeden Benutzer sichtbar, der bei claude.ai angemeldet ist.

699 

700Überprüfen Sie Ihre Sitzung auf sensible Inhalte, bevor Sie sie teilen. Sitzungen können Code und Anmeldedaten aus privaten GitHub-Repositories enthalten. Die Überprüfung des Repository-Zugriffs ist standardmäßig nicht aktiviert.

701 

702Um zu verlangen, dass Empfänger Repository-Zugriff haben, oder um Ihren Namen aus gemeinsamen Sitzungen auszublenden, gehen Sie zu Einstellungen > Claude Code > Freigabeeinstellungen.

703 

704### Sitzungen archivieren

705 

706Sie können Sitzungen archivieren, um Ihre Sitzungsliste organisiert zu halten. Archivierte Sitzungen sind in der Standard-Sitzungsliste ausgeblendet, können aber durch Filtern nach archivierten Sitzungen angezeigt werden.

707 

708Um eine Sitzung zu archivieren, bewegen Sie den Mauszeiger über die Sitzung in der Seitenleiste und wählen Sie das Archiv-Symbol.

709 

710### Sitzungen löschen

711 

712Das Löschen einer Sitzung entfernt die Sitzung und ihre Daten dauerhaft. Diese Aktion kann nicht rückgängig gemacht werden. Sie können eine Sitzung auf zwei Arten löschen:

713 

714* **Von der Seitenleiste**: Filtern Sie nach archivierten Sitzungen, bewegen Sie dann den Mauszeiger über die Sitzung, die Sie löschen möchten, und wählen Sie das Lösch-Symbol

715* **Vom Sitzungsmenü**: Öffnen Sie eine Sitzung, wählen Sie das Dropdown-Menü neben dem Sitzungstitel und wählen Sie **Löschen**

716 

717Sie werden aufgefordert, vor dem Löschen einer Sitzung zu bestätigen.

718 

719## Auto-fix Pull Requests

720 

721Claude kann einen Pull Request überwachen und automatisch auf CI-Fehler und Review-Kommentare reagieren. Claude abonniert GitHub-Aktivitäten auf dem PR, und wenn eine Überprüfung fehlschlägt oder ein Reviewer einen Kommentar hinterlässt, untersucht Claude das Problem und pusht eine Lösung, wenn eine klar ist.

722 

723<Note>

724 Auto-fix erfordert, dass die Claude GitHub App auf Ihrem Repository installiert ist. Falls noch nicht geschehen, installieren Sie sie von der [GitHub App-Seite](https://github.com/apps/claude) oder wenn Sie dazu während des [Setups](/de/web-quickstart#connect-github-and-create-an-environment) aufgefordert werden.

725</Note>

726 

727Es gibt mehrere Möglichkeiten, Auto-fix zu aktivieren, je nachdem, woher der PR stammt und welches Gerät Sie verwenden:

728 

729* **PRs, die in Claude Code im Web erstellt wurden**: Öffnen Sie die CI-Statusleiste und wählen Sie **Auto-fix**

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

731* **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"

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

733 

734### Wie Claude auf PR-Aktivität reagiert

735 

736Wenn Auto-fix aktiv ist, empfängt Claude GitHub-Events für den PR, einschließlich neuer Review-Kommentare und CI-Check-Fehler. Für jedes Event untersucht Claude das Problem und entscheidet, wie vorgegangen wird:

737 

738* **Klare Fixes**: Wenn Claude sich einer Lösung sicher ist und sie nicht mit früheren Anweisungen in Konflikt steht, nimmt Claude die Änderung vor, pusht sie und erklärt, was getan wurde, in der Sitzung

739* **Mehrdeutige Anfragen**: Wenn ein Reviewer-Kommentar auf mehrere Arten interpretiert werden könnte oder etwas architektonisch Bedeutsames betrifft, fragt Claude Sie, bevor er handelt

740* **Doppelte oder keine Aktion erforderlich Events**: Wenn ein Event ein Duplikat ist oder keine Änderung erfordert, notiert Claude es in der Sitzung und fährt fort

741 

742Claude kann als Teil der Auflösung auf Review-Kommentar-Threads auf GitHub antworten. Diese Antworten werden mit Ihrem GitHub-Konto gepostet, sodass sie unter Ihrem Benutzernamen erscheinen, aber jede Antwort ist als von Claude Code stammend gekennzeichnet, damit Reviewer wissen, dass sie vom Agent geschrieben wurde und nicht direkt von Ihnen.

743 

744<Warning>

745 Wenn Ihr Repository Kommentar-ausgelöste Automatisierung wie Atlantis, Terraform Cloud oder benutzerdefinierte GitHub Actions verwendet, die auf `issue_comment`-Events ausgeführt werden, beachten Sie, dass Claude auf Ihrem Behalf antworten kann, was diese Workflows auslösen kann. Überprüfen Sie die Automatisierung Ihres Repositories, bevor Sie Auto-fix aktivieren, und erwägen Sie, Auto-fix für Repositories zu deaktivieren, in denen ein PR-Kommentar Infrastruktur bereitstellen oder privilegierte Operationen ausführen kann.

746</Warning>

747 

748## Sicherheit und Isolation

749 

750Jede Cloud-Sitzung ist von Ihrem Computer und von anderen Sitzungen durch mehrere Schichten getrennt:

751 

752* **Isolierte virtuelle Maschinen**: Jede Sitzung wird in einer isolierten, von Anthropic verwalteten VM ausgeführt

753* **Netzwerkzugriffskontrolle**: Der Netzwerkzugriff ist standardmäßig begrenzt und kann deaktiviert werden. Wenn Claude Code mit deaktiviertem Netzwerkzugriff ausgeführt wird, kann Claude Code immer noch mit der Anthropic API kommunizieren, was möglicherweise ermöglicht, dass Daten die VM verlassen.

754* **Schutz von Anmeldedaten**: Sensible Anmeldedaten wie Git-Anmeldedaten oder Signaturschlüssel befinden sich niemals in der Sandbox mit Claude Code. Die Authentifizierung wird über einen sicheren Proxy mit Scoped-Credentials verwaltet.

755* **Sichere Analyse**: Code wird in isolierten VMs analysiert und geändert, bevor PRs erstellt werden

756 

757## Einschränkungen

758 

759Bevor Sie Cloud-Sitzungen für einen Workflow verwenden, berücksichtigen Sie diese Einschränkungen:

760 

761* **Ratenlimits**: Claude Code im Web teilt Ratenlimits mit allen anderen Claude- und Claude Code-Nutzungen in Ihrem Konto. Das Ausführen mehrerer Aufgaben parallel verbraucht proportional mehr Ratenlimits. Es gibt keine separate Compute-Gebühr für die Cloud-VM.

762* **Repository-Authentifizierung**: Sie können Sitzungen nur vom Web zum lokalen Computer verschieben, wenn Sie sich bei demselben Konto authentifizieren

763* **Plattformbeschränkungen**: Repository-Klonen und Pull Request-Erstellung erfordern GitHub. Selbstgehostete [GitHub Enterprise Server](/de/github-enterprise-server)-Instanzen werden für Team- und Enterprise-Pläne unterstützt. GitLab, Bitbucket und andere Nicht-GitHub-Repositories können als lokales [Bündel](#send-local-repositories-without-github) zu Cloud-Sitzungen gesendet werden, aber die Sitzung kann nicht zurück zum Remote pushen

764 

765## Verwandte Ressourcen

766 

767* [Ultraplan](/de/ultraplan): Entwerfen Sie einen Plan in einer Cloud-Sitzung und überprüfen Sie ihn in Ihrem Browser

768* [Ultrareview](/de/ultrareview): Führen Sie eine tiefe Multi-Agent-Code-Review in einer Cloud-Sandbox aus

769* [Routines](/de/routines): Automatisieren Sie Arbeiten nach einem Zeitplan, über API-Aufruf oder als Reaktion auf GitHub-Events

770* [Hooks-Konfiguration](/de/hooks): Führen Sie Skripte bei Sitzungs-Lifecycle-Events aus

771* [Einstellungsreferenz](/de/settings): Alle Konfigurationsoptionen

772* [Sicherheit](/de/security): Isolationsgarantien und Datenverarbeitung

773* [Datennutzung](/de/data-usage): Was Anthropic aus Cloud-Sitzungen behält

claude-directory.md +1583 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Erkunden Sie das .claude-Verzeichnis

6 

7> Wo Claude Code CLAUDE.md, settings.json, hooks, skills, commands, subagents, rules und auto memory liest. Erkunden Sie das .claude-Verzeichnis in Ihrem Projekt und ~/.claude in Ihrem Home-Verzeichnis.

8 

9export const ClaudeExplorer = () => {

10 const A = useMemo(() => ({href, children}) => <a href={href} style={{

11 color: 'var(--ce-accent)',

12 textDecoration: 'none',

13 borderBottom: '1px dotted var(--ce-accent)'

14 }}>{children}</a>, []);

15 const C = useMemo(() => ({children}) => <code style={{

16 fontFamily: 'var(--ce-mono)',

17 fontSize: '0.92em',

18 padding: '1px 4px',

19 borderRadius: '3px',

20 background: 'var(--ce-surface)',

21 border: '0.5px solid var(--ce-border-subtle)'

22 }}>{children}</code>, []);

23 const commandsNote = useMemo(() => <>Commands and skills are now the same mechanism. For new workflows, use <A href="/en/skills">skills/</A> instead: same <C>/name</C> invocation, plus you can bundle supporting files.</>, []);

24 const FILE_TREE = useMemo(() => ({

25 project: {

26 label: 'your-project/',

27 children: [{

28 id: 'claude-md',

29 label: 'CLAUDE.md',

30 type: 'file',

31 icon: 'md',

32 color: '#6A9BCC',

33 badge: 'committed',

34 oneLiner: 'Project instructions Claude reads 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.',

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="/en/skills">skill</A> or a path-scoped <A href="/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</>],

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 conventions

40 

41## Commands

42- Build: \`npm run build\`

43- Test: \`npm test\`

44- Lint: \`npm run lint\`

45 

46## Stack

47- TypeScript with strict mode

48- React 19, functional components only

49 

50## Rules

51- Named exports, never default exports

52- Tests live next to source: \`foo.ts\` -> \`foo.test.ts\`

53- All API routes return \`{ data, error }\` shape`,

54 docsLink: '/en/memory'

55 }, {

56 id: 'mcp-json',

57 label: '.mcp.json',

58 type: 'file',

59 icon: 'json',

60 color: '#9B7BC4',

61 badge: 'committed',

62 oneLiner: 'Project-scoped MCP servers, shared with your team',

63 when: <>Servers connect when the session begins. Tool schemas are deferred by default and load on demand via <A href="/en/mcp#scale-with-mcp-tool-search">tool search</A></>,

64 description: <>Configures Model Context Protocol (MCP) servers that give Claude access to external tools: databases, APIs, browsers, and more. This file holds the project-scoped servers your whole team uses. Personal servers you want to keep to yourself go in <C>~/.claude.json</C> instead.</>,

65 tips: [<>Use environment variable references for secrets: <C>{'${GITHUB_TOKEN}'}</C></>, <>Lives at the project root, not inside <C>.claude/</C></>, <>For servers only you need, run <C>claude mcp add --scope user</C>. This writes to <C>~/.claude.json</C> instead of <C>.mcp.json</C></>],

66 exampleIntro: <>This example configures the GitHub MCP server so Claude can read issues and open pull requests. The <C>{'${GITHUB_TOKEN}'}</C> reference is read from your shell environment when Claude Code starts the server, so the token never lands in the file.</>,

67 example: `{

68 "mcpServers": {

69 "github": {

70 "command": "npx",

71 "args": ["-y", "@modelcontextprotocol/server-github"],

72 "env": {

73 "GITHUB_TOKEN": "\${GITHUB_TOKEN}"

74 }

75 }

76 }

77}`,

78 docsLink: '/en/mcp'

79 }, {

80 id: 'worktreeinclude',

81 label: '.worktreeinclude',

82 type: 'file',

83 icon: 'md',

84 color: '#8FA876',

85 badge: 'committed',

86 oneLiner: 'Gitignored files to copy into new worktrees',

87 when: <>Read when Claude creates a git worktree via <C>--worktree</C>, the <C>EnterWorktree</C> tool, or subagent <C>isolation: worktree</C></>,

88 description: <>Lists gitignored files to copy from your main repository into each new worktree. Worktrees are fresh checkouts, so untracked files like <C>.env</C> are missing by default. Patterns here use <C>.gitignore</C> syntax. Only files that match a pattern and are also gitignored get copied, so tracked files are never duplicated.</>,

89 tips: [<>Lives at the project root, not inside <C>.claude/</C></>, <>Git-only: if you configure a <A href="/en/hooks#worktreecreate">WorktreeCreate hook</A> for a different VCS, this file is not read. Copy files inside your hook script instead</>, <>Also applies to parallel sessions in the <A href="/en/desktop#work-in-parallel-with-sessions">desktop app</A></>],

90 exampleIntro: 'This example copies your local environment files and a secrets config into every worktree Claude creates. Comments start with # and blank lines are ignored, same as .gitignore.',

91 example: `# Local environment

92.env

93.env.local

94 

95# API credentials

96config/secrets.json`,

97 docsLink: '/en/worktrees#copy-gitignored-files-into-worktrees'

98 }, {

99 id: 'dot-claude',

100 label: '.claude/',

101 type: 'folder',

102 icon: 'folder',

103 color: 'var(--ce-accent)',

104 oneLiner: 'Project-level configuration, rules, and extensions',

105 description: 'Everything Claude Code reads that is specific to this project. If you use git, commit most files here so your team shares them; a few, like settings.local.json, are automatically gitignored. Each file badge shows which.',

106 children: [{

107 id: 'settings-json',

108 label: 'settings.json',

109 type: 'file',

110 icon: 'json',

111 color: 'var(--ce-text-3)',

112 badge: 'committed',

113 oneLiner: 'Permissions, hooks, and configuration',

114 when: <>Overrides global <C>~/.claude/settings.json</C>. Local settings, CLI flags, and managed settings override this</>,

115 description: 'Settings that Claude Code applies directly. Permissions control which commands and tools Claude can use; hooks run your scripts at specific points in a session. Unlike CLAUDE.md, which Claude reads as guidance, these are enforced whether Claude follows them or not.',

116 contains: [<><A href="/en/permissions">permissions</A>: allow, deny, or prompt before Claude uses specific tools or commands</>, <><A href="/en/hooks">hooks</A>: run your own scripts on events like before a tool call or after a file edit</>, <><A href="/en/statusline">statusLine</A>: customize the line shown at the bottom while Claude works</>, <><A href="/en/settings#available-settings">model</A>: pick a default model for this project</>, <><A href="/en/settings#environment-variables">env</A>: environment variables set in every session</>, <><A href="/en/output-styles">outputStyle</A>: select a custom system-prompt style from output-styles/</>],

117 tips: [<>Bash permission patterns support wildcards: <C>Bash(npm test *)</C> matches any command starting with <C>npm test</C></>, <>Array settings like <C>permissions.allow</C> combine across all scopes; scalar settings like <C>model</C> use the most specific value</>],

118 exampleIntro: <>This example allows <C>npm test</C> and <C>npm run</C> commands without prompting, blocks <C>rm -rf</C>, and runs Prettier on files after Claude edits or writes them.</>,

119 example: `{

120 "permissions": {

121 "allow": [

122 "Bash(npm test *)",

123 "Bash(npm run *)"

124 ],

125 "deny": [

126 "Bash(rm -rf *)"

127 ]

128 },

129 "hooks": {

130 "PostToolUse": [{

131 "matcher": "Edit|Write",

132 "hooks": [{

133 "type": "command",

134 "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"

135 }]

136 }]

137 }

138}`,

139 docsLink: '/en/settings'

140 }, {

141 id: 'settings-local-json',

142 label: 'settings.local.json',

143 type: 'file',

144 icon: 'json',

145 color: 'var(--ce-text-3)',

146 badge: 'gitignored',

147 oneLiner: 'Your personal settings overrides for this project',

148 when: 'Highest of the user-editable settings files; CLI flags and managed settings still take precedence',

149 description: 'Personal settings that take precedence over the project defaults. Same JSON format as settings.json, but not committed. Use this when you need different permissions or defaults than the team config.',

150 tips: [<>Same schema as settings.json. Array settings like <C>permissions.allow</C> combine across scopes; scalar settings like <C>model</C> use the local value</>, <>Claude Code adds this file to <C>~/.config/git/ignore</C> the first time it writes one. If you use a custom <C>core.excludesFile</C>, add the pattern there too. To share the ignore rule with your team, also add it to the project <C>.gitignore</C></>],

151 exampleIntro: 'This example adds Docker permissions on top of whatever the team settings.json allows.',

152 example: `{

153 "permissions": {

154 "allow": [

155 "Bash(docker *)"

156 ]

157 }

158}`,

159 docsLink: '/en/settings'

160 }, {

161 id: 'rules',

162 label: 'rules/',

163 type: 'folder',

164 icon: 'folder',

165 color: '#9B7BC4',

166 oneLiner: 'Topic-scoped instructions, optionally gated by file paths',

167 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,

168 description: [<>Project instructions split into topic files that can load conditionally based on file paths. A rule without <C>paths:</C> frontmatter loads at session start like CLAUDE.md; a rule with <C>paths:</C> loads only when Claude reads a matching file.</>, <>Like CLAUDE.md, rules are guidance Claude reads, not configuration Claude Code enforces. For guaranteed behavior use <A href="/en/hooks">hooks</A> or <A href="/en/permissions">permissions</A>.</>],

169 tips: [<>Use <C>paths:</C> frontmatter with globs to scope rules to directories or file types</>, <>Subdirectories work: <C>.claude/rules/frontend/react.md</C> is discovered automatically</>, 'When CLAUDE.md approaches 200 lines, start splitting into rules'],

170 docsLink: '/en/memory#organize-rules-with-claude/rules/',

171 children: [{

172 id: 'rule-testing',

173 label: 'testing.md',

174 type: 'file',

175 icon: 'md',

176 color: '#9B7BC4',

177 badge: 'committed',

178 oneLiner: 'Test conventions scoped to test files',

179 when: <>Loaded when Claude reads a file matching the <C>paths:</C> globs below</>,

180 description: <>An example rule that only loads when Claude is working on test files. The <C>paths:</C> globs in the frontmatter define which files trigger it; here, anything ending in .test.ts or .test.tsx. For other files, this rule is not loaded into context.</>,

181 example: `---

182paths:

183 - "**/*.test.ts"

184 - "**/*.test.tsx"

185---

186 

187# Testing Rules

188 

189- Use descriptive test names: "should [expected] when [condition]"

190- Mock external dependencies, not internal modules

191- Clean up side effects in afterEach`

192 }, {

193 id: 'rule-api',

194 label: 'api-design.md',

195 type: 'file',

196 icon: 'md',

197 color: '#9B7BC4',

198 badge: 'committed',

199 oneLiner: 'API conventions scoped to backend code',

200 when: <>Loaded when Claude reads a file matching the <C>paths:</C> glob below</>,

201 description: <>A second example showing a rule scoped to backend code. The <C>paths:</C> glob matches files under src/api/, so these conventions load only when Claude is editing API routes.</>,

202 example: `---

203paths:

204 - "src/api/**/*.ts"

205---

206 

207# API Design Rules

208 

209- All endpoints must validate input with Zod schemas

210- Return shape: { data: T } | { error: string }

211- Rate limit all public endpoints`

212 }]

213 }, {

214 id: 'skills',

215 label: 'skills/',

216 type: 'folder',

217 icon: 'folder',

218 color: '#D4A843',

219 oneLiner: 'Reusable prompts you or Claude invoke by name',

220 when: <>Invoked with <C>/skill-name</C> or when Claude matches the task to a skill</>,

221 description: <>Each skill is a folder with a SKILL.md file plus any supporting files it needs. By default, both you and Claude can invoke a skill. Use frontmatter to control that: <C>disable-model-invocation: true</C> for user-only workflows like <C>/deploy</C>, or <C>user-invocable: false</C> to hide from the <C>/</C> menu while Claude can still invoke it.</>,

222 tips: [<>Skills accept arguments: <C>/deploy staging</C> passes "staging" as <C>$ARGUMENTS</C>. Use <C>$0</C>, <C>$1</C>, and so on for positional access</>, <>The <C>description</C> frontmatter determines when Claude auto-invokes the skill</>, 'Bundle reference docs alongside SKILL.md. Claude knows the skill directory path and can read supporting files when you mention them'],

223 docsLink: '/en/skills',

224 children: [{

225 id: 'skill-review',

226 label: 'security-review/',

227 type: 'folder',

228 icon: 'folder',

229 color: '#D4A843',

230 oneLiner: 'A skill bundling SKILL.md with supporting files',

231 children: [{

232 id: 'skill-review-md',

233 label: 'SKILL.md',

234 type: 'file',

235 icon: 'md',

236 color: '#D4A843',

237 badge: 'committed',

238 oneLiner: 'Entrypoint: trigger, invocability, instructions',

239 when: <>User types <C>/security-review &lt;target&gt;</C>; Claude cannot auto-invoke this skill</>,

240 description: [<>This skill uses <C>disable-model-invocation: true</C> so only you can trigger it; Claude never invokes it on its own.</>, <>The <C>!`...`</C> line runs a shell command and injects its output into the prompt. <C>$ARGUMENTS</C> substitutes whatever you typed after the skill name. Claude sees the skill directory path, so mentioning a bundled file like checklist.md lets Claude read it.</>],

241 example: `---

242description: Reviews code changes for security vulnerabilities, authentication gaps, and injection risks

243disable-model-invocation: true

244argument-hint: <branch-or-path>

245---

246 

247## Diff to review

248 

249!\`git diff $ARGUMENTS\`

250 

251Audit the changes above for:

252 

2531. Injection vulnerabilities (SQL, XSS, command)

2542. Authentication and authorization gaps

2553. Hardcoded secrets or credentials

256 

257Use checklist.md in this skill directory for the full review checklist.

258 

259Report findings with severity ratings and remediation steps.`

260 }, {

261 id: 'skill-checklist',

262 label: 'checklist.md',

263 type: 'file',

264 icon: 'md',

265 color: '#D4A843',

266 badge: 'committed',

267 oneLiner: 'Supporting file bundled with the skill',

268 when: 'Claude reads it on demand while running the skill',

269 description: <>Skills can bundle any supporting files: reference docs, templates, scripts. The skill directory path is prepended to SKILL.md, so Claude can read bundled files by name. For scripts in bash injection commands, use the <C>{'${CLAUDE_SKILL_DIR}'}</C> placeholder.</>,

270 example: `# Security Review Checklist

271 

272## Input Validation

273- [ ] All user input sanitized before DB queries

274- [ ] File upload MIME types validated

275- [ ] Path traversal prevented on file operations

276 

277## Authentication

278- [ ] JWT tokens expire after 24 hours

279- [ ] API keys stored in environment variables

280- [ ] Passwords hashed with bcrypt or argon2`

281 }]

282 }]

283 }, {

284 id: 'commands',

285 label: 'commands/',

286 type: 'folder',

287 icon: 'folder',

288 color: '#788C5D',

289 oneLiner: <>Single-file prompts invoked with <C>/name</C></>,

290 note: commandsNote,

291 when: <>User types <C>/command-name</C></>,

292 description: <>A file at <C>commands/deploy.md</C> creates <C>/deploy</C> the same way a skill at <C>skills/deploy/SKILL.md</C> does, and both can be auto-invoked by Claude. Skills use a directory with SKILL.md, letting you bundle reference docs, templates, or scripts alongside the prompt.</>,

293 tips: [<>Use <C>$ARGUMENTS</C> in the file to accept parameters: <C>/fix-issue 123</C></>, 'If a skill and command share a name, the skill takes precedence', 'New commands should usually be skills instead; commands remain supported'],

294 docsLink: '/en/skills',

295 children: [{

296 id: 'cmd-example',

297 label: 'fix-issue.md',

298 type: 'file',

299 icon: 'md',

300 color: '#788C5D',

301 badge: 'committed',

302 oneLiner: <>Invoked as <C>/fix-issue &lt;number&gt;</C></>,

303 note: commandsNote,

304 description: [<>An example command for fixing a GitHub issue. Type <C>/fix-issue 123</C> and the <C>!`...`</C> line runs <C>gh issue view 123</C> in your shell, injecting the output into the prompt before Claude sees it.</>, <><C>$ARGUMENTS</C> substitutes whatever you typed after the command name. For positional access, use <C>$0</C> <C>$1</C> and so on.</>],

305 example: `---

306argument-hint: <issue-number>

307---

308 

309!\`gh issue view $ARGUMENTS\`

310 

311Investigate and fix the issue above.

312 

3131. Trace the bug to its root cause

3142. Implement the fix

3153. Write or update tests

3164. Summarize what you changed and why`

317 }]

318 }, {

319 id: 'output-styles',

320 label: 'output-styles/',

321 type: 'folder',

322 icon: 'folder',

323 color: '#5AA7A7',

324 oneLiner: 'Project-scoped output styles, if your team shares any',

325 when: 'Applied at session start when selected via the outputStyle setting',

326 description: <>Output styles are usually personal, so most live in <C>~/.claude/output-styles/</C>. Put one here if your team shares a style, like a review mode everyone uses. See <A href="#ce-global-output-styles">the Global tab</A> for the full explanation and example.</>,

327 docsLink: '/en/output-styles',

328 children: []

329 }, {

330 id: 'agents',

331 label: 'agents/',

332 type: 'folder',

333 icon: 'folder',

334 color: '#C46686',

335 oneLiner: 'Specialized subagents with their own context window',

336 when: 'Runs in its own context window when you or Claude invoke it',

337 description: 'Each markdown file defines a subagent with its own system prompt, tool access, and optionally its own model. Subagents run in a fresh context window, keeping the main conversation clean. Useful for parallel work or isolated tasks.',

338 tips: ['Each agent gets a fresh context window, separate from your main session', <>Restrict tool access per agent with the <C>tools:</C> frontmatter field</>, 'Type @ and pick an agent from the autocomplete to delegate directly'],

339 docsLink: '/en/sub-agents',

340 children: [{

341 id: 'agent-reviewer',

342 label: 'code-reviewer.md',

343 type: 'file',

344 icon: 'md',

345 color: '#C46686',

346 badge: 'committed',

347 oneLiner: 'Subagent for isolated code review',

348 when: 'Claude spawns it for review tasks, or you @-mention it from the autocomplete',

349 description: <>An example subagent restricted to read-only tools. The <C>description</C> frontmatter tells Claude when to delegate to it automatically; <C>tools:</C> limits it to Read, Grep, and Glob so it can inspect code but never edit. The body becomes the subagent's system prompt.</>,

350 example: `---

351name: code-reviewer

352description: Reviews code for correctness, security, and maintainability

353tools: Read, Grep, Glob

354---

355 

356You are a senior code reviewer. Review for:

357 

3581. Correctness: logic errors, edge cases, null handling

3592. Security: injection, auth bypass, data exposure

3603. Maintainability: naming, complexity, duplication

361 

362Every finding must include a concrete fix.`

363 }]

364 }, {

365 id: 'agent-memory',

366 label: 'agent-memory/',

367 type: 'folder',

368 icon: 'folder',

369 color: '#C46686',

370 badge: 'committed',

371 autogen: true,

372 oneLiner: 'Subagent persistent memory, separate from your main session auto memory',

373 when: 'First 200 lines (capped at 25KB) of MEMORY.md loaded into the subagent system prompt when it runs',

374 description: <>Subagents with <C>memory: project</C> in their frontmatter get a dedicated memory directory here. This is distinct from your <A href="/en/memory#auto-memory">main session auto memory</A> at <C>~/.claude/projects/</C>: each subagent reads and writes its own MEMORY.md, not yours.</>,

375 tips: [<>Only created for subagents that set the <C>memory:</C> frontmatter field</>, <>This directory holds project-scoped subagent memory, meant to be shared with your team. To keep memory out of version control use <C>memory: local</C>, which writes to <C>.claude/agent-memory-local/</C> instead. For cross-project memory use <C>memory: user</C>, which writes to <C>~/.claude/agent-memory/</C></>, <>The main session auto memory is a different feature; see <C>~/.claude/projects/</C> in the Global tab</>],

376 docsLink: '/en/sub-agents#enable-persistent-memory',

377 children: [{

378 id: 'agent-memory-sub',

379 label: '<agent-name>/',

380 type: 'folder',

381 icon: 'folder',

382 color: '#C46686',

383 autogen: true,

384 children: [{

385 id: 'agent-memory-md',

386 label: 'MEMORY.md',

387 type: 'file',

388 icon: 'md',

389 color: '#C46686',

390 badge: 'committed',

391 autogen: true,

392 oneLiner: 'The subagent writes and maintains this file automatically',

393 when: 'Loaded into the subagent system prompt when the subagent starts',

394 description: <>Works the same as your <A href="/en/memory#auto-memory">main auto memory</A>: the subagent creates and updates this file itself. You do not write it. The subagent reads it at the start of each task and writes back what it learns.</>,

395 example: `# code-reviewer memory

396 

397## Patterns seen

398- Project uses custom Result<T, E> type, not exceptions

399- Auth middleware expects Bearer token in Authorization header

400- Tests use factory functions in test/factories/

401 

402## Recurring issues

403- Missing null checks on API responses (src/api/*)

404- Unhandled promise rejections in background jobs`

405 }]

406 }]

407 }]

408 }]

409 },

410 global: {

411 label: '~/',

412 children: [{

413 id: 'claude-json',

414 label: '.claude.json',

415 type: 'file',

416 icon: 'json',

417 color: 'var(--ce-text-3)',

418 badge: 'local',

419 oneLiner: 'App state and UI preferences',

420 when: <>Read at session start for your preferences and MCP servers. Claude Code writes back to it when you change settings in <C>/config</C> or approve trust prompts</>,

421 description: <>Holds state that does not belong in settings.json: theme, OAuth session, per-project trust decisions, your personal MCP servers, and UI toggles. Mostly managed through <C>/config</C> rather than editing directly.</>,

422 tips: [<>IDE toggles like <C>autoConnectIde</C> and <C>externalEditorContext</C> live here, not in settings.json</>, <>The <C>projects</C> key tracks per-project state like trust-dialog acceptance and last-session metrics. Permission rules you approve in-session go to <C>.claude/settings.local.json</C> instead</>, <>MCP servers here are yours only: user scope applies across all projects, local scope is per-project but not committed. Team-shared servers go in <C>.mcp.json</C> at the project root instead</>],

423 example: `{

424 "autoConnectIde": true,

425 "externalEditorContext": true,

426 "mcpServers": {

427 "my-tools": {

428 "command": "npx",

429 "args": ["-y", "@example/mcp-server"]

430 }

431 }

432}`,

433 docsLink: '/en/settings#global-config-settings'

434 }, {

435 id: 'global-dot-claude',

436 label: '.claude/',

437 type: 'folder',

438 icon: 'folder',

439 color: 'var(--ce-accent)',

440 oneLiner: 'Your personal configuration across all projects',

441 description: 'The global counterpart to your project .claude/ directory. Files here apply to every project you work in and are never committed to any repository.',

442 children: [{

443 id: 'global-claude-md',

444 label: 'CLAUDE.md',

445 type: 'file',

446 icon: 'md',

447 color: '#6A9BCC',

448 badge: 'local',

449 oneLiner: 'Personal preferences across every project',

450 when: 'Loaded at the start of every session, in every project',

451 description: 'Your global instruction file. Loaded alongside the project CLAUDE.md at session start, so both are in context together. When instructions conflict, project-level instructions take priority. Keep this to preferences that apply everywhere: response style, commit format, personal conventions.',

452 tips: ['Keep it short since it loads into context for every project, alongside that project\'s own CLAUDE.md', 'Good for response style, commit format, and personal conventions'],

453 example: `# Global preferences

454 

455- Keep explanations concise

456- Use conventional commit format

457- Show the terminal command to verify changes

458- Prefer composition over inheritance`,

459 docsLink: '/en/memory'

460 }, {

461 id: 'global-settings',

462 label: 'settings.json',

463 type: 'file',

464 icon: 'json',

465 color: 'var(--ce-text-3)',

466 badge: 'local',

467 oneLiner: 'Default settings for all projects',

468 when: 'Your defaults. Project and local settings.json override any keys you also set there',

469 description: [<>Same keys as project <C>settings.json</C>: permissions, hooks, model, environment variables, and the rest. Put settings here that you want in every project, like permissions you always allow, a preferred model, or a notification hook that runs regardless of which project you're in.</>, <>Settings follow a precedence order: project <C>settings.json</C> overrides any matching keys you set here. This is different from CLAUDE.md, where global and project files are both loaded into context rather than merged key by key.</>],

470 example: `{

471 "permissions": {

472 "allow": [

473 "Bash(git log *)",

474 "Bash(git diff *)"

475 ]

476 }

477}`,

478 docsLink: '/en/settings'

479 }, {

480 id: 'keybindings',

481 label: 'keybindings.json',

482 type: 'file',

483 icon: 'json',

484 color: 'var(--ce-text-3)',

485 badge: 'local',

486 oneLiner: 'Custom keyboard shortcuts',

487 when: 'Read at session start and hot-reloaded when you edit the file',

488 description: <>Rebind keyboard shortcuts in the interactive CLI. Run <C>/keybindings</C> to create or open this file with a schema reference. Ctrl+C, Ctrl+D, Ctrl+M, and Caps Lock are reserved and cannot be rebound.</>,

489 exampleIntro: <>This example binds <C>Ctrl+E</C> to open your external editor and unbinds <C>Ctrl+U</C> by setting it to <C>null</C>. The <C>context</C> field scopes bindings to a specific part of the CLI, here the main chat input.</>,

490 example: `{

491 "$schema": "https://www.schemastore.org/claude-code-keybindings.json",

492 "$docs": "https://code.claude.com/docs/en/keybindings",

493 "bindings": [

494 {

495 "context": "Chat",

496 "bindings": {

497 "ctrl+e": "chat:externalEditor",

498 "ctrl+u": null

499 }

500 }

501 ]

502}`,

503 docsLink: '/en/keybindings'

504 }, {

505 id: 'themes',

506 label: 'themes/',

507 type: 'folder',

508 icon: 'folder',

509 color: '#5AA7A7',

510 oneLiner: 'Custom color themes',

511 when: <>Read at session start and hot-reloaded when files change. Listed in <C>/theme</C></>,

512 description: <>Each <C>.json</C> file defines a custom color theme: a built-in <C>base</C> preset plus an <C>overrides</C> map of color tokens. Create one interactively with <C>/theme</C> or write the JSON by hand. Selecting a custom theme stores <C>custom:&lt;slug&gt;</C> as your theme preference.</>,

513 example: `{

514 "name": "Dracula",

515 "base": "dark",

516 "overrides": {

517 "claude": "#bd93f9",

518 "error": "#ff5555",

519 "success": "#50fa7b"

520 }

521}`,

522 docsLink: '/en/terminal-config#create-a-custom-theme',

523 children: []

524 }, {

525 id: 'global-projects',

526 label: 'projects/',

527 type: 'folder',

528 icon: 'folder',

529 color: '#E8A45C',

530 autogen: true,

531 oneLiner: "Auto memory: Claude's notes to itself, per project",

532 when: 'MEMORY.md loaded at session start; topic files read on demand',

533 description: 'Auto memory lets Claude accumulate knowledge across sessions without you writing anything. Claude saves notes as it works: build commands, debugging insights, architecture notes. Each project gets its own memory directory keyed by the repository path.',

534 tips: [<>On by default. Toggle with <C>/memory</C> or <C>autoMemoryEnabled</C> in settings</>, 'MEMORY.md is the index loaded each session. The first 200 lines, or 25KB, whichever comes first, are read', 'Topic files like debugging.md are read on demand, not at startup', 'These are plain markdown. Edit or delete them anytime'],

535 docsLink: '/en/memory#auto-memory',

536 children: [{

537 id: 'memory-dir',

538 label: '<project>/memory/',

539 type: 'folder',

540 icon: 'folder',

541 color: '#E8A45C',

542 autogen: true,

543 oneLiner: "Claude's accumulated knowledge for one project",

544 children: [{

545 id: 'memory-md',

546 label: 'MEMORY.md',

547 type: 'file',

548 icon: 'md',

549 color: '#E8A45C',

550 badge: 'local',

551 autogen: true,

552 oneLiner: 'Claude writes and maintains this file automatically',

553 when: 'First 200 lines (capped at 25KB) loaded at session start',

554 description: 'Claude creates and updates this file as it works; you do not write it yourself. It acts as an index that Claude reads at the start of every session, pointing to topic files for detail. You can edit or delete it, but Claude will keep updating it.',

555 example: `# Memory Index

556 

557## Project

558- [build-and-test.md](build-and-test.md): npm run build (~45s), Vitest, dev server on 3001

559- [architecture.md](architecture.md): API client singleton, refresh-token auth

560 

561## Reference

562- [debugging.md](debugging.md): auth token rotation and DB connection troubleshooting`,

563 docsLink: '/en/memory'

564 }, {

565 id: 'memory-topic',

566 label: 'debugging.md',

567 type: 'file',

568 icon: 'md',

569 color: '#E8A45C',

570 badge: 'local',

571 autogen: true,

572 oneLiner: 'Topic notes Claude writes when MEMORY.md gets long',

573 when: 'Claude reads this when a related task comes up',

574 description: 'An example of a topic file Claude creates when MEMORY.md grows too long. Claude picks the filename based on what it splits out: debugging.md, architecture.md, build-commands.md, or similar. You never create these yourself. Claude reads a topic file back only when the current task relates to it.',

575 example: `---

576name: Debugging patterns

577description: Auth token rotation and database connection troubleshooting for this project

578type: reference

579---

580 

581## Auth Token Issues

582- Refresh token rotation: old token invalidated immediately

583- If 401 after refresh: check clock skew between client and server

584 

585## Database Connection Drops

586- Connection pool: max 10 in dev, 50 in prod

587- Always check \`docker compose ps\` first`

588 }]

589 }]

590 }, {

591 id: 'global-rules',

592 label: 'rules/',

593 type: 'folder',

594 icon: 'folder',

595 color: '#9B7BC4',

596 oneLiner: 'User-level rules that apply to every project',

597 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,

598 description: 'Same as project .claude/rules/ but applies everywhere. Use this for conventions you want across all your work, like personal code style or commit message format.',

599 docsLink: '/en/memory#organize-rules-with-claude/rules/',

600 children: []

601 }, {

602 id: 'global-skills',

603 label: 'skills/',

604 type: 'folder',

605 icon: 'folder',

606 color: '#D4A843',

607 oneLiner: 'Personal skills available in every project',

608 when: <>Invoked with <C>/skill-name</C> in any project</>,

609 description: 'Skills you built for yourself that work everywhere. Same structure as project skills: each is a folder with SKILL.md, scoped to your user account instead of a single project.',

610 docsLink: '/en/skills',

611 children: []

612 }, {

613 id: 'global-commands',

614 label: 'commands/',

615 type: 'folder',

616 icon: 'folder',

617 color: '#788C5D',

618 oneLiner: 'Personal single-file commands available in every project',

619 note: commandsNote,

620 when: <>User types <C>/command-name</C> in any project</>,

621 description: 'Same as project commands/ but scoped to your user account. Each markdown file becomes a command available everywhere.',

622 docsLink: '/en/skills',

623 children: []

624 }, {

625 id: 'global-output-styles',

626 label: 'output-styles/',

627 type: 'folder',

628 icon: 'folder',

629 color: '#5AA7A7',

630 oneLiner: 'Custom system-prompt sections that adjust how Claude works',

631 when: 'Applied at session start when selected via the outputStyle setting',

632 description: [<>Each markdown file defines an output style: a section appended to the system prompt that, by default, also drops the built-in software-engineering task instructions. Use this to adapt Claude Code for uses beyond coding, or to add teaching or review modes.</>, <>Select a built-in or custom style with <C>/config</C> or the <C>outputStyle</C> key in settings. Styles here are available in every project; project-level styles with the same name take precedence.</>],

633 tips: ['Built-in styles Explanatory and Learning are included with Claude Code; custom styles go here', <>Set <C>keep-coding-instructions: true</C> in frontmatter to keep the default task instructions alongside your additions</>, 'Changes take effect on the next session since the system prompt is fixed at startup for caching'],

634 docsLink: '/en/output-styles',

635 children: [{

636 id: 'output-style-example',

637 label: 'teaching.md',

638 type: 'file',

639 icon: 'md',

640 color: '#5AA7A7',

641 badge: 'local',

642 oneLiner: 'Example style that adds explanations and leaves small changes for you',

643 when: <>Active when <C>outputStyle</C> in settings is set to <C>teaching</C></>,

644 description: <>This style appends instructions to the system prompt: Claude adds a "Why this approach" note after each task and leaves TODO(human) markers for changes under 10 lines instead of writing them itself. Select it by setting <C>outputStyle</C> to the filename without .md, or to the <C>name</C> field if you set one in frontmatter.</>,

645 example: `---

646description: Explains reasoning and asks you to implement small pieces

647keep-coding-instructions: true

648---

649 

650After completing each task, add a brief "Why this approach" note

651explaining the key design decision.

652 

653When a change is under 10 lines, ask the user to implement it

654themselves by leaving a TODO(human) marker instead of writing it.`

655 }]

656 }, {

657 id: 'global-agents',

658 label: 'agents/',

659 type: 'folder',

660 icon: 'folder',

661 color: '#C46686',

662 oneLiner: 'Personal subagents available in every project',

663 when: 'Claude delegates or you @-mention in any project',

664 description: 'Subagents defined here are available across all your projects. Same format as project agents.',

665 docsLink: '/en/sub-agents',

666 children: []

667 }, {

668 id: 'global-agent-memory',

669 label: 'agent-memory/',

670 type: 'folder',

671 icon: 'folder',

672 color: '#C46686',

673 autogen: true,

674 oneLiner: <>Persistent memory for subagents with <C>memory: user</C></>,

675 when: 'Loaded into the subagent system prompt when the subagent starts',

676 description: <>Subagents with <C>memory: user</C> in their frontmatter store knowledge here that persists across all projects. For project-scoped subagent memory, see <C>.claude/agent-memory/</C> instead.</>,

677 docsLink: '/en/sub-agents#enable-persistent-memory',

678 children: []

679 }]

680 }]

681 }

682 }), []);

683 const BADGE_STYLES = useMemo(() => ({

684 committed: {

685 bg: 'rgba(85,138,66,0.08)',

686 color: 'var(--ce-badge-committed)',

687 border: 'rgba(85,138,66,0.15)',

688 label: 'committed'

689 },

690 gitignored: {

691 bg: 'rgba(217,119,87,0.06)',

692 color: 'var(--ce-badge-gitignored)',

693 border: 'rgba(217,119,87,0.15)',

694 label: 'gitignored'

695 },

696 local: {

697 bg: 'rgba(115,114,108,0.06)',

698 color: 'var(--ce-badge-local)',

699 border: 'rgba(115,114,108,0.12)',

700 label: 'local only'

701 },

702 autogen: {

703 bg: 'rgba(232,164,92,0.1)',

704 color: 'var(--ce-badge-autogen)',

705 border: 'rgba(232,164,92,0.2)',

706 label: 'Claude writes'

707 }

708 }), []);

709 const allNodes = useMemo(() => {

710 const flatten = (nodes, acc, path, parentId) => {

711 for (const node of nodes) {

712 const nextPath = [...path, node.label];

713 acc[node.id] = {

714 ...node,

715 path: nextPath,

716 parentId

717 };

718 if (node.children) flatten(node.children, acc, nextPath, node.id);

719 }

720 return acc;

721 };

722 const project = flatten(FILE_TREE.project.children, {}, [FILE_TREE.project.label]);

723 const global = flatten(FILE_TREE.global.children, {}, [FILE_TREE.global.label]);

724 for (const id in project) project[id].root = 'project';

725 for (const id in global) global[id].root = 'global';

726 return {

727 ...project,

728 ...global

729 };

730 }, [FILE_TREE]);

731 const allFolderIds = useMemo(() => Object.keys(allNodes).filter(id => allNodes[id].type === 'folder'), [allNodes]);

732 const DEFAULT_EXPANDED = ['dot-claude', 'rules', 'skills', 'skill-review', 'commands', 'agents', 'agent-memory', 'agent-memory-sub', 'global-dot-claude', 'global-output-styles', 'global-projects', 'memory-dir'];

733 const [mounted, setMounted] = useState(false);

734 const [activeRoot, setActiveRoot] = useState('project');

735 const [selectedId, setSelectedId] = useState('claude-md');

736 const [expandedFolders, setExpandedFolders] = useState(() => new Set(DEFAULT_EXPANDED));

737 const [forceMobile, setForceMobile] = useState(false);

738 const [copiedId, setCopiedId] = useState(null);

739 const [isFullscreen, setIsFullscreen] = useState(false);

740 const copyTimeoutRef = useRef(null);

741 const rootRef = useRef(null);

742 useEffect(() => {

743 setMounted(true);

744 const applyHash = scroll => {

745 const hash = window.location.hash.slice(1);

746 if (!hash.startsWith('ce-')) return;

747 const id = hash.slice(3);

748 const node = allNodes[id];

749 if (!node) return;

750 setActiveRoot(node.root);

751 setSelectedId(id);

752 setExpandedFolders(new Set(allFolderIds));

753 if (scroll && rootRef.current) rootRef.current.scrollIntoView({

754 behavior: 'smooth',

755 block: 'start'

756 });

757 };

758 applyHash(false);

759 const onHashChange = () => applyHash(true);

760 const onFsChange = () => setIsFullscreen(!!document.fullscreenElement);

761 window.addEventListener('hashchange', onHashChange);

762 document.addEventListener('fullscreenchange', onFsChange);

763 return () => {

764 if (copyTimeoutRef.current) clearTimeout(copyTimeoutRef.current);

765 window.removeEventListener('hashchange', onHashChange);

766 document.removeEventListener('fullscreenchange', onFsChange);

767 };

768 }, []);

769 useEffect(() => {

770 if (!mounted || !rootRef.current) return;

771 const hash = window.location.hash.slice(1);

772 if (hash.startsWith('ce-') && allNodes[hash.slice(3)]) {

773 rootRef.current.scrollIntoView({

774 behavior: 'smooth',

775 block: 'start'

776 });

777 }

778 }, [mounted]);

779 if (!mounted) return null;

780 const selected = allNodes[selectedId];

781 const tree = FILE_TREE[activeRoot];

782 const isCopied = copiedId === selected.id;

783 const toggleFolder = id => {

784 const next = new Set(expandedFolders);

785 next.has(id) ? next.delete(id) : next.add(id);

786 setExpandedFolders(next);

787 };

788 const switchRoot = root => {

789 if (root === activeRoot) return;

790 setActiveRoot(root);

791 const firstId = FILE_TREE[root].children[0].id;

792 setSelectedId(firstId);

793 try {

794 history.replaceState(null, '', '#ce-' + firstId);

795 } catch (e) {}

796 };

797 const toggleFullscreen = () => {

798 if (!rootRef.current) return;

799 if (document.fullscreenElement) document.exitFullscreen(); else rootRef.current.requestFullscreen().catch(() => {});

800 };

801 const selectNode = n => {

802 setSelectedId(n.id);

803 if (n.type === 'folder' && !expandedFolders.has(n.id)) toggleFolder(n.id);

804 try {

805 history.replaceState(null, '', '#ce-' + n.id);

806 } catch (e) {}

807 };

808 const iconBtn = {

809 width: 28,

810 flexShrink: 0,

811 borderRadius: '6px',

812 border: 'none',

813 cursor: 'pointer',

814 background: 'transparent',

815 color: 'var(--ce-text-4)',

816 display: 'flex',

817 alignItems: 'center',

818 justifyContent: 'center'

819 };

820 const visibleFolderIds = allFolderIds.filter(id => allNodes[id].root === activeRoot);

821 const allExpanded = visibleFolderIds.every(id => expandedFolders.has(id));

822 const toggleAllFolders = () => {

823 const next = new Set(expandedFolders);

824 visibleFolderIds.forEach(id => allExpanded ? next.delete(id) : next.add(id));

825 setExpandedFolders(next);

826 };

827 const onTreeKeyDown = e => {

828 if (!['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft'].includes(e.key)) return;

829 const visible = [];

830 const walk = nodes => {

831 for (const n of nodes) {

832 visible.push(n.id);

833 if (n.children && expandedFolders.has(n.id)) walk(n.children);

834 }

835 };

836 walk(tree.children);

837 const i = visible.indexOf(selectedId);

838 if (i === -1) return;

839 e.preventDefault();

840 if (e.key === 'ArrowDown' && i < visible.length - 1) selectNode(allNodes[visible[i + 1]]); else if (e.key === 'ArrowUp' && i > 0) selectNode(allNodes[visible[i - 1]]); else if (e.key === 'ArrowRight' && selected.type === 'folder') {

841 if (!expandedFolders.has(selectedId)) toggleFolder(selectedId); else if (selected.children && selected.children.length) selectNode(allNodes[selected.children[0].id]);

842 } else if (e.key === 'ArrowLeft') {

843 if (selected.type === 'folder' && expandedFolders.has(selectedId)) toggleFolder(selectedId); else if (selected.parentId) selectNode(allNodes[selected.parentId]);

844 }

845 };

846 const copyExample = (id, text) => {

847 const done = () => {

848 setCopiedId(id);

849 if (copyTimeoutRef.current) clearTimeout(copyTimeoutRef.current);

850 copyTimeoutRef.current = setTimeout(() => setCopiedId(null), 2000);

851 };

852 const fallback = () => {

853 const ta = document.createElement('textarea');

854 ta.value = text;

855 ta.style.position = 'fixed';

856 ta.style.opacity = '0';

857 document.body.appendChild(ta);

858 ta.select();

859 try {

860 if (document.execCommand('copy')) done();

861 } catch (e) {}

862 document.body.removeChild(ta);

863 };

864 if (navigator.clipboard) {

865 navigator.clipboard.writeText(text).then(done, fallback);

866 } else {

867 fallback();

868 }

869 };

870 const renderIcon = (icon, color, size) => {

871 const sz = size || 14;

872 if (icon === 'folder') {

873 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

874 <path d="M1.5 3.5a1 1 0 0 1 1-1h2.6l1 1.2h5.4a1 1 0 0 1 1 1v5.8a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1V3.5z" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

875 </svg>;

876 }

877 if (icon === 'json') {

878 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

879 <rect x="2" y="1.5" width="10" height="11" rx="1.5" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

880 <text x="7" y="9" fontSize="6" fontFamily="monospace" fill={color} textAnchor="middle" fontWeight="700">{'{}'}</text>

881 </svg>;

882 }

883 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

884 <rect x="2" y="1.5" width="10" height="11" rx="1.5" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

885 <line x1="4.5" y1="5" x2="9.5" y2="5" stroke={color} strokeWidth="1" />

886 <line x1="4.5" y1="7" x2="9.5" y2="7" stroke={color} strokeWidth="1" />

887 <line x1="4.5" y1="9" x2="8" y2="9" stroke={color} strokeWidth="1" />

888 </svg>;

889 };

890 const renderNode = (node, depth) => {

891 const isFolder = node.type === 'folder';

892 const isExpanded = expandedFolders.has(node.id);

893 const isSelected = selectedId === node.id;

894 return <div key={node.id}>

895 <button role="treeitem" tabIndex={-1} onClick={() => selectNode(node)} aria-selected={isSelected} aria-expanded={isFolder ? isExpanded : undefined} style={{

896 display: 'flex',

897 alignItems: 'center',

898 gap: '5px',

899 width: '100%',

900 padding: `4px 8px 4px ${8 + depth * 16}px`,

901 background: isSelected ? 'var(--ce-accent-bg)' : 'transparent',

902 borderTop: 'none',

903 borderRight: 'none',

904 borderBottom: 'none',

905 borderLeft: isSelected ? '2px solid var(--ce-accent)' : '2px solid transparent',

906 outline: 'none',

907 cursor: 'pointer',

908 textAlign: 'left',

909 fontFamily: 'var(--ce-mono)',

910 fontSize: '13.5px',

911 color: isSelected ? 'var(--ce-accent)' : 'var(--ce-text-2)',

912 fontWeight: isSelected ? 550 : 400,

913 transition: 'all 0.1s'

914 }}>

915 {isFolder ? <span onClick={e => {

916 e.stopPropagation();

917 toggleFolder(node.id);

918 }} style={{

919 fontSize: '14px',

920 color: 'var(--ce-text-4)',

921 width: '20px',

922 height: '20px',

923 display: 'inline-flex',

924 alignItems: 'center',

925 justifyContent: 'center',

926 cursor: 'pointer',

927 borderRadius: '4px',

928 marginLeft: '-6px',

929 flexShrink: 0

930 }} onMouseEnter={e => {

931 e.currentTarget.style.background = 'var(--ce-arrow-hover)';

932 e.currentTarget.style.color = 'var(--ce-text-2)';

933 }} onMouseLeave={e => {

934 e.currentTarget.style.background = 'transparent';

935 e.currentTarget.style.color = 'var(--ce-text-4)';

936 }}>{isExpanded ? '▾' : '▸'}</span> : <span style={{

937 width: '14px',

938 flexShrink: 0

939 }} />}

940 {renderIcon(node.icon, node.color)}

941 <span style={{

942 flex: 1,

943 overflow: 'hidden',

944 textOverflow: 'ellipsis',

945 whiteSpace: 'nowrap'

946 }}>{node.label}</span>

947 {node.badge && BADGE_STYLES[node.badge] && <span title={BADGE_STYLES[node.badge].label} style={{

948 width: 6,

949 height: 6,

950 borderRadius: '50%',

951 background: BADGE_STYLES[node.badge].color,

952 flexShrink: 0,

953 opacity: 0.7

954 }} />}

955 </button>

956 {isFolder && isExpanded && node.children && <div role="group">{node.children.map(child => renderNode(child, depth + 1))}</div>}

957 </div>;

958 };

959 return <>

960 <style>{`

961 .ce-root {

962 --ce-mono: var(--font-mono, ui-monospace, monospace);

963 --ce-accent: #D97757;

964 --ce-accent-bg: rgba(217,119,87,0.06);

965 --ce-accent-border: rgba(217,119,87,0.12);

966 --ce-bg: #fff;

967 --ce-surface: #FAFAF7;

968 --ce-surface-hover: #F0EEE6;

969 --ce-border: #E8E6DC;

970 --ce-border-subtle: #F0EEE6;

971 --ce-text: #141413;

972 --ce-text-2: #5E5D59;

973 --ce-text-3: #73726C;

974 --ce-text-4: #9C9A92;

975 --ce-text-5: #B8B6AE;

976 --ce-sep: #D1CFC5;

977 --ce-code-header: #F5F4ED;

978 --ce-code-bg: #1A1918;

979 --ce-arrow-hover: rgba(0,0,0,0.08);

980 --ce-badge-committed: #3d6b2e;

981 --ce-badge-gitignored: #b85c3a;

982 --ce-badge-local: #5e5d59;

983 --ce-badge-autogen: #b07520;

984 --ce-when-text: #4a7fb5;

985 }

986 .dark .ce-root {

987 --ce-bg: #1a1918;

988 --ce-surface: #232221;

989 --ce-surface-hover: #2e2d2b;

990 --ce-border: #3a3936;

991 --ce-border-subtle: #2e2d2b;

992 --ce-text: #e8e6dc;

993 --ce-text-2: #c4c2b8;

994 --ce-text-3: #9c9a92;

995 --ce-text-4: #73726c;

996 --ce-text-5: #5e5d59;

997 --ce-sep: #4a4946;

998 --ce-code-header: #2e2d2b;

999 --ce-code-bg: #0d0d0c;

1000 --ce-arrow-hover: rgba(255,255,255,0.08);

1001 --ce-badge-committed: #6fa85c;

1002 --ce-badge-gitignored: #e08a60;

1003 --ce-badge-local: #9c9a92;

1004 --ce-badge-autogen: #e8a45c;

1005 --ce-when-text: #8bb4e0;

1006 }

1007 .ce-mobile-fallback { display: none; border: 1px solid rgba(0,0,0,0.1); background: rgba(0,0,0,0.03); }

1008 .dark .ce-mobile-fallback { border-color: rgba(255,255,255,0.15); background: rgba(255,255,255,0.04); }

1009 @media (max-width: 700px) {

1010 .ce-root:not(.ce-force) { display: none !important; }

1011 .ce-mobile-fallback { display: block; }

1012 }

1013 `}</style>

1014 {!forceMobile && <div className="ce-mobile-fallback" style={{

1015 padding: '14px 16px',

1016 borderRadius: '8px',

1017 fontSize: '14px'

1018 }}>

1019 The interactive explorer works best on a larger screen. See the <a href="#file-reference" style={{

1020 color: '#D97757'

1021 }}>file reference table</a> below, or <button onClick={() => setForceMobile(true)} style={{

1022 border: 'none',

1023 background: 'none',

1024 padding: 0,

1025 color: '#D97757',

1026 textDecoration: 'underline',

1027 cursor: 'pointer',

1028 font: 'inherit'

1029 }}>show the explorer anyway</button>.

1030 </div>}

1031 <div ref={rootRef} className={forceMobile ? 'ce-root ce-force' : 'ce-root'} style={{

1032 borderRadius: isFullscreen ? 0 : '12px',

1033 border: '1px solid var(--ce-border)',

1034 background: 'var(--ce-bg)',

1035 display: 'flex',

1036 alignItems: 'stretch',

1037 overflow: 'hidden',

1038 fontFamily: 'var(--font-sans, -apple-system, sans-serif)',

1039 ...isFullscreen && ({

1040 height: '100vh'

1041 })

1042 }}>

1043 {}

1044 <div style={{

1045 width: 'min(240px, 35%)',

1046 minWidth: '180px',

1047 flexShrink: 0,

1048 borderRight: '1px solid var(--ce-border-subtle)',

1049 background: 'var(--ce-surface)',

1050 display: 'flex',

1051 flexDirection: 'column'

1052 }}>

1053 <div style={{

1054 padding: '8px 8px 4px',

1055 borderBottom: '1px solid var(--ce-border-subtle)',

1056 display: 'flex',

1057 gap: '4px'

1058 }}>

1059 {['project', 'global'].map(root => <button key={root} onClick={() => switchRoot(root)} style={{

1060 flex: 1,

1061 padding: '6px 0',

1062 borderRadius: '6px',

1063 border: 'none',

1064 cursor: 'pointer',

1065 fontFamily: 'var(--ce-mono)',

1066 fontSize: '11.5px',

1067 background: activeRoot === root ? 'var(--ce-accent-bg)' : 'transparent',

1068 color: activeRoot === root ? 'var(--ce-accent)' : 'var(--ce-text-4)',

1069 fontWeight: activeRoot === root ? 600 : 430

1070 }}>

1071 {root === 'project' ? 'Project' : 'Global (~/)'}

1072 </button>)}

1073 <button onClick={toggleAllFolders} title={allExpanded ? 'Collapse all' : 'Expand all'} style={{

1074 ...iconBtn,

1075 fontSize: 11

1076 }}>

1077 {allExpanded ? '⊟' : '⊞'}

1078 </button>

1079 <button onClick={toggleFullscreen} title={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'} style={{

1080 ...iconBtn,

1081 fontSize: 13

1082 }}>

1083 {isFullscreen ? '⤡' : '⛶'}

1084 </button>

1085 </div>

1086 <div role="tree" aria-label="Configuration files" tabIndex={0} onKeyDown={onTreeKeyDown} style={{

1087 padding: '6px 0',

1088 overflowY: 'auto',

1089 flex: 1,

1090 outline: 'none'

1091 }}>

1092 {tree.children.map(node => renderNode(node, 0))}

1093 </div>

1094 </div>

1095 

1096 {}

1097 <div style={{

1098 flex: 1,

1099 minWidth: 0,

1100 padding: '20px 24px',

1101 minHeight: '400px',

1102 overflowY: 'auto'

1103 }}>

1104 <span aria-live="polite" style={{

1105 position: 'absolute',

1106 width: 1,

1107 height: 1,

1108 overflow: 'hidden',

1109 clip: 'rect(0 0 0 0)'

1110 }}>{selected.label} selected</span>

1111 {}

1112 <div style={{

1113 fontFamily: 'var(--ce-mono)',

1114 fontSize: '11px',

1115 color: 'var(--ce-text-4)',

1116 marginBottom: '10px',

1117 cursor: 'default'

1118 }}>

1119 {selected.path.map((seg, i) => <span key={i}>

1120 <span style={{

1121 color: i === selected.path.length - 1 ? 'var(--ce-accent)' : 'var(--ce-text-4)'

1122 }}>{seg.replace(/\/$/, '')}</span>

1123 {i < selected.path.length - 1 && <span style={{

1124 color: 'var(--ce-sep)'

1125 }}> / </span>}

1126 </span>)}

1127 </div>

1128 

1129 {}

1130 <div style={{

1131 display: 'flex',

1132 alignItems: 'flex-start',

1133 gap: '10px',

1134 marginBottom: '10px'

1135 }}>

1136 <span style={{

1137 flexShrink: 0,

1138 display: 'flex'

1139 }}>{renderIcon(selected.icon, selected.color, 24)}</span>

1140 <div style={{

1141 flex: 1,

1142 minWidth: 0

1143 }}>

1144 <div style={{

1145 fontSize: '22px',

1146 fontWeight: 600,

1147 color: 'var(--ce-text)',

1148 letterSpacing: '-0.3px',

1149 lineHeight: '26px'

1150 }}>{selected.label}</div>

1151 {selected.oneLiner && <div style={{

1152 fontSize: '15px',

1153 color: 'var(--ce-text-3)',

1154 marginTop: '3px'

1155 }}>{selected.oneLiner}</div>}

1156 </div>

1157 <div style={{

1158 display: 'flex',

1159 gap: '4px',

1160 flexShrink: 0

1161 }}>

1162 {[selected.autogen && 'autogen', selected.badge].filter(Boolean).map(k => {

1163 const s = BADGE_STYLES[k];

1164 if (!s) return null;

1165 return <span key={k} style={{

1166 fontFamily: 'var(--ce-mono)',

1167 fontSize: '10px',

1168 fontWeight: 600,

1169 textTransform: 'uppercase',

1170 letterSpacing: '0.3px',

1171 padding: '2px 6px',

1172 borderRadius: '4px',

1173 background: s.bg,

1174 color: s.color,

1175 border: `0.5px solid ${s.border}`

1176 }}>{s.label}</span>;

1177 })}

1178 </div>

1179 </div>

1180 

1181 {}

1182 {selected.note && <div style={{

1183 padding: '10px 12px',

1184 borderRadius: '8px',

1185 marginBottom: '14px',

1186 background: 'rgba(217,119,87,0.06)',

1187 border: '1px solid rgba(217,119,87,0.2)',

1188 borderLeft: '3px solid var(--ce-accent)',

1189 fontSize: '15px',

1190 color: 'var(--ce-text-2)',

1191 lineHeight: 1.6

1192 }}>

1193 {selected.note}

1194 </div>}

1195 

1196 {}

1197 {selected.when && <div style={{

1198 padding: '8px 12px',

1199 borderRadius: '6px',

1200 background: 'rgba(106,155,204,0.06)',

1201 border: '0.5px solid rgba(106,155,204,0.12)',

1202 fontSize: '15px',

1203 color: 'var(--ce-when-text)',

1204 marginBottom: '16px'

1205 }}>

1206 <div style={{

1207 fontSize: '10px',

1208 fontWeight: 700,

1209 textTransform: 'uppercase',

1210 letterSpacing: '0.4px',

1211 opacity: 0.65,

1212 marginBottom: '3px'

1213 }}>When it loads</div>

1214 <div style={{

1215 fontWeight: 500

1216 }}>{selected.when}</div>

1217 </div>}

1218 

1219 {}

1220 {selected.description && <div style={{

1221 fontSize: '16px',

1222 color: 'var(--ce-text-2)',

1223 lineHeight: 1.65,

1224 marginBottom: '16px'

1225 }}>

1226 {Array.isArray(selected.description) ? selected.description.map((para, i) => <div key={i} style={{

1227 marginBottom: i < selected.description.length - 1 ? '12px' : 0

1228 }}>{para}</div>) : selected.description}

1229 </div>}

1230 

1231 {}

1232 {selected.contains && selected.contains.length > 0 && <div style={{

1233 marginBottom: '16px'

1234 }}>

1235 <div style={{

1236 fontSize: '11px',

1237 fontWeight: 700,

1238 color: 'var(--ce-text-4)',

1239 textTransform: 'uppercase',

1240 letterSpacing: '0.4px',

1241 marginBottom: '8px'

1242 }}>Common keys</div>

1243 {selected.contains.map((item, i) => <div key={i} style={{

1244 display: 'flex',

1245 gap: '7px',

1246 fontSize: '15px',

1247 color: 'var(--ce-text-2)',

1248 lineHeight: 1.5,

1249 marginBottom: '5px'

1250 }}>

1251 <span style={{

1252 fontSize: '7px',

1253 color: 'var(--ce-text-4)',

1254 marginTop: '6px'

1255 }}>●</span>

1256 <span>{item}</span>

1257 </div>)}

1258 </div>}

1259 

1260 {}

1261 {selected.tips && selected.tips.length > 0 && <div style={{

1262 padding: '12px 14px',

1263 borderRadius: '8px',

1264 background: 'var(--ce-surface)',

1265 border: '1px solid var(--ce-border-subtle)',

1266 marginBottom: '16px'

1267 }}>

1268 <div style={{

1269 fontSize: '11px',

1270 fontWeight: 700,

1271 color: 'var(--ce-accent)',

1272 textTransform: 'uppercase',

1273 letterSpacing: '0.4px',

1274 marginBottom: '6px'

1275 }}>Tips</div>

1276 {selected.tips.map((tip, i) => <div key={i} style={{

1277 display: 'flex',

1278 gap: '7px',

1279 fontSize: '14.5px',

1280 color: 'var(--ce-text-2)',

1281 marginBottom: i < selected.tips.length - 1 ? '5px' : 0

1282 }}>

1283 <span style={{

1284 fontSize: '7px',

1285 color: 'var(--ce-accent)',

1286 marginTop: '6px'

1287 }}>●</span>

1288 <span>{tip}</span>

1289 </div>)}

1290 </div>}

1291 

1292 {}

1293 {selected.example && <div style={{

1294 marginBottom: '16px'

1295 }}>

1296 {selected.exampleIntro && <div style={{

1297 fontSize: '15px',

1298 color: 'var(--ce-text-2)',

1299 lineHeight: 1.6,

1300 marginBottom: '10px'

1301 }}>

1302 {selected.exampleIntro}

1303 </div>}

1304 <div style={{

1305 display: 'flex',

1306 justifyContent: 'space-between',

1307 alignItems: 'center',

1308 padding: '6px 10px',

1309 background: 'var(--ce-code-header)',

1310 border: '1px solid var(--ce-border)',

1311 borderRadius: '8px 8px 0 0'

1312 }}>

1313 <span style={{

1314 fontFamily: 'var(--ce-mono)',

1315 fontSize: '11px',

1316 fontWeight: 600,

1317 color: 'var(--ce-text-3)'

1318 }}>{selected.label}</span>

1319 <button onClick={() => copyExample(selected.id, selected.example)} style={{

1320 padding: '3px 8px',

1321 borderRadius: '4px',

1322 fontSize: '11px',

1323 fontWeight: 600,

1324 cursor: 'pointer',

1325 transition: 'all 0.15s',

1326 background: isCopied ? 'rgba(85,138,66,0.08)' : 'var(--ce-code-header)',

1327 border: isCopied ? '0.5px solid rgba(85,138,66,0.2)' : '0.5px solid var(--ce-border)',

1328 color: isCopied ? '#558A42' : 'var(--ce-text-3)'

1329 }}>

1330 {isCopied ? '✓ Copied' : 'Copy'}

1331 </button>

1332 </div>

1333 <pre style={{

1334 margin: 0,

1335 padding: '12px 14px',

1336 background: 'var(--ce-code-bg)',

1337 color: '#E8E6DC',

1338 fontFamily: 'var(--ce-mono)',

1339 fontSize: '13px',

1340 lineHeight: 1.65,

1341 borderRadius: '0 0 8px 8px',

1342 overflowX: 'auto',

1343 whiteSpace: 'pre'

1344 }}>{selected.example}</pre>

1345 </div>}

1346 

1347 {}

1348 {selected.docsLink && <a href={selected.docsLink} style={{

1349 display: 'inline-flex',

1350 padding: '5px 12px',

1351 borderRadius: '6px',

1352 background: 'var(--ce-accent-bg)',

1353 border: '1px solid var(--ce-accent-border)',

1354 color: 'var(--ce-accent)',

1355 fontSize: '12px',

1356 fontWeight: 600,

1357 textDecoration: 'none'

1358 }}>Full docs →</a>}

1359 

1360 {}

1361 {selected.children && selected.children.length > 0 && <div style={{

1362 marginTop: '20px'

1363 }}>

1364 <div style={{

1365 fontSize: '11px',

1366 fontWeight: 700,

1367 color: 'var(--ce-text-4)',

1368 textTransform: 'uppercase',

1369 letterSpacing: '0.4px',

1370 marginBottom: '8px'

1371 }}>Contents</div>

1372 <div style={{

1373 display: 'flex',

1374 flexDirection: 'column',

1375 gap: '4px'

1376 }}>

1377 {selected.children.map(child => <button key={child.id} onClick={() => selectNode(child)} style={{

1378 display: 'flex',

1379 alignItems: 'center',

1380 gap: '8px',

1381 padding: '6px 8px',

1382 width: '100%',

1383 background: 'var(--ce-surface)',

1384 borderRadius: '6px',

1385 border: 'none',

1386 cursor: 'pointer',

1387 textAlign: 'left',

1388 transition: 'background 0.1s'

1389 }} onMouseEnter={e => e.currentTarget.style.background = 'var(--ce-surface-hover)'} onMouseLeave={e => e.currentTarget.style.background = 'var(--ce-surface)'}>

1390 {renderIcon(child.icon, child.color, 13)}

1391 <span style={{

1392 fontFamily: 'var(--ce-mono)',

1393 fontSize: '12px',

1394 color: 'var(--ce-text-2)'

1395 }}>{child.label}</span>

1396 {child.oneLiner && <span style={{

1397 fontSize: '11px',

1398 color: 'var(--ce-text-4)',

1399 overflow: 'hidden',

1400 textOverflow: 'ellipsis',

1401 whiteSpace: 'nowrap'

1402 }}>{child.oneLiner}</span>}

1403 </button>)}

1404 </div>

1405 </div>}

1406 </div>

1407 </div>

1408 </>;

1409};

1410 

1411Claude Code liest Anweisungen, Einstellungen, Skills, Subagents und Memory aus Ihrem Projektverzeichnis und aus `~/.claude` in Ihrem Home-Verzeichnis. Committen Sie Projektdateien zu git, um sie mit Ihrem Team zu teilen; Dateien in `~/.claude` sind persönliche Konfiguration, die für alle Ihre Projekte gilt.

1412 

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

1414 

1415Die meisten Benutzer bearbeiten nur `CLAUDE.md` und `settings.json`. Der Rest des Verzeichnisses ist optional: Fügen Sie Skills, Rules oder Subagents hinzu, wenn Sie sie benötigen.

1416 

1417## Erkunden Sie das Verzeichnis

1418 

1419Klicken Sie auf Dateien im Baum, um zu sehen, was jede Datei tut, wann sie geladen wird, und ein Beispiel.

1420 

1421<ClaudeExplorer />

1422 

1423## Was nicht angezeigt wird

1424 

1425Der Explorer behandelt Dateien, die Sie erstellen und bearbeiten. Ein paar verwandte Dateien befinden sich an anderen Orten:

1426 

1427| Datei | Ort | Zweck |

1428| ----------------------- | -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1429| `managed-settings.json` | Systemebene, variiert je nach Betriebssystem | Von Unternehmen erzwungene Einstellungen, die Sie nicht überschreiben können. Siehe [servergesteuerte Einstellungen](/de/server-managed-settings). |

1430| `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. |

1431| Installierte Plugins | `~/.claude/plugins` | Geklonte Marketplaces, installierte Plugin-Versionen und Pro-Plugin-Daten, verwaltet durch `claude plugin`-Befehle. Verwaiste Versionen werden 7 Tage nach einem Plugin-Update oder einer Deinstallation gelöscht. Siehe [Plugin-Caching](/de/plugins-reference#plugin-caching-and-file-resolution). |

1432 

1433`~/.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.

1434 

1435## Wählen Sie die richtige Datei

1436 

1437Verschiedene Arten von Anpassungen befinden sich in verschiedenen Dateien. Verwenden Sie diese Tabelle, um zu finden, wo eine Änderung hingehört.

1438 

1439| Sie möchten | Bearbeiten | Bereich | Referenz |

1440| :------------------------------------------------------------------------ | :----------------------------------------- | :------------------ | :---------------------------------------------------- |

1441| Claude Projektkontext und Konventionen geben | `CLAUDE.md` | Projekt oder global | [Memory](/de/memory) |

1442| Spezifische Tool-Aufrufe zulassen oder blockieren | `settings.json` `permissions` oder `hooks` | Projekt oder global | [Berechtigungen](/de/permissions), [Hooks](/de/hooks) |

1443| Ein Skript vor oder nach Tool-Aufrufen ausführen | `settings.json` `hooks` | Projekt oder global | [Hooks](/de/hooks) |

1444| Umgebungsvariablen für die Sitzung setzen | `settings.json` `env` | Projekt oder global | [Einstellungen](/de/settings#available-settings) |

1445| Persönliche Überschreibungen aus git halten | `settings.local.json` | Nur Projekt | [Einstellungsbereiche](/de/settings#settings-files) |

1446| Einen Prompt oder eine Fähigkeit hinzufügen, die Sie mit `/name` aufrufen | `skills/<name>/SKILL.md` | Projekt oder global | [Skills](/de/skills) |

1447| Einen spezialisierten Subagent mit seinen eigenen Tools definieren | `agents/*.md` | Projekt oder global | [Subagents](/de/sub-agents) |

1448| Externe Tools über MCP verbinden | `.mcp.json` | Nur Projekt | [MCP](/de/mcp) |

1449| Ändern Sie, wie Claude Antworten formatiert | `output-styles/*.md` | Projekt oder global | [Ausgabestile](/de/output-styles) |

1450 

1451## Dateireferenz

1452 

1453Diese Tabelle listet jede Datei auf, die der Explorer behandelt. Dateien im Projektbereich befinden sich in Ihrem Repo unter `.claude/` (oder im Stammverzeichnis für `CLAUDE.md`, `.mcp.json` und `.worktreeinclude`). Dateien im globalen Bereich befinden sich in `~/.claude/` und gelten für alle Projekte.

1454 

1455<Note>

1456 Mehrere Dinge können das überschreiben, was Sie in diese Dateien eingeben:

1457 

1458 * [Verwaltete Einstellungen](/de/server-managed-settings), die von Ihrer Organisation bereitgestellt werden, haben Vorrang vor allem anderen

1459 * CLI-Flags wie `--permission-mode` oder `--settings` überschreiben `settings.json` für diese Sitzung

1460 * Einige Umgebungsvariablen haben Vorrang vor ihrer entsprechenden Einstellung, aber dies variiert: Überprüfen Sie die [Umgebungsvariablenreferenz](/de/env-vars) für jede einzelne

1461 

1462 Siehe [Einstellungspriorität](/de/settings#settings-precedence) für die vollständige Reihenfolge.

1463</Note>

1464 

1465Klicken Sie auf einen Dateinamen, um diesen Knoten im Explorer oben zu öffnen.

1466 

1467| Datei | Bereich | Commit | Was es tut | Referenz |

1468| --------------------------------------------------- | ------------------ | ------ | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------- |

1469| [`CLAUDE.md`](#ce-claude-md) | Projekt und global | ✓ | Anweisungen, die jede Sitzung geladen werden | [Memory](/de/memory) |

1470| [`rules/*.md`](#ce-rules) | Projekt und global | ✓ | Themenbezogene Anweisungen, optional pfadgesteuert | [Rules](/de/memory#organize-rules-with-claude/rules/) |

1471| [`settings.json`](#ce-settings-json) | Projekt und global | ✓ | Berechtigungen, Hooks, Umgebungsvariablen, Modellstandards | [Einstellungen](/de/settings) |

1472| [`settings.local.json`](#ce-settings-local-json) | Nur Projekt | | Ihre persönlichen Überschreibungen, automatisch gitignoriert | [Einstellungsbereiche](/de/settings#settings-files) |

1473| [`.mcp.json`](#ce-mcp-json) | Nur Projekt | ✓ | Team-gemeinsame MCP-Server | [MCP-Bereiche](/de/mcp#mcp-installation-scopes) |

1474| [`.worktreeinclude`](#ce-worktreeinclude) | Nur Projekt | ✓ | Gitignorierte Dateien zum Kopieren in neue Worktrees | [Worktrees](/de/common-workflows#copy-gitignored-files-to-worktrees) |

1475| [`skills/<name>/SKILL.md`](#ce-skills) | Projekt und global | ✓ | Wiederverwendbare Prompts, aufgerufen mit `/name` oder automatisch aufgerufen | [Skills](/de/skills) |

1476| [`commands/*.md`](#ce-commands) | Projekt und global | ✓ | Einzeldatei-Prompts; gleicher Mechanismus wie Skills | [Skills](/de/skills) |

1477| [`output-styles/*.md`](#ce-output-styles) | Projekt und global | ✓ | Benutzerdefinierte System-Prompt-Abschnitte | [Ausgabestile](/de/output-styles) |

1478| [`agents/*.md`](#ce-agents) | Projekt und global | ✓ | Subagent-Definitionen mit eigenem Prompt und Tools | [Subagents](/de/sub-agents) |

1479| [`agent-memory/<name>/`](#ce-agent-memory) | Projekt und global | ✓ | Persistentes Memory für Subagents | [Persistentes Memory](/de/sub-agents#enable-persistent-memory) |

1480| [`~/.claude.json`](#ce-claude-json) | Nur global | | App-Status, OAuth, UI-Umschalter, persönliche MCP-Server | [Globale Konfiguration](/de/settings#global-config-settings) |

1481| [`projects/<project>/memory/`](#ce-global-projects) | Nur global | | Auto Memory: Claudes Notizen für sich selbst über Sitzungen hinweg | [Auto Memory](/de/memory#auto-memory) |

1482| [`keybindings.json`](#ce-keybindings) | Nur global | | Benutzerdefinierte Tastenkombinationen | [Tastenkombinationen](/de/keybindings) |

1483| [`themes/*.json`](#ce-themes) | Nur global | | Benutzerdefinierte Farbthemen | [Benutzerdefinierte Designs](/de/terminal-config#create-a-custom-theme) |

1484 

1485## Fehlerbehebung bei der Konfiguration

1486 

1487Wenn eine Einstellung, ein Hook oder eine Datei nicht wirksam wird, siehe [Debuggen Sie Ihre Konfiguration](/de/debug-your-config) für die Inspektionsbefehle und eine Symptom-erste Nachschlagetabelle.

1488 

1489## Anwendungsdaten

1490 

1491Über die Konfiguration, die Sie erstellen, hinaus, enthält `~/.claude` Daten, die Claude Code während Sitzungen schreibt. Diese Dateien sind Klartext. Alles, das durch ein Tool läuft, landet in einem Transkript auf der Festplatte: Dateiinhalte, Befehlsausgabe, eingefügter Text.

1492 

1493### Automatisch bereinigt

1494 

1495Dateien in den folgenden Pfaden werden beim Start gelöscht, sobald sie älter als [`cleanupPeriodDays`](/de/settings#available-settings) sind. Der Standard ist 30 Tage.

1496 

1497| Pfad unter `~/.claude/` | Inhalte |

1498| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1499| `projects/<project>/<session>.jsonl` | Vollständiges Gesprächstranskript: jede Nachricht, jeder Tool-Aufruf und jedes Tool-Ergebnis |

1500| `projects/<project>/<session>/tool-results/` | Große Tool-Ausgaben, die in separate Dateien verschoben werden |

1501| `file-history/<session>/` | Vor-Bearbeitungs-Snapshots von Dateien, die Claude geändert hat, verwendet für [Checkpoint-Wiederherstellung](/de/checkpointing) |

1502| `plans/` | Plan-Dateien, die während des [Plan-Modus](/de/permission-modes#analyze-before-you-edit-with-plan-mode) geschrieben werden |

1503| `debug/` | Pro-Sitzungs-Debug-Logs, geschrieben nur, wenn Sie mit `--debug` starten oder `/debug` ausführen |

1504| `paste-cache/`, `image-cache/` | Inhalte großer Einfügungen und angehängter Bilder |

1505| `session-env/` | Pro-Sitzungs-Umgebungsmetadaten |

1506| `tasks/` | Pro-Sitzungs-Aufgabenlisten, die von den Task-Tools geschrieben werden |

1507| `shell-snapshots/` | Erfasste Shell-Umgebung, die vom Bash-Tool verwendet wird. Wird bei sauberer Beendigung entfernt. Die Bereinigung löscht alle, die nach einem Absturz übrig bleiben. |

1508| `backups/` | Zeitgestempelte Kopien von `~/.claude.json`, die vor Konfigurationsmigrationenen erstellt werden |

1509 

1510### Behalten, bis Sie sie löschen

1511 

1512Die folgenden Pfade sind nicht durch automatische Bereinigung abgedeckt und bleiben auf unbestimmte Zeit bestehen.

1513 

1514| Pfad unter `~/.claude/` | Inhalte |

1515| ----------------------- | ------------------------------------------------------------------------------------------------------ |

1516| `history.jsonl` | Jeder Prompt, den Sie eingegeben haben, mit Zeitstempel und Projektpfad. Verwendet für Up-Arrow-Abruf. |

1517| `stats-cache.json` | Aggregierte Token- und Kostenzählungen, die von `/usage` angezeigt werden |

1518| `todos/` | Legacy-Pro-Sitzungs-Aufgabenlisten. Nicht mehr von aktuellen Versionen geschrieben; sicher zu löschen. |

1519 

1520Andere kleine Cache- und Lock-Dateien erscheinen je nachdem, welche Funktionen Sie verwenden, und können sicher gelöscht werden.

1521 

1522### Klartext-Speicherung

1523 

1524Transkripte und Verlauf sind nicht verschlüsselt im Ruhezustand. OS-Dateiberechtigungen sind der einzige Schutz. Wenn ein Tool eine `.env`-Datei liest oder ein Befehl eine Anmeldeinformation ausgibt, wird dieser Wert in `projects/<project>/<session>.jsonl` geschrieben. Um die Exposition zu reduzieren:

1525 

1526* Senken Sie `cleanupPeriodDays`, um zu verkürzen, wie lange Transkripte aufbewahrt werden

1527* Setzen Sie die Umgebungsvariable [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/de/env-vars), um das Schreiben von Transkripten und Prompt-Verlauf in jedem Modus zu überspringen. Im nicht-interaktiven Modus können Sie stattdessen `--no-session-persistence` zusammen mit `-p` übergeben oder `persistSession: false` im Agent SDK setzen.

1528* Verwenden Sie [Berechtigungsregeln](/de/permissions), um Lesevorgänge von Anmeldeinformationsdateien zu verweigern

1529 

1530### Lokale Daten löschen

1531 

1532Führen Sie `claude project purge` aus, um den Status zu löschen, den Claude Code für ein Projekt hält:

1533 

1534* Transkripte und automatisches Memory unter `projects/`

1535* Pro-Sitzungs-`tasks/`, `debug/` und `file-history/` Einträge

1536* Übereinstimmende Prompt-Zeilen in `history.jsonl`

1537* Der Projekteintrag in `~/.claude.json`

1538 

1539Der Befehl gibt den vollständigen Löschplan aus und fordert zur Bestätigung auf, bevor etwas entfernt wird.

1540 

1541Zeigen Sie den Plan in der Vorschau an, ohne etwas zu löschen:

1542 

1543```bash theme={null}

1544claude project purge ~/work/my-repo --dry-run

1545```

1546 

1547Löschen Sie mit einer einzelnen Bestätigungsaufforderung:

1548 

1549```bash theme={null}

1550claude project purge ~/work/my-repo

1551```

1552 

1553Lassen Sie den Pfad weg, um ein Projekt aus einer interaktiven Liste auszuwählen.

1554 

1555Überspringen Sie die Bestätigungsaufforderung zur Verwendung in Skripten:

1556 

1557```bash theme={null}

1558claude project purge ~/work/my-repo --yes

1559```

1560 

1561Übergeben Sie `--all` statt eines Pfads, um den Status für jedes Projekt auf einmal zu bereinigen, was `history.jsonl` vollständig löscht, anstatt es zu filtern. Übergeben Sie `-i`, um den Löschplan Schritt für Schritt durchzugehen.

1562 

1563Der Befehl lässt `shell-snapshots/` und `backups/` allein, da diese nicht projektbezogen sind, und warnt in der Plan-Ausgabe davor. Er wird mit Status 1 beendet, wenn kein Status dem angegebenen Pfad entspricht.

1564 

1565Sie können auch jeden der oben genannten Anwendungsdaten-Pfade manuell löschen. Neue Sitzungen sind nicht betroffen. Die folgende Tabelle zeigt, was Sie für vergangene Sitzungen verlieren.

1566 

1567| Löschen | Sie verlieren |

1568| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |

1569| `~/.claude/projects/` | Fortsetzen, Fortfahren und Zurückspulen für vergangene Sitzungen |

1570| `~/.claude/history.jsonl` | Up-Arrow-Prompt-Abruf |

1571| `~/.claude/file-history/` | Checkpoint-Wiederherstellung für vergangene Sitzungen |

1572| `~/.claude/stats-cache.json` | Historische Gesamtwerte, die von `/usage` angezeigt werden |

1573| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/paste-cache/`, `~/.claude/image-cache/`, `~/.claude/session-env/`, `~/.claude/tasks/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | Nichts für Benutzer sichtbar |

1574| `~/.claude/todos/` | Nichts. Legacy-Verzeichnis nicht von aktuellen Versionen geschrieben. |

1575 

1576Löschen Sie nicht `~/.claude.json`, `~/.claude/settings.json` oder `~/.claude/plugins/`: Diese enthalten Ihre Authentifizierung, Voreinstellungen und installierten Plugins.

1577 

1578## Verwandte Ressourcen

1579 

1580* [Verwalten Sie Claudes Memory](/de/memory): Schreiben und organisieren Sie CLAUDE.md, Rules und Auto Memory

1581* [Konfigurieren Sie Einstellungen](/de/settings): Setzen Sie Berechtigungen, Hooks, Umgebungsvariablen und Modellstandards

1582* [Erstellen Sie Skills](/de/skills): Bauen Sie wiederverwendbare Prompts und Workflows

1583* [Konfigurieren Sie Subagents](/de/sub-agents): Definieren Sie spezialisierte Agenten mit eigenem Kontext

cli-reference.md +129 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# CLI-Referenz

6 

7> Vollständige Referenz für die Claude Code Befehlszeilenschnittstelle, einschließlich Befehle und Flags.

8 

9## CLI-Befehle

10 

11Sie können Sitzungen starten, Inhalte weiterleiten, Gespräche fortsetzen und Updates verwalten mit diesen Befehlen:

12 

13| Befehl | Beschreibung | Beispiel |

14| :------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------- |

15| `claude` | Interaktive Sitzung starten | `claude` |

16| `claude "query"` | Interaktive Sitzung mit initialem Prompt starten | `claude "explain this project"` |

17| `claude -p "query"` | Abfrage über SDK, dann beenden | `claude -p "explain this function"` |

18| `cat file \| claude -p "query"` | Weitergeleitete Inhalte verarbeiten | `cat logs.txt \| claude -p "explain"` |

19| `claude -c` | Letzte Konversation im aktuellen Verzeichnis fortsetzen | `claude -c` |

20| `claude -c -p "query"` | Fortsetzen über SDK | `claude -c -p "Check for type errors"` |

21| `claude -r "<session>" "query"` | Sitzung nach ID oder Name fortsetzen | `claude -r "auth-refactor" "Finish this PR"` |

22| `claude update` | Auf neueste Version aktualisieren | `claude update` |

23| `claude install [version]` | Installieren oder neu installieren Sie die native Binärdatei. Akzeptiert eine Version wie `2.1.118`, oder `stable` oder `latest`. Siehe [Installieren Sie eine bestimmte Version](/de/setup#install-a-specific-version) | `claude install stable` |

24| `claude auth login` | Melden Sie sich bei Ihrem Anthropic-Konto an. Verwenden Sie `--email`, um Ihre E-Mail-Adresse vorauszufüllen, `--sso`, um SSO-Authentifizierung zu erzwingen, und `--console`, um sich mit der Anthropic Console für API-Nutzungsabrechnung anstelle eines Claude-Abonnements anzumelden | `claude auth login --console` |

25| `claude auth logout` | Abmelden von Ihrem Anthropic-Konto | `claude auth logout` |

26| `claude auth status` | Authentifizierungsstatus als JSON anzeigen. Verwenden Sie `--text` für benutzerfreundliche Ausgabe. Beendet mit Code 0, wenn angemeldet, 1, wenn nicht | `claude auth status` |

27| `claude agents` | Alle konfigurierten [Subagenten](/de/sub-agents) auflisten, gruppiert nach Quelle | `claude agents` |

28| `claude auto-mode defaults` | Drucken Sie die integrierten [Auto-Modus](/de/permission-modes#eliminate-prompts-with-auto-mode) Klassifiziererregeln als JSON. Verwenden Sie `claude auto-mode config`, um Ihre effektive Konfiguration mit angewendeten Einstellungen anzuzeigen | `claude auto-mode defaults > rules.json` |

29| `claude mcp` | Model Context Protocol (MCP) Server konfigurieren | Siehe die [Claude Code MCP-Dokumentation](/de/mcp). |

30| `claude plugin` | Verwalten Sie Claude Code [Plugins](/de/plugins). Alias: `claude plugins`. Siehe [Plugin-Referenz](/de/plugins-reference#cli-commands-reference) für Unterbefehle | `claude plugin install code-review@claude-plugins-official` |

31| `claude project purge [path]` | Löschen Sie alle lokalen Claude Code-Status für ein Projekt: Transkripte, Aufgabenlisten, Debug-Protokolle, Datei-Bearbeitungsverlauf, Prompt-Verlaufszeilen und den Projekteintrag in `~/.claude.json`. Lassen Sie `[path]` weg, um aus einer interaktiven Liste auszuwählen. Flags: `--dry-run` zum Vorschau, `-y`/`--yes` zum Überspringen der Bestätigung, `-i`/`--interactive` zum Bestätigen jedes Elements, `--all` für jedes Projekt. Siehe [Lokale Daten löschen](/de/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` |

32| `claude remote-control` | Starten Sie einen [Remote Control](/de/remote-control) Server, um Claude Code von Claude.ai oder der Claude App zu steuern. Läuft im Server-Modus (keine lokale interaktive Sitzung). Siehe [Server-Modus-Flags](/de/remote-control#start-a-remote-control-session) | `claude remote-control --name "My Project"` |

33| `claude setup-token` | Generieren Sie ein langlebiges OAuth-Token für CI und Skripte. Gibt das Token auf dem Terminal aus, ohne es zu speichern. Erfordert ein Claude-Abonnement. Siehe [Generieren Sie ein langlebiges Token](/de/authentication#generate-a-long-lived-token) | `claude setup-token` |

34| `claude ultrareview [target]` | Führen Sie [ultrareview](/de/ultrareview#run-ultrareview-non-interactively) nicht interaktiv aus. Gibt Ergebnisse auf stdout aus und beendet sich mit 0 bei Erfolg oder 1 bei Fehler. Verwenden Sie `--json` für die rohe Nutzlast und `--timeout <minutes>`, um das 30-Minuten-Standard zu überschreiben | `claude ultrareview 1234 --json` |

35 

36Wenn Sie einen Unterbefehl falsch eingeben, schlägt Claude Code die nächste Übereinstimmung vor und beendet sich, ohne eine Sitzung zu starten. Zum Beispiel gibt `claude udpate` `Did you mean claude update?` aus.

37 

38## CLI-Flags

39 

40Passen Sie das Verhalten von Claude Code mit diesen Befehlszeilenflags an. `claude --help` listet nicht jedes Flag auf, daher bedeutet das Fehlen eines Flags in `--help` nicht, dass es nicht verfügbar ist.

41 

42| Flag | Beschreibung | Beispiel |

43| :---------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------- |

44| `--add-dir` | Zusätzliche Arbeitsverzeichnisse hinzufügen, auf die Claude Dateien lesen und bearbeiten kann. Gewährt Dateizugriff; die meisten `.claude/` Konfigurationen werden [nicht erkannt](/de/permissions#additional-directories-grant-file-access-not-configuration) aus diesen Verzeichnissen. Validiert, dass jeder Pfad als Verzeichnis existiert | `claude --add-dir ../apps ../lib` |

45| `--agent` | Geben Sie einen Agent für die aktuelle Sitzung an (überschreibt die `agent`-Einstellung) | `claude --agent my-custom-agent` |

46| `--agents` | Definieren Sie benutzerdefinierte Subagenten dynamisch über JSON. Verwendet die gleichen Feldnamen wie Subagent [Frontmatter](/de/sub-agents#supported-frontmatter-fields), plus ein `prompt`-Feld für die Anweisungen des Agenten | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |

47| `--allow-dangerously-skip-permissions` | Fügen Sie `bypassPermissions` zum `Shift+Tab` Modus-Zyklus hinzu, ohne damit zu beginnen. Ermöglicht es Ihnen, in einem anderen Modus wie `plan` zu beginnen und später zu `bypassPermissions` zu wechseln. Siehe [Berechtigungsmodi](/de/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |

48| `--allowedTools` | Tools, die ohne Aufforderung zur Berechtigung ausgeführt werden. Siehe [Berechtigung Regelsyntax](/de/settings#permission-rule-syntax) für Musterabgleich. Um einzuschränken, welche Tools verfügbar sind, verwenden Sie stattdessen `--tools` | `"Bash(git log *)" "Bash(git diff *)" "Read"` |

49| `--append-system-prompt` | Fügen Sie benutzerdefinierten Text am Ende des Standard-Systemprompts an | `claude --append-system-prompt "Always use TypeScript"` |

50| `--append-system-prompt-file` | Laden Sie zusätzlichen Systemprompt-Text aus einer Datei und fügen Sie ihn zum Standard-Prompt an | `claude --append-system-prompt-file ./extra-rules.txt` |

51| `--bare` | Minimaler Modus: Überspringen Sie die automatische Erkennung von Hooks, Skills, Plugins, MCP-Servern, automatischem Speicher und CLAUDE.md, damit Skriptaufrufe schneller starten. Claude hat Zugriff auf Bash-, Dateilesungs- und Dateibearbeitungstools. Setzt [`CLAUDE_CODE_SIMPLE`](/de/env-vars). Siehe [Bare-Modus](/de/headless#start-faster-with-bare-mode) | `claude --bare -p "query"` |

52| `--betas` | Beta-Header, die in API-Anfragen einbezogen werden sollen (nur API-Schlüssel-Benutzer) | `claude --betas interleaved-thinking` |

53| `--channels` | (Forschungsvorschau) MCP-Server, deren [Kanal](/de/channels) Benachrichtigungen Claude in dieser Sitzung abhören sollte. Durch Leerzeichen getrennte Liste von `plugin:<name>@<marketplace>` Einträgen. Erfordert Claude.ai-Authentifizierung | `claude --channels plugin:my-notifier@my-marketplace` |

54| `--chrome` | Aktivieren Sie [Chrome-Browser-Integration](/de/chrome) für Web-Automatisierung und Tests | `claude --chrome` |

55| `--continue`, `-c` | Laden Sie die letzte Konversation im aktuellen Verzeichnis. Schließt Sitzungen ein, die dieses Verzeichnis mit `/add-dir` hinzugefügt haben | `claude --continue` |

56| `--dangerously-load-development-channels` | Aktivieren Sie [Kanäle](/de/channels-reference#test-during-the-research-preview), die sich nicht auf der genehmigten Zulassungsliste befinden, für die lokale Entwicklung. Akzeptiert `plugin:<name>@<marketplace>` und `server:<name>` Einträge. Fordert zur Bestätigung auf | `claude --dangerously-load-development-channels server:webhook` |

57| `--dangerously-skip-permissions` | Überspringen Sie Berechtigungsaufforderungen. Entspricht `--permission-mode bypassPermissions`. Siehe [Berechtigungsmodi](/de/permission-modes#skip-all-checks-with-bypasspermissions-mode) für das, was dies überspringt und nicht überspringt | `claude --dangerously-skip-permissions` |

58| `--debug` | Aktivieren Sie den Debug-Modus mit optionaler Kategoriefilterung (zum Beispiel `"api,hooks"` oder `"!statsig,!file"`) | `claude --debug "api,mcp"` |

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

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

61| `--disallowedTools` | Tools, die aus dem Kontext des Modells entfernt werden und nicht verwendet werden können | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |

62| `--effort` | Legen Sie die [Aufwandsstufe](/de/model-config#adjust-effort-level) für die aktuelle Sitzung fest. Optionen: `low`, `medium`, `high`, `xhigh`, `max`; verfügbare Stufen hängen vom Modell ab. Sitzungsbezogen und wird nicht in den Einstellungen beibehalten | `claude --effort high` |

63| `--enable-auto-mode` | {/* max-version: 2.1.110 */}Entfernt in v2.1.111. Auto-Modus ist jetzt standardmäßig im `Shift+Tab` Zyklus; verwenden Sie `--permission-mode auto`, um darin zu starten | `claude --permission-mode auto` |

64| `--exclude-dynamic-system-prompt-sections` | Verschieben Sie maschinenspezifische Abschnitte aus dem Systemprompt (Arbeitsverzeichnis, Umgebungsinformationen, Speicherpfade, Git-Status) in die erste Benutzernachricht. Verbessert die Prompt-Cache-Wiederverwendung über verschiedene Benutzer und Maschinen hinweg, die die gleiche Aufgabe ausführen. Gilt nur mit dem Standard-Systemprompt; wird ignoriert, wenn `--system-prompt` oder `--system-prompt-file` gesetzt ist. Verwenden Sie mit `-p` für Skript-, Multi-Benutzer-Workloads | `claude -p --exclude-dynamic-system-prompt-sections "query"` |

65| `--fallback-model` | Aktivieren Sie automatisches Fallback auf das angegebene Modell, wenn das Standardmodell überlastet ist (nur Print-Modus) | `claude -p --fallback-model sonnet "query"` |

66| `--fork-session` | Erstellen Sie beim Fortsetzen eine neue Sitzungs-ID, anstatt die ursprüngliche wiederzuverwenden (verwenden Sie mit `--resume` oder `--continue`) | `claude --resume abc123 --fork-session` |

67| `--from-pr` | Setzen Sie Sitzungen fort, die mit einem bestimmten Pull Request verknüpft sind. Akzeptiert eine PR-Nummer, eine GitHub oder GitHub Enterprise PR URL, eine GitLab Merge Request URL oder eine Bitbucket Pull Request URL. Sitzungen werden automatisch verknüpft, wenn Claude den Pull Request erstellt | `claude --from-pr 123` |

68| `--ide` | Verbinden Sie sich automatisch beim Start mit der IDE, wenn genau eine gültige IDE verfügbar ist | `claude --ide` |

69| `--init` | Führen Sie [Setup Hooks](/de/hooks#setup) mit dem `init` Matcher vor der Sitzung aus (nur Print-Modus) | `claude -p --init "query"` |

70| `--init-only` | Führen Sie [Setup](/de/hooks#setup) und `SessionStart` Hooks aus, dann beenden Sie ohne eine Konversation zu starten | `claude --init-only` |

71| `--include-hook-events` | Schließen Sie alle Hook-Lebenszyklusereignisse in den Ausgabestrom ein. Erfordert `--output-format stream-json` | `claude -p --output-format stream-json --include-hook-events "query"` |

72| `--include-partial-messages` | Schließen Sie partielle Streaming-Ereignisse in die Ausgabe ein. Erfordert `--print` und `--output-format stream-json` | `claude -p --output-format stream-json --include-partial-messages "query"` |

73| `--input-format` | Geben Sie das Eingabeformat für den Print-Modus an (Optionen: `text`, `stream-json`) | `claude -p --output-format json --input-format stream-json` |

74| `--json-schema` | Erhalten Sie validierte JSON-Ausgabe, die einem JSON-Schema entspricht, nachdem der Agent seinen Workflow abgeschlossen hat (nur Print-Modus, siehe [strukturierte Ausgaben](/de/agent-sdk/structured-outputs)) | `claude -p --json-schema '{"type":"object","properties":{...}}' "query"` |

75| `--maintenance` | Führen Sie [Setup Hooks](/de/hooks#setup) mit dem `maintenance` Matcher vor der Sitzung aus (nur Print-Modus) | `claude -p --maintenance "query"` |

76| `--max-budget-usd` | Maximaler Dollarbetrag, der für API-Aufrufe ausgegeben werden kann, bevor gestoppt wird (nur Print-Modus) | `claude -p --max-budget-usd 5.00 "query"` |

77| `--max-turns` | Begrenzen Sie die Anzahl der agentic Turns (nur Print-Modus). Beendet mit einem Fehler, wenn das Limit erreicht wird. Standardmäßig kein Limit | `claude -p --max-turns 3 "query"` |

78| `--mcp-config` | Laden Sie MCP-Server aus JSON-Dateien oder Strings (durch Leerzeichen getrennt) | `claude --mcp-config ./mcp.json` |

79| `--model` | Legt das Modell für die aktuelle Sitzung mit einem Alias für das neueste Modell (`sonnet` oder `opus`) oder den vollständigen Namen eines Modells fest | `claude --model claude-sonnet-4-6` |

80| `--name`, `-n` | Legen Sie einen Anzeigenamen für die Sitzung fest, der in `/resume` und der Terminalleiste angezeigt wird. Sie können eine benannte Sitzung mit `claude --resume <name>` fortsetzen. <br /><br />[`/rename`](/de/commands) ändert den Namen während der Sitzung und zeigt ihn auch in der Eingabeaufforderungsleiste an | `claude -n "my-feature-work"` |

81| `--no-chrome` | Deaktivieren Sie [Chrome-Browser-Integration](/de/chrome) für diese Sitzung | `claude --no-chrome` |

82| `--no-session-persistence` | Deaktivieren Sie die Sitzungspersistenz, sodass Sitzungen nicht auf der Festplatte gespeichert werden und nicht fortgesetzt werden können (nur Print-Modus) | `claude -p --no-session-persistence "query"` |

83| `--output-format` | Geben Sie das Ausgabeformat für den Print-Modus an (Optionen: `text`, `json`, `stream-json`) | `claude -p "query" --output-format json` |

84| `--permission-mode` | Beginnen Sie in einem angegebenen [Berechtigungsmodus](/de/permission-modes). Akzeptiert `default`, `acceptEdits`, `plan`, `auto`, `dontAsk` oder `bypassPermissions`. Überschreibt `defaultMode` aus Einstellungsdateien | `claude --permission-mode plan` |

85| `--permission-prompt-tool` | Geben Sie ein MCP-Tool an, um Berechtigungsaufforderungen im nicht-interaktiven Modus zu verarbeiten | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |

86| `--plugin-dir` | Laden Sie Plugins aus einem Verzeichnis nur für diese Sitzung. Jedes Flag nimmt einen Pfad auf. Wiederholen Sie das Flag für mehrere Verzeichnisse: `--plugin-dir A --plugin-dir B` | `claude --plugin-dir ./my-plugins` |

87| `--print`, `-p` | Geben Sie die Antwort ohne interaktiven Modus aus (siehe [Agent SDK-Dokumentation](/de/agent-sdk/overview) für Details zur programmatischen Verwendung) | `claude -p "query"` |

88| `--remote` | Erstellen Sie eine neue [Web-Sitzung](/de/claude-code-on-the-web) auf claude.ai mit der bereitgestellten Aufgabenbeschreibung | `claude --remote "Fix the login bug"` |

89| `--remote-control`, `--rc` | Starten Sie eine interaktive Sitzung mit aktiviertem [Remote Control](/de/remote-control#start-a-remote-control-session), sodass Sie sie auch von claude.ai oder der Claude App aus steuern können. Optional einen Namen für die Sitzung übergeben | `claude --remote-control "My Project"` |

90| `--remote-control-session-name-prefix <prefix>` | Präfix für automatisch generierte [Remote Control](/de/remote-control) Sitzungsnamen, wenn kein expliziter Name gesetzt ist. Standardmäßig der Hostname Ihrer Maschine, was Namen wie `myhost-graceful-unicorn` erzeugt. Setzen Sie `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` für den gleichen Effekt | `claude remote-control --remote-control-session-name-prefix dev-box` |

91| `--replay-user-messages` | Geben Sie Benutzernachrichten von stdin auf stdout zurück zur Bestätigung aus. Erfordert `--input-format stream-json` und `--output-format stream-json` | `claude -p --input-format stream-json --output-format stream-json --replay-user-messages` |

92| `--resume`, `-r` | Setzen Sie eine bestimmte Sitzung nach ID oder Name fort, oder zeigen Sie eine interaktive Auswahl an, um eine Sitzung auszuwählen. Schließt Sitzungen ein, die dieses Verzeichnis mit `/add-dir` hinzugefügt haben | `claude --resume auth-refactor` |

93| `--session-id` | Verwenden Sie eine bestimmte Sitzungs-ID für die Konversation (muss eine gültige UUID sein) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |

94| `--setting-sources` | Durch Kommas getrennte Liste von Einstellungsquellen zum Laden (`user`, `project`, `local`) | `claude --setting-sources user,project` |

95| `--settings` | Pfad zu einer Einstellungs-JSON-Datei oder eine JSON-Zeichenkette zum Laden zusätzlicher Einstellungen | `claude --settings ./settings.json` |

96| `--strict-mcp-config` | Verwenden Sie nur MCP-Server aus `--mcp-config`, ignorieren Sie alle anderen MCP-Konfigurationen | `claude --strict-mcp-config --mcp-config ./mcp.json` |

97| `--system-prompt` | Ersetzen Sie den gesamten Systemprompt durch benutzerdefinierten Text | `claude --system-prompt "You are a Python expert"` |

98| `--system-prompt-file` | Laden Sie den Systemprompt aus einer Datei, ersetzen Sie den Standard-Prompt | `claude --system-prompt-file ./custom-prompt.txt` |

99| `--teleport` | Setzen Sie eine [Web-Sitzung](/de/claude-code-on-the-web) in Ihrem lokalen Terminal fort | `claude --teleport` |

100| `--teammate-mode` | Legen Sie fest, wie [Agent-Team](/de/agent-teams) Teamkollegen angezeigt werden: `auto` (Standard), `in-process` oder `tmux`. Siehe [Anzeigemodus wählen](/de/agent-teams#choose-a-display-mode) | `claude --teammate-mode in-process` |

101| `--tmux` | Erstellen Sie eine tmux-Sitzung für den Worktree. Erfordert `--worktree`. Verwendet native iTerm2-Bereiche, wenn verfügbar; übergeben Sie `--tmux=classic` für traditionelles tmux | `claude -w feature-auth --tmux` |

102| `--tools` | Beschränken Sie, welche integrierten Tools Claude verwenden kann. Verwenden Sie `""`, um alle zu deaktivieren, `"default"` für alle oder Tool-Namen wie `"Bash,Edit,Read"` | `claude --tools "Bash,Edit,Read"` |

103| `--verbose` | Aktivieren Sie ausführliches Logging, zeigt vollständige Turn-by-Turn-Ausgabe | `claude --verbose` |

104| `--version`, `-v` | Geben Sie die Versionsnummer aus | `claude -v` |

105| `--worktree`, `-w` | Starten Sie Claude in einem isolierten [Git Worktree](/de/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) bei `<repo>/.claude/worktrees/<name>`. Wenn kein Name angegeben wird, wird einer automatisch generiert | `claude -w feature-auth` |

106 

107### System-Prompt-Flags

108 

109Claude Code bietet vier Flags zum Anpassen des Systemprompts. Alle vier funktionieren sowohl im interaktiven als auch im nicht-interaktiven Modus.

110 

111| Flag | Verhalten | Beispiel |

112| :---------------------------- | :--------------------------------------- | :------------------------------------------------------ |

113| `--system-prompt` | Ersetzt den gesamten Standard-Prompt | `claude --system-prompt "You are a Python expert"` |

114| `--system-prompt-file` | Ersetzt mit Dateiinhalten | `claude --system-prompt-file ./prompts/review.txt` |

115| `--append-system-prompt` | Fügt zum Standard-Prompt an | `claude --append-system-prompt "Always use TypeScript"` |

116| `--append-system-prompt-file` | Fügt Dateiinhalte zum Standard-Prompt an | `claude --append-system-prompt-file ./style-rules.txt` |

117 

118`--system-prompt` und `--system-prompt-file` schließen sich gegenseitig aus. Die Append-Flags können mit einem der Ersetzungs-Flags kombiniert werden.

119 

120Verwenden Sie für die meisten Anwendungsfälle ein Append-Flag. Das Anhängen bewahrt die integrierten Funktionen von Claude Code, während Ihre Anforderungen hinzugefügt werden. Verwenden Sie ein Ersetzungs-Flag nur, wenn Sie vollständige Kontrolle über den Systemprompt benötigen.

121 

122## Siehe auch

123 

124* [Chrome-Erweiterung](/de/chrome) - Browser-Automatisierung und Web-Tests

125* [Interaktiver Modus](/de/interactive-mode) - Tastenkombinationen, Eingabemodi und interaktive Funktionen

126* [Schnellstart-Anleitung](/de/quickstart) - Erste Schritte mit Claude Code

127* [Häufige Workflows](/de/common-workflows) - Erweiterte Workflows und Muster

128* [Einstellungen](/de/settings) - Konfigurationsoptionen

129* [Agent SDK-Dokumentation](/de/agent-sdk/overview) - Programmatische Verwendung und Integrationen

code-review.md +279 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Code Review

6 

7> Richten Sie automatisierte PR-Reviews ein, die Logikfehler, Sicherheitslücken und Regressionen durch Multi-Agent-Analyse Ihrer vollständigen Codebasis erkennen

8 

9<Note>

10 Code Review befindet sich in der Forschungsvorschau und ist für [Teams und Enterprise](https://claude.ai/admin-settings/claude-code) Abonnements verfügbar. Es ist nicht verfügbar für Organisationen mit [Zero Data Retention](/de/zero-data-retention) aktiviert.

11</Note>

12 

13Code Review analysiert Ihre GitHub Pull Requests und veröffentlicht Erkenntnisse als Inline-Kommentare auf den Codezeilen, auf denen Probleme gefunden wurden. Eine Flotte spezialisierter Agenten untersucht die Codeänderungen im Kontext Ihrer vollständigen Codebasis und sucht nach Logikfehlern, Sicherheitslücken, fehlerhaften Grenzfällen und subtilen Regressionen.

14 

15Erkenntnisse werden nach Schweregrad gekennzeichnet und genehmigen oder blockieren Ihren PR nicht, sodass bestehende Review-Workflows intakt bleiben. Sie können anpassen, was Claude kennzeichnet, indem Sie eine `CLAUDE.md` oder `REVIEW.md` Datei zu Ihrem Repository hinzufügen.

16 

17Um Claude in Ihrer eigenen CI-Infrastruktur statt dieses verwalteten Dienstes auszuführen, siehe [GitHub Actions](/de/github-actions) oder [GitLab CI/CD](/de/gitlab-ci-cd). Für Repositorys auf einer selbst gehosteten GitHub-Instanz siehe [GitHub Enterprise Server](/de/github-enterprise-server).

18 

19Diese Seite behandelt:

20 

21* [Wie Reviews funktionieren](#how-reviews-work)

22* [Setup](#set-up-code-review)

23* [Manuelles Auslösen von Reviews](#manually-trigger-reviews) mit `@claude review` und `@claude review once`

24* [Anpassung von Reviews](#customize-reviews) mit `CLAUDE.md` und `REVIEW.md`

25* [Preisgestaltung](#pricing)

26* [Fehlerbehebung](#troubleshooting) fehlgeschlagener Ausführungen und fehlender Kommentare

27 

28## Wie Reviews funktionieren

29 

30Sobald ein Administrator [Code Review aktiviert](#set-up-code-review) für Ihre Organisation, werden Reviews ausgelöst, wenn ein PR geöffnet wird, bei jedem Push oder auf manuelle Anfrage, je nach konfiguriertem Verhalten des Repositorys. Das Kommentieren von `@claude review` [startet Reviews auf einem PR](#manually-trigger-reviews) in jedem Modus.

31 

32Wenn ein Review ausgeführt wird, analysieren mehrere Agenten parallel den Diff und den umgebenden Code auf Anthropic-Infrastruktur. Jeder Agent sucht nach einer anderen Klasse von Problemen, dann überprüft ein Verifizierungsschritt Kandidaten gegen das tatsächliche Codeverhalten, um falsch positive Ergebnisse zu filtern. Die Ergebnisse werden dedupliziert, nach Schweregrad eingestuft und als Inline-Kommentare auf den spezifischen Zeilen veröffentlicht, auf denen Probleme gefunden wurden, mit einer Zusammenfassung im Review-Text. Wenn keine Probleme gefunden werden, veröffentlicht Claude einen kurzen Bestätigungskommentar auf dem PR.

33 

34Reviews skalieren in den Kosten mit PR-Größe und Komplexität und werden im Durchschnitt in 20 Minuten abgeschlossen. Administratoren können Review-Aktivität und Ausgaben über das [Analytics-Dashboard](#view-usage) überwachen.

35 

36### Schweregrad-Stufen

37 

38Jede Erkenntnis wird mit einer Schweregrad-Stufe gekennzeichnet:

39 

40| Marker | Schweregrad | Bedeutung |

41| :----- | :---------------- | :------------------------------------------------------------------------------------------ |

42| 🔴 | Wichtig | Ein Fehler, der vor dem Zusammenführen behoben werden sollte |

43| 🟡 | Nit | Ein kleineres Problem, das behoben werden sollte, aber nicht blockierend ist |

44| 🟣 | Bereits vorhanden | Ein Fehler, der in der Codebasis vorhanden ist, aber nicht durch diesen PR eingeführt wurde |

45 

46Erkenntnisse enthalten einen ausklappbaren erweiterten Reasoning-Bereich, den Sie erweitern können, um zu verstehen, warum Claude das Problem gekennzeichnet hat und wie es das Problem überprüft hat.

47 

48### Bewertung und Antwort auf Erkenntnisse

49 

50Jeder Review-Kommentar von Claude kommt bereits mit 👍 und 👎 angehängt, sodass beide Schaltflächen in der GitHub-Benutzeroberfläche für Ein-Klick-Bewertung angezeigt werden. Klicken Sie auf 👍, wenn die Erkenntnis nützlich war, oder auf 👎, wenn sie falsch oder störend war. Anthropic sammelt Reaktionszählungen nach dem Zusammenführen des PR und verwendet sie, um den Reviewer zu optimieren. Reaktionen lösen keine Neuüberprüfung aus oder ändern etwas auf dem PR.

51 

52Das Antworten auf einen Inline-Kommentar veranlasst Claude nicht, zu antworten oder den PR zu aktualisieren. Um auf eine Erkenntnis zu reagieren, beheben Sie den Code und pushen Sie. Wenn der PR für Push-ausgelöste Reviews abonniert ist, löst die nächste Ausführung den Thread auf, wenn das Problem behoben ist. Um eine neue Überprüfung ohne Pushen anzufordern, kommentieren Sie `@claude review once` als [Top-Level-PR-Kommentar](#manually-trigger-reviews).

53 

54### Check-Run-Ausgabe

55 

56Neben den Inline-Review-Kommentaren füllt jedes Review die **Claude Code Review** Check-Run auf, die neben Ihren CI-Checks angezeigt wird. Erweitern Sie ihren **Details**-Link, um eine Zusammenfassung aller Erkenntnisse an einem Ort zu sehen, sortiert nach Schweregrad:

57 

58| Schweregrad | Datei:Zeile | Problem |

59| ----------- | ------------------------- | ----------------------------------------------------------------------------------------- |

60| 🔴 Wichtig | `src/auth/session.ts:142` | Token-Aktualisierung läuft parallel mit Logout, wodurch veraltete Sitzungen aktiv bleiben |

61| 🟡 Nit | `src/auth/session.ts:88` | `parseExpiry` gibt stillschweigend 0 bei fehlerhafter Eingabe zurück |

62 

63Jede Erkenntnis wird auch als Anmerkung auf der Registerkarte **Files changed** angezeigt, direkt auf den relevanten Diff-Zeilen markiert. Wichtige Erkenntnisse werden mit einem roten Marker gerendert, Nits mit einer gelben Warnung und bereits vorhandene Fehler mit einer grauen Benachrichtigung. Anmerkungen und die Schweregrad-Tabelle werden unabhängig von Inline-Review-Kommentaren in die Check-Run geschrieben, sodass sie verfügbar bleiben, auch wenn GitHub einen Inline-Kommentar auf einer Zeile ablehnt, die sich verschoben hat.

64 

65Die Check-Run wird immer mit einer neutralen Schlussfolgerung abgeschlossen, sodass sie das Zusammenführen durch Branch-Schutzregeln niemals blockiert. Wenn Sie Zusammenführungen auf Code Review-Erkenntnisse beschränken möchten, lesen Sie die Schweregrad-Aufschlüsselung aus der Check-Run-Ausgabe in Ihrem eigenen CI. Die letzte Zeile des Details-Texts ist ein maschinenlesbarer Kommentar, den Ihr Workflow mit `gh` und jq analysieren kann:

66 

67```bash theme={null}

68gh api repos/OWNER/REPO/check-runs/CHECK_RUN_ID \

69 --jq '.output.text | split("bughunter-severity: ")[1] | split(" -->")[0] | fromjson'

70```

71 

72Dies gibt ein JSON-Objekt mit Zählungen pro Schweregrad zurück, zum Beispiel `{"normal": 2, "nit": 1, "pre_existing": 0}`. Der `normal`-Schlüssel enthält die Anzahl der Wichtig-Erkenntnisse; ein Wert ungleich Null bedeutet, dass Claude mindestens einen Fehler gefunden hat, der vor dem Zusammenführen behoben werden sollte.

73 

74### Was Code Review überprüft

75 

76Standardmäßig konzentriert sich Code Review auf Korrektheit: Fehler, die die Produktion unterbrechen würden, nicht auf Formatierungspräferenzen oder fehlende Testabdeckung. Sie können erweitern, was es überprüft, indem Sie [Anleitungsdateien hinzufügen](#customize-reviews) zu Ihrem Repository.

77 

78## Code Review einrichten

79 

80Ein Administrator aktiviert Code Review einmal für die Organisation und wählt aus, welche Repositorys einbezogen werden sollen.

81 

82<Steps>

83 <Step title="Öffnen Sie die Claude Code Admin-Einstellungen">

84 Gehen Sie zu [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) und finden Sie den Code Review Bereich. Sie benötigen Admin-Zugriff auf Ihre Claude-Organisation und die Berechtigung, GitHub Apps in Ihrer GitHub-Organisation zu installieren.

85 </Step>

86 

87 <Step title="Setup starten">

88 Klicken Sie auf **Setup**. Dies startet den GitHub App-Installationsablauf.

89 </Step>

90 

91 <Step title="Installieren Sie die Claude GitHub App">

92 Folgen Sie den Aufforderungen, um die Claude GitHub App in Ihrer GitHub-Organisation zu installieren. Die App fordert diese Repository-Berechtigungen an:

93 

94 * **Contents**: Lesen und Schreiben

95 * **Issues**: Lesen und Schreiben

96 * **Pull requests**: Lesen und Schreiben

97 

98 Code Review verwendet Lesezugriff auf Inhalte und Schreibzugriff auf Pull Requests. Der breitere Berechtigungssatz unterstützt auch [GitHub Actions](/de/github-actions), wenn Sie diese später aktivieren.

99 </Step>

100 

101 <Step title="Wählen Sie Repositorys aus">

102 Wählen Sie aus, welche Repositorys für Code Review aktiviert werden sollen. Wenn Sie ein Repository nicht sehen, stellen Sie sicher, dass Sie der Claude GitHub App während der Installation Zugriff darauf gewährt haben. Sie können später weitere Repositorys hinzufügen.

103 </Step>

104 

105 <Step title="Legen Sie Review-Trigger pro Repo fest">

106 Nach Abschluss des Setups zeigt der Code Review Bereich Ihre Repositorys in einer Tabelle an. Verwenden Sie für jedes Repository das Dropdown-Menü **Review Behavior**, um auszuwählen, wann Reviews ausgeführt werden:

107 

108 * **Once after PR creation**: Review wird einmal ausgeführt, wenn ein PR geöffnet oder als bereit zur Überprüfung markiert wird

109 * **After every push**: Review wird bei jedem Push zum PR-Branch ausgeführt, erkennt neue Probleme, während sich der PR entwickelt, und löst Threads automatisch auf, wenn Sie gekennzeichnete Probleme beheben

110 * **Manual**: Reviews werden nur gestartet, wenn jemand [kommentiert `@claude review` oder `@claude review once` auf einem PR](#manually-trigger-reviews); `@claude review` abonniert den PR auch für Reviews bei nachfolgenden Pushes

111 

112 Das Überprüfen bei jedem Push führt die meisten Reviews durch und kostet am meisten. Der manuelle Modus ist nützlich für Repositorys mit hohem Datenverkehr, bei denen Sie bestimmte PRs in die Überprüfung aufnehmen möchten, oder um nur mit der Überprüfung Ihrer PRs zu beginnen, wenn sie bereit sind.

113 </Step>

114</Steps>

115 

116Die Repositorys-Tabelle zeigt auch die durchschnittlichen Kosten pro Review für jedes Repo basierend auf der letzten Aktivität. Verwenden Sie das Zeilenaktionsmenü, um Code Review pro Repository ein- oder auszuschalten, oder um ein Repository vollständig zu entfernen.

117 

118Um das Setup zu überprüfen, öffnen Sie einen Test-PR. Wenn Sie einen automatischen Trigger gewählt haben, wird eine Check-Run namens **Claude Code Review** innerhalb weniger Minuten angezeigt. Wenn Sie Manual gewählt haben, kommentieren Sie `@claude review` auf dem PR, um die erste Überprüfung zu starten. Wenn keine Check-Run angezeigt wird, bestätigen Sie, dass das Repository in Ihren Admin-Einstellungen aufgelistet ist und die Claude GitHub App Zugriff darauf hat.

119 

120## Manuelles Auslösen von Reviews

121 

122Zwei Kommentarbefehle starten eine Überprüfung auf Anfrage. Beide funktionieren unabhängig vom konfigurierten Trigger des Repositorys, sodass Sie sie verwenden können, um bestimmte PRs im manuellen Modus in die Überprüfung aufzunehmen oder um eine sofortige Neuüberprüfung in anderen Modi zu erhalten.

123 

124| Befehl | Was er tut |

125| :-------------------- | :----------------------------------------------------------------------------------- |

126| `@claude review` | Startet eine Überprüfung und abonniert den PR für Push-ausgelöste Reviews in Zukunft |

127| `@claude review once` | Startet eine einzelne Überprüfung, ohne den PR für zukünftige Pushes zu abonnieren |

128 

129Verwenden Sie `@claude review once`, wenn Sie Feedback zum aktuellen Zustand eines PR möchten, aber nicht möchten, dass jeder nachfolgende Push eine Überprüfung verursacht. Dies ist nützlich für langfristige PRs mit häufigen Pushes oder wenn Sie eine einmalige zweite Meinung möchten, ohne das Review-Verhalten des PR zu ändern.

130 

131Damit einer der beiden Befehle eine Überprüfung auslöst:

132 

133* Veröffentlichen Sie ihn als Top-Level-PR-Kommentar, nicht als Inline-Kommentar auf einer Diff-Zeile

134* Setzen Sie den Befehl an den Anfang des Kommentars, mit `once` auf der gleichen Zeile, wenn Sie die One-Shot-Form verwenden

135* Sie müssen Owner-, Member- oder Collaborator-Zugriff auf das Repository haben

136* Der PR muss offen sein

137 

138Im Gegensatz zu automatischen Triggern werden manuelle Trigger auf Entwurfs-PRs ausgeführt, da eine explizite Anfrage signalisiert, dass Sie die Überprüfung jetzt möchten, unabhängig vom Entwurfsstatus.

139 

140Wenn bereits eine Überprüfung auf diesem PR läuft, wird die Anfrage in die Warteschlange eingereiht, bis die laufende Überprüfung abgeschlossen ist. Sie können den Fortschritt über die Check-Run auf dem PR überwachen.

141 

142## Anpassung von Reviews

143 

144Code Review liest zwei Dateien aus Ihrem Repository, um zu steuern, was es kennzeichnet. Sie unterscheiden sich darin, wie stark sie die Überprüfung beeinflussen:

145 

146* **`CLAUDE.md`**: gemeinsame Projektanweisungen, die Claude Code für alle Aufgaben verwendet, nicht nur für Reviews. Code Review liest sie als Projektkontext und kennzeichnet neu eingeführte Verstöße als Nits.

147* **`REVIEW.md`**: Review-spezifische Anweisungen, die direkt in jeden Agent in der Review-Pipeline als höchste Priorität eingefügt werden. Verwenden Sie es, um zu ändern, was gekennzeichnet wird, mit welchem Schweregrad und wie Erkenntnisse gemeldet werden.

148 

149### CLAUDE.md

150 

151Code Review liest Ihre Repository-`CLAUDE.md` Dateien und behandelt neu eingeführte Verstöße als [Nit-Level](#severity-levels) Erkenntnisse. Dies funktioniert bidirektional: Wenn Ihr PR Code auf eine Weise ändert, die eine `CLAUDE.md` Aussage veraltet macht, kennzeichnet Claude, dass die Dokumentation aktualisiert werden muss.

152 

153Claude liest `CLAUDE.md` Dateien auf jeder Ebene Ihrer Verzeichnishierarchie, sodass Regeln in einer Unterverzeichnis-`CLAUDE.md` nur auf Dateien unter diesem Pfad angewendet werden. Weitere Informationen zur Funktionsweise von `CLAUDE.md` finden Sie in der [Memory-Dokumentation](/de/memory).

154 

155Für Review-spezifische Anleitungen, die Sie nicht auf allgemeine Claude Code Sitzungen angewendet haben möchten, verwenden Sie stattdessen [`REVIEW.md`](#review-md).

156 

157### REVIEW\.md

158 

159`REVIEW.md` ist eine Datei in Ihrem Repository-Root, die überschreibt, wie Code Review auf Ihrem Repo verhält. Sein Inhalt wird in den System-Prompt jedes Agenten in der Review-Pipeline als höchste Prioritäts-Anweisungsblock eingefügt und hat Vorrang vor der Standard-Review-Anleitung.

160 

161Da es wörtlich eingefügt wird, ist `REVIEW.md` einfache Anweisungen: [`@` Import-Syntax](/de/memory#import-additional-files) wird nicht erweitert, und referenzierte Dateien werden nicht in den Prompt gelesen. Setzen Sie die Regeln, die Sie durchgesetzt haben möchten, direkt in die Datei.

162 

163#### Was Sie optimieren können

164 

165`REVIEW.md` ist freies Markdown, sodass alles, was Sie als Review-Anweisung ausdrücken können, im Umfang liegt. Die folgenden Muster haben die meiste praktische Auswirkung.

166 

167**Schweregrad**: Definieren Sie neu, was 🔴 Wichtig für Ihr Repo bedeutet. Die Standard-Kalibrierung zielt auf Produktionscode ab; ein Docs-Repo, ein Config-Repo oder ein Prototyp möchte möglicherweise eine viel engere Definition. Geben Sie explizit an, welche Klassen von Erkenntnissen Wichtig sind und welche höchstens Nit sind. Sie können auch in die andere Richtung eskalieren, zum Beispiel jeden `CLAUDE.md` Verstoß als Wichtig statt des Standard-Nits behandeln.

168 

169**Nit-Volumen**: Begrenzen Sie, wie viele 🟡 Nit-Kommentare eine einzelne Überprüfung veröffentlicht. Prosa- und Config-Dateien können für immer poliert werden. Eine Obergrenze wie 'höchstens fünf Nits melden, den Rest als Zählung in der Zusammenfassung erwähnen" hält Reviews umsetzbar.

170 

171**Skip-Regeln**: Listen Sie Pfade, Branch-Muster und Erkenntniskategorien auf, bei denen Claude keine Erkenntnisse veröffentlichen sollte. Häufige Kandidaten sind generierter Code, Lockfiles, vendorte Abhängigkeiten und maschinengeschriebene Branches, zusammen mit allem, das Ihr CI bereits durchsetzt, wie Linting oder Rechtschreibprüfung. Für Pfade, die einige Überprüfung verdienen, aber nicht vollständige Überprüfung, setzen Sie stattdessen eine höhere Messlatte: „in `scripts/`, nur melden, wenn nahezu sicher und schwerwiegend."

172 

173**Repo-spezifische Überprüfungen**: Fügen Sie Regeln hinzu, die Sie auf jedem PR gekennzeichnet haben möchten, wie „neue API-Routen müssen einen Integrationtest haben." Da `REVIEW.md` als höchste Priorität eingefügt wird, landen diese zuverlässiger als die gleichen Regeln in einem langen `CLAUDE.md`.

174 

175**Verifizierungsbalken**: Fordern Sie Beweise an, bevor eine Erkenntnisklasse veröffentlicht wird. Zum Beispiel, „Verhaltensansprüche benötigen eine `file:line` Zitierung in der Quelle, nicht eine Inferenz aus Benennung" reduziert falsch positive Ergebnisse, die sonst den Autor eine Runde kosten würden.

176 

177**Re-Review-Konvergenz**: Sagen Sie Claude, wie er sich verhalten soll, wenn ein PR bereits überprüft wurde. Eine Regel wie „nach der ersten Überprüfung, neue Nits unterdrücken und nur Wichtig-Erkenntnisse veröffentlichen" stoppt eine einzeilige Korrektur von Runde sieben allein auf Stil.

178 

179**Zusammenfassungsform**: Bitten Sie darum, dass der Review-Text mit einer einzeiligen Tally wie `2 faktisch, 4 Stil` beginnt, und führen Sie mit „keine faktischen Probleme" an, wenn das der Fall ist. Der Autor möchte die Form der Arbeit vor den Details wissen.

180 

181#### Beispiel

182 

183Dieses `REVIEW.md` kalibriert den Schweregrad für einen Backend-Service neu, begrenzt Nits, überspringt generierte Dateien und fügt Repo-spezifische Überprüfungen hinzu.

184 

185```markdown theme={null}

186# Review-Anweisungen

187 

188## Was Wichtig hier bedeutet

189 

190Reservieren Sie Wichtig für Erkenntnisse, die Verhalten unterbrechen würden, Daten lecken würden,

191oder einen Rollback blockieren würden: falsche Logik, unscoped Datenbankabfragen, PII

192in Logs oder Fehlermeldungen, und Migrationen, die nicht rückwärtskompatibel sind. Stil, Benennung und Refactoring-Vorschläge sind höchstens Nit.

193 

194## Begrenzen Sie die Nits

195 

196Melden Sie höchstens fünf Nits pro Überprüfung. Wenn Sie mehr gefunden haben, sagen Sie „plus N

197ähnliche Elemente" in der Zusammenfassung statt sie inline zu veröffentlichen. Wenn

198alles, was Sie gefunden haben, ein Nit ist, führen Sie die Zusammenfassung mit „Keine blockierenden

199Probleme" an.

200 

201## Nicht melden

202 

203- Alles, das CI bereits durchsetzt: Lint, Formatierung, Typfehler

204- Generierte Dateien unter `src/gen/` und jede `*.lock` Datei

205- Nur-Test-Code, der absichtlich Produktionsregeln verletzt

206 

207## Immer überprüfen

208 

209- Neue API-Routen haben einen Integrationtest

210- Log-Zeilen enthalten keine E-Mail-Adressen, Benutzer-IDs oder Request-Bodies

211- Datenbankabfragen sind auf den Aufrufer des Mandanten beschränkt

212```

213 

214#### Halten Sie es fokussiert

215 

216Länge hat einen Preis: Ein langer `REVIEW.md` verwässert die Regeln, die am meisten zählen. Halten Sie es auf Anweisungen, die Review-Verhalten ändern, und lassen Sie allgemeinen Projektkontext in `CLAUDE.md`.

217 

218## Nutzung anzeigen

219 

220Gehen Sie zu [claude.ai/analytics/code-review](https://claude.ai/analytics/code-review), um Code Review Aktivität in Ihrer Organisation zu sehen. Das Dashboard zeigt:

221 

222| Bereich | Was es zeigt |

223| :------------------- | :---------------------------------------------------------------------------------------------------------- |

224| PRs reviewed | Tägliche Anzahl der überprüften Pull Requests über den ausgewählten Zeitraum |

225| Cost weekly | Wöchentliche Ausgaben für Code Review |

226| Feedback | Anzahl der Review-Kommentare, die automatisch aufgelöst wurden, weil ein Entwickler das Problem behoben hat |

227| Repository breakdown | Pro-Repo-Anzahl der überprüften PRs und aufgelösten Kommentare |

228 

229Die Repositorys-Tabelle in den Admin-Einstellungen zeigt auch die durchschnittlichen Kosten pro Review für jedes Repo. Dashboard-Kostenzahlen sind Schätzungen zur Überwachung der Aktivität; für rechnungsgenaue Ausgaben beziehen Sie sich auf Ihre Anthropic-Rechnung.

230 

231## Preisgestaltung

232 

233Code Review wird basierend auf der Token-Nutzung abgerechnet. Jede Überprüfung kostet durchschnittlich \$15-25, skalierend mit PR-Größe, Codebasis-Komplexität und wie viele Probleme eine Überprüfung erfordern. Code Review Nutzung wird separat über [extra usage](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) abgerechnet und zählt nicht gegen die in Ihrem Plan enthaltene Nutzung.

234 

235Der Review-Trigger, den Sie wählen, beeinflusst die Gesamtkosten:

236 

237* **Once after PR creation**: wird einmal pro PR ausgeführt

238* **After every push**: wird bei jedem Push ausgeführt, multipliziert die Kosten mit der Anzahl der Pushes

239* **Manual**: keine Reviews, bis jemand `@claude review` auf einem PR kommentiert

240 

241In jedem Modus führt das Kommentieren von `@claude review` [den PR in Push-ausgelöste Reviews auf](#manually-trigger-reviews), sodass zusätzliche Kosten pro Push nach diesem Kommentar anfallen. Um eine einzelne Überprüfung auszuführen, ohne sich für zukünftige Pushes zu abonnieren, kommentieren Sie stattdessen `@claude review once`.

242 

243Kosten erscheinen auf Ihrer Anthropic-Rechnung, unabhängig davon, ob Ihre Organisation Amazon Bedrock oder Google Vertex AI für andere Claude Code Funktionen verwendet. Um eine monatliche Ausgabenbegrenzung für Code Review festzulegen, gehen Sie zu [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage) und konfigurieren Sie das Limit für den Claude Code Review Service.

244 

245Überwachen Sie die Ausgaben über das wöchentliche Kostendiagramm in [analytics](#view-usage) oder die durchschnittliche Kostenspalte pro Repo in den Admin-Einstellungen.

246 

247## Fehlerbehebung

248 

249Review-Ausführungen sind Best-Effort. Eine fehlgeschlagene Ausführung blockiert Ihren PR niemals, aber sie wird auch nicht automatisch erneut versucht. Dieser Abschnitt behandelt, wie Sie sich von einer fehlgeschlagenen Ausführung erholen und wo Sie nachschauen können, wenn die Check-Run Probleme meldet, die Sie nicht finden können.

250 

251### Auslösen einer fehlgeschlagenen oder abgelaufenen Überprüfung erneut

252 

253Wenn die Review-Infrastruktur auf einen internen Fehler trifft oder ihr Zeitlimit überschreitet, wird die Check-Run mit einem Titel von **Code review encountered an error** oder **Code review timed out** abgeschlossen. Die Schlussfolgerung ist immer noch neutral, sodass nichts Ihre Zusammenführung blockiert, aber keine Erkenntnisse werden veröffentlicht.

254 

255Um die Überprüfung erneut auszuführen, kommentieren Sie `@claude review once` auf dem PR. Dies startet eine neue Überprüfung, ohne den PR für zukünftige Pushes zu abonnieren. Wenn der PR bereits für Push-ausgelöste Reviews abonniert ist, startet das Pushen eines neuen Commits auch eine neue Überprüfung.

256 

257Die Schaltfläche **Re-run** in Githubs Checks-Registerkarte löst Code Review nicht erneut aus. Verwenden Sie stattdessen den Kommentarbefehl oder einen neuen Push.

258 

259### Überprüfung wurde nicht ausgeführt und der PR zeigt eine Ausgabenbegrenzungs-Nachricht

260 

261Wenn die monatliche Ausgabenbegrenzung Ihrer Organisation erreicht ist, veröffentlicht Code Review einen einzelnen Kommentar auf dem PR, der erklärt, dass die Überprüfung übersprungen wurde. Reviews werden automatisch am Anfang des nächsten Abrechnungszeitraums fortgesetzt, oder sofort, wenn ein Administrator die Obergrenze bei [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage) erhöht.

262 

263### Finden Sie Probleme, die nicht als Inline-Kommentare angezeigt werden

264 

265Wenn der Check-Run-Titel besagt, dass Probleme gefunden wurden, aber Sie keine Inline-Review-Kommentare auf dem Diff sehen, schauen Sie an diesen anderen Stellen, wo Erkenntnisse angezeigt werden:

266 

267* **Check-Run Details**: Klicken Sie auf **Details** neben der Claude Code Review Check-Run auf der Registerkarte Checks. Die Schweregrad-Tabelle listet jede Erkenntnis mit ihrer Datei, Zeile und Zusammenfassung auf, unabhängig davon, ob der Inline-Kommentar akzeptiert wurde.

268* **Files changed Anmerkungen**: Öffnen Sie die Registerkarte **Files changed** auf dem PR. Erkenntnisse werden als Anmerkungen gerendert, die direkt an den Diff-Zeilen angebracht sind, getrennt von Review-Kommentaren.

269* **Review-Text**: Wenn Sie zum PR gepusht haben, während eine Überprüfung lief, können einige Erkenntnisse auf Zeilen verweisen, die nicht mehr im aktuellen Diff vorhanden sind. Diese werden unter einer **Additional findings** Überschrift im Review-Text angezeigt, anstatt als Inline-Kommentare.

270 

271## Verwandte Ressourcen

272 

273Code Review ist so konzipiert, dass es neben dem Rest von Claude Code funktioniert. Wenn Sie Reviews lokal ausführen möchten, bevor Sie einen PR öffnen, eine selbst gehostete Einrichtung benötigen oder tiefer verstehen möchten, wie `CLAUDE.md` Claudes Verhalten über Tools hinweg prägt, sind diese Seiten gute nächste Schritte:

274 

275* [Plugins](/de/discover-plugins): durchsuchen Sie den Plugin-Marktplatz, einschließlich eines `code-review` Plugins zum Ausführen von On-Demand-Reviews lokal vor dem Pushen

276* [GitHub Actions](/de/github-actions): führen Sie Claude in Ihren eigenen GitHub Actions Workflows aus für benutzerdefinierte Automatisierung über Code Review hinaus

277* [GitLab CI/CD](/de/gitlab-ci-cd): selbst gehostete Claude-Integration für GitLab-Pipelines

278* [Memory](/de/memory): wie `CLAUDE.md` Dateien über Claude Code funktionieren

279* [Analytics](/de/analytics): verfolgen Sie Claude Code Nutzung über Code Review hinaus

commands.md +113 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Befehle

6 

7> Vollständige Referenz für Befehle in Claude Code, einschließlich integrierter Befehle und gebündelter Skills.

8 

9Befehle steuern Claude Code innerhalb einer Sitzung. Sie bieten eine schnelle Möglichkeit, Modelle zu wechseln, Berechtigungen zu verwalten, den Kontext zu löschen, einen Workflow auszuführen und vieles mehr.

10 

11Geben Sie `/` ein, um jeden verfügbaren Befehl anzuzeigen, oder geben Sie `/` gefolgt von Buchstaben ein, um zu filtern.

12 

13Die folgende Tabelle listet alle in Claude Code enthaltenen Befehle auf. Einträge, die mit **[Skill](/de/skills#bundled-skills)** gekennzeichnet sind, sind gebündelte Skills. Sie verwenden denselben Mechanismus wie Skills, die Sie selbst schreiben: eine Eingabeaufforderung, die Claude übergeben wird und die Claude auch automatisch aufrufen kann, wenn relevant. Alles andere ist ein integrierter Befehl, dessen Verhalten in die CLI codiert ist. Um Ihre eigenen Befehle hinzuzufügen, siehe [Skills](/de/skills).

14 

15Nicht jeder Befehl wird für jeden Benutzer angezeigt. Die Verfügbarkeit hängt von Ihrer Plattform, Ihrem Plan und Ihrer Umgebung ab. Beispielsweise wird `/desktop` nur auf macOS und Windows angezeigt, und `/upgrade` wird nur in Pro- und Max-Plänen angezeigt.

16 

17In der folgenden Tabelle gibt `<arg>` ein erforderliches Argument an und `[arg]` ein optionales.

18 

19| Befehl | Zweck |

20| :---------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

21| `/add-dir <path>` | Fügen Sie ein Arbeitsverzeichnis für den Dateizugriff während der aktuellen Sitzung hinzu. Die meisten `.claude/`-Konfigurationen werden [nicht erkannt](/de/permissions#additional-directories-grant-file-access-not-configuration) aus dem hinzugefügten Verzeichnis. Sie können die Sitzung später aus dem hinzugefügten Verzeichnis mit `--continue` oder `--resume` fortsetzen |

22| `/agents` | Verwalten Sie [Agent](/de/sub-agents)-Konfigurationen |

23| `/autofix-pr [prompt]` | Starten Sie eine [Claude Code im Web](/de/claude-code-on-the-web#auto-fix-pull-requests)-Sitzung, die den aktuellen Branch-PR überwacht und Fixes pusht, wenn CI fehlschlägt oder Reviewer Kommentare hinterlassen. Erkennt den offenen PR aus Ihrem ausgecheckten Branch mit `gh pr view`; um einen anderen PR zu überwachen, checken Sie zuerst seinen Branch aus. Standardmäßig wird der Remote-Sitzung mitgeteilt, jeden CI-Fehler und Review-Kommentar zu beheben; übergeben Sie eine Eingabeaufforderung, um ihr andere Anweisungen zu geben, zum Beispiel `/autofix-pr only fix lint and type errors`. Erfordert die `gh` CLI und Zugriff auf [Claude Code im Web](/de/claude-code-on-the-web#who-can-use-claude-code-on-the-web) |

24| `/batch <instruction>` | **[Skill](/de/skills#bundled-skills).** Orchestrieren Sie großflächige Änderungen über eine Codebasis parallel. Recherchiert die Codebasis, zerlegt die Arbeit in 5 bis 30 unabhängige Einheiten und präsentiert einen Plan. Nach Genehmigung startet es einen Hintergrund-Agent pro Einheit in einem isolierten [Git-Worktree](/de/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees). Jeder Agent implementiert seine Einheit, führt Tests aus und öffnet einen Pull Request. Erfordert ein Git-Repository. Beispiel: `/batch migrate src/ from Solid to React` |

25| `/branch [name]` | Erstellen Sie einen Branch des aktuellen Gesprächs an dieser Stelle. Wechselt Sie in den Branch und bewahrt das Original, zu dem Sie mit `/resume` zurückkehren können. Alias: `/fork`. Wenn [`CLAUDE_CODE_FORK_SUBAGENT`](/de/env-vars) gesetzt ist, startet `/fork` stattdessen einen [verzweigten Subagenten](/de/sub-agents#fork-the-current-conversation) und ist kein Alias für diesen Befehl mehr |

26| `/btw <question>` | Stellen Sie eine schnelle [Nebenfrage](/de/interactive-mode#side-questions-with-%2Fbtw) ohne Hinzufügen zum Gespräch |

27| `/chrome` | Konfigurieren Sie [Claude in Chrome](/de/chrome)-Einstellungen |

28| `/claude-api [migrate\|managed-agents-onboard]` | **[Skill](/de/skills#bundled-skills).** Laden Sie Claude API-Referenzmaterial für die Sprache Ihres Projekts (Python, TypeScript, Java, Go, Ruby, C#, PHP oder cURL) und Managed Agents-Referenz. Behandelt Tool-Nutzung, Streaming, Batches, strukturierte Ausgaben und häufige Fallstricke. Wird auch automatisch aktiviert, wenn Ihr Code `anthropic` oder `@anthropic-ai/sdk` importiert. Führen Sie `/claude-api migrate` aus, um vorhandenen Claude API-Code auf ein neueres Modell zu aktualisieren: Claude fragt, welche Dateien gescannt werden sollen und welches Modell das Ziel sein soll, dann aktualisiert Modell-IDs, Thinking-Konfiguration und andere Parameter, die sich zwischen Versionen geändert haben. Führen Sie `/claude-api managed-agents-onboard` aus, um eine interaktive Anleitung zu erhalten, die einen neuen Managed Agent von Grund auf erstellt |

29| `/clear` | Starten Sie ein neues Gespräch mit leerem Kontext. Das vorherige Gespräch bleibt in `/resume` verfügbar. Um Kontext freizugeben und gleichzeitig das gleiche Gespräch fortzusetzen, verwenden Sie stattdessen `/compact`. Aliase: `/reset`, `/new` |

30| `/color [color\|default]` | Legen Sie die Farbe der Eingabeaufforderungsleiste für die aktuelle Sitzung fest. Verfügbare Farben: `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Verwenden Sie `default`, um zurückzusetzen. Wenn [Remote Control](/de/remote-control) verbunden ist, wird die Farbe mit claude.ai/code synchronisiert |

31| `/compact [instructions]` | Geben Sie Kontext frei, indem Sie das bisherige Gespräch zusammenfassen. Übergeben Sie optional Fokusanweisungen für die Zusammenfassung. Siehe [wie Komprimierung Regeln, Skills und Speicherdateien handhabt](/de/context-window#what-survives-compaction) |

32| `/config` | Öffnen Sie die [Einstellungen](/de/settings)-Schnittstelle, um Design, Modell, [Ausgabestil](/de/output-styles) und andere Einstellungen anzupassen. Alias: `/settings` |

33| `/context` | Visualisieren Sie die aktuelle Kontextnutzung als farbiges Gitter. Zeigt Optimierungsvorschläge für kontextintensive Tools, Speicherverschwendung und Kapazitätswarnungen |

34| `/copy [N]` | Kopieren Sie die letzte Antwort des Assistenten in die Zwischenablage. Übergeben Sie eine Zahl `N`, um die N-te letzte Antwort zu kopieren: `/copy 2` kopiert die vorletzte. Wenn Codeblöcke vorhanden sind, wird eine interaktive Auswahl angezeigt, um einzelne Blöcke oder die vollständige Antwort auszuwählen. Drücken Sie `w` in der Auswahl, um die Auswahl stattdessen in eine Datei zu schreiben, anstatt sie in die Zwischenablage zu kopieren, was über SSH nützlich ist |

35| `/cost` | Alias für `/usage` |

36| `/debug [description]` | **[Skill](/de/skills#bundled-skills).** Aktivieren Sie Debug-Protokollierung für die aktuelle Sitzung und beheben Sie Probleme durch Lesen des Sitzungs-Debug-Protokolls. Debug-Protokollierung ist standardmäßig deaktiviert, es sei denn, Sie haben mit `claude --debug` gestartet, daher startet die Ausführung von `/debug` während der Sitzung die Erfassung von Protokollen ab diesem Punkt. Beschreiben Sie optional das Problem, um die Analyse zu fokussieren |

37| `/desktop` | Setzen Sie die aktuelle Sitzung in der Claude Code Desktop-App fort. Nur macOS und Windows. Alias: `/app` |

38| `/diff` | Öffnen Sie einen interaktiven Diff-Viewer, der nicht committete Änderungen und Pro-Turn-Diffs anzeigt. Verwenden Sie Links-/Rechtspfeile, um zwischen dem aktuellen Git-Diff und einzelnen Claude-Turns zu wechseln, und Auf-/Abwärtspfeile zum Durchsuchen von Dateien |

39| `/doctor` | Diagnostizieren und überprüfen Sie Ihre Claude Code-Installation und -Einstellungen. Ergebnisse werden mit Statussymbolen angezeigt. Drücken Sie `f`, um Claude alle gemeldeten Probleme beheben zu lassen |

40| `/effort [level\|auto]` | Legen Sie die Modell-[Anstrengungsstufe](/de/model-config#adjust-effort-level) fest. Akzeptiert `low`, `medium`, `high`, `xhigh` oder `max`; verfügbare Stufen hängen vom Modell ab und `max` ist nur für die Sitzung. `auto` setzt auf den Modellstandard zurück. Ohne Argument wird ein interaktiver Schieberegler geöffnet; verwenden Sie Links- und Rechtspfeile, um eine Stufe auszuwählen, und `Enter`, um sie anzuwenden. Wird sofort wirksam, ohne auf die Fertigstellung der aktuellen Antwort zu warten |

41| `/exit` | Beenden Sie die CLI. Alias: `/quit` |

42| `/export [filename]` | Exportieren Sie das aktuelle Gespräch als Klartext. Mit einem Dateinamen wird direkt in diese Datei geschrieben. Ohne Dateinamen wird ein Dialog geöffnet, um in die Zwischenablage zu kopieren oder in eine Datei zu speichern |

43| `/extra-usage` | Konfigurieren Sie zusätzliche Nutzung, um weiterzuarbeiten, wenn Ratenlimits erreicht werden |

44| `/fast [on\|off]` | Schalten Sie den [schnellen Modus](/de/fast-mode) ein oder aus |

45| `/feedback [report]` | Geben Sie Feedback zu Claude Code. Alias: `/bug` |

46| `/fewer-permission-prompts` | **[Skill](/de/skills#bundled-skills).** Scannen Sie Ihre Transkripte nach häufigen schreibgeschützten Bash- und MCP-Tool-Aufrufen, dann fügen Sie eine priorisierte Allowlist zu Projekt `.claude/settings.json` hinzu, um Berechtigungsaufforderungen zu reduzieren |

47| `/focus` | Schalten Sie die Fokusansicht um, die nur Ihre letzte Eingabeaufforderung, eine einzeilige Tool-Call-Zusammenfassung mit Edit-Diffstats und die endgültige Antwort anzeigt. Die Auswahl bleibt über Sitzungen hinweg erhalten. Nur in [Vollbildrendering](/de/fullscreen) verfügbar |

48| `/heapdump` | Schreiben Sie einen JavaScript-Heap-Snapshot und eine Speicheraufschlüsselung nach `~/Desktop`, oder Ihr Home-Verzeichnis unter Linux ohne Desktop-Ordner, um hohe Speichernutzung zu diagnostizieren. Siehe [Troubleshooting](/de/troubleshooting#high-cpu-or-memory-usage) |

49| `/help` | Zeigen Sie Hilfe und verfügbare Befehle an |

50| `/hooks` | Zeigen Sie [Hook](/de/hooks)-Konfigurationen für Tool-Ereignisse an |

51| `/ide` | Verwalten Sie IDE-Integrationen und zeigen Sie den Status an |

52| `/init` | Initialisieren Sie das Projekt mit einer `CLAUDE.md`-Anleitung. Setzen Sie `CLAUDE_CODE_NEW_INIT=1` für einen interaktiven Flow, der Sie auch durch Skills, Hooks und persönliche Speicherdateien führt |

53| `/insights` | Generieren Sie einen Bericht, der Ihre Claude Code-Sitzungen analysiert, einschließlich Projektbereiche, Interaktionsmuster und Reibungspunkte |

54| `/install-github-app` | Richten Sie die [Claude GitHub Actions](/de/github-actions)-App für ein Repository ein. Führt Sie durch die Auswahl eines Repos und die Konfiguration der Integration |

55| `/install-slack-app` | Installieren Sie die Claude Slack-App. Öffnet einen Browser, um den OAuth-Flow abzuschließen |

56| `/keybindings` | Öffnen oder erstellen Sie Ihre Tastenkombinationskonfigurationsdatei |

57| `/login` | Melden Sie sich bei Ihrem Anthropic-Konto an |

58| `/logout` | Melden Sie sich von Ihrem Anthropic-Konto ab |

59| `/loop [interval] [prompt]` | **[Skill](/de/skills#bundled-skills).** Führen Sie eine Eingabeaufforderung wiederholt aus, während die Sitzung offen bleibt. Lassen Sie das Intervall weg und Claude bestimmt das Tempo zwischen Iterationen selbst. Lassen Sie die Eingabeaufforderung weg und Claude führt eine autonome Wartungsprüfung durch, oder die Eingabeaufforderung in `.claude/loop.md`, falls vorhanden. Beispiel: `/loop 5m check if the deploy finished`. Siehe [Eingabeaufforderungen nach Zeitplan ausführen](/de/scheduled-tasks). Alias: `/proactive` |

60| `/mcp` | Verwalten Sie MCP-Serververbindungen und OAuth-Authentifizierung |

61| `/memory` | Bearbeiten Sie `CLAUDE.md`-Speicherdateien, aktivieren oder deaktivieren Sie [Auto-Memory](/de/memory#auto-memory), und zeigen Sie Auto-Memory-Einträge an |

62| `/mobile` | Zeigen Sie QR-Code zum Herunterladen der Claude Mobile-App an. Aliase: `/ios`, `/android` |

63| `/model [model]` | Wählen Sie das KI-Modell aus oder ändern Sie es. Für Modelle, die dies unterstützen, verwenden Sie Links-/Rechtspfeile, um die [Anstrengungsstufe anzupassen](/de/model-config#adjust-effort-level). Ohne Argument wird eine Auswahl geöffnet, die um Bestätigung fragt, wenn das Gespräch vorherige Ausgaben hat, da die nächste Antwort die vollständige Historie ohne zwischengespeicherten Kontext erneut liest. Nach Bestätigung wird die Änderung sofort wirksam, ohne auf die Fertigstellung der aktuellen Antwort zu warten |

64| `/passes` | Teilen Sie eine kostenlose Woche Claude Code mit Freunden. Nur sichtbar, wenn Ihr Konto berechtigt ist |

65| `/permissions` | Verwalten Sie Zulassen-, Fragen- und Ablehnen-Regeln für Tool-Berechtigungen. Öffnet einen interaktiven Dialog, in dem Sie Regeln nach Umfang anzeigen, Regeln hinzufügen oder entfernen, Arbeitsverzeichnisse verwalten und [kürzliche Auto-Modus-Ablehnungen](/de/auto-mode-config#review-denials) überprüfen können. Alias: `/allowed-tools` |

66| `/plan [description]` | Geben Sie den Plan-Modus direkt von der Eingabeaufforderung ein. Übergeben Sie eine optionale Beschreibung, um den Plan-Modus zu aktivieren und sofort mit dieser Aufgabe zu beginnen, zum Beispiel `/plan fix the auth bug` |

67| `/plugin` | Verwalten Sie Claude Code [Plugins](/de/plugins) |

68| `/powerup` | Entdecken Sie Claude Code-Funktionen durch schnelle interaktive Lektionen mit animierten Demos |

69| `/pr-comments [PR]` | {/* max-version: 2.1.90 */}Entfernt in v2.1.91. Fragen Sie Claude direkt, um Pull Request-Kommentare anzuzeigen. In früheren Versionen werden Kommentare aus einem GitHub Pull Request abgerufen und angezeigt; erkennt automatisch den PR für den aktuellen Branch, oder übergeben Sie eine PR-URL oder -Nummer. Erfordert die `gh` CLI |

70| `/privacy-settings` | Zeigen Sie Ihre Datenschutzeinstellungen an und aktualisieren Sie sie. Nur für Pro- und Max-Plan-Abonnenten verfügbar |

71| `/recap` | Generieren Sie eine einzeilige Zusammenfassung der aktuellen Sitzung auf Anfrage. Siehe [Sitzungs-Recap](/de/interactive-mode#session-recap) für das automatische Recap, das angezeigt wird, nachdem Sie weg waren |

72| `/release-notes` | Zeigen Sie das Änderungsprotokoll in einer interaktiven Versionswahl an. Wählen Sie eine bestimmte Version, um ihre Versionshinweise anzuzeigen, oder wählen Sie, um alle Versionen anzuzeigen |

73| `/reload-plugins` | Laden Sie alle aktiven [Plugins](/de/plugins) neu, um ausstehende Änderungen anzuwenden, ohne neu zu starten. Meldet Zählungen für jede neu geladene Komponente und kennzeichnet alle Ladefehler |

74| `/remote-control` | Machen Sie diese Sitzung für [Fernsteuerung](/de/remote-control) von claude.ai verfügbar. Alias: `/rc` |

75| `/remote-env` | Konfigurieren Sie die Standard-Remote-Umgebung für [Web-Sitzungen, die mit `--remote` gestartet wurden](/de/claude-code-on-the-web#configure-your-environment) |

76| `/rename [name]` | Benennen Sie die aktuelle Sitzung um und zeigen Sie den Namen in der Eingabeaufforderungsleiste an. Ohne einen Namen wird automatisch einer aus dem Gesprächsverlauf generiert |

77| `/resume [session]` | Setzen Sie ein Gespräch nach ID oder Name fort, oder öffnen Sie die Sitzungsauswahl. Alias: `/continue` |

78| `/review [PR]` | Überprüfen Sie einen Pull Request lokal in Ihrer aktuellen Sitzung. Für eine tiefere Cloud-basierte Überprüfung siehe [`/ultrareview`](/de/ultrareview) |

79| `/rewind` | Spulen Sie das Gespräch und/oder den Code zu einem früheren Punkt zurück, oder fassen Sie ab einer ausgewählten Nachricht zusammen. Siehe [Checkpointing](/de/checkpointing). Aliase: `/checkpoint`, `/undo` |

80| `/sandbox` | Schalten Sie den [Sandbox-Modus](/de/sandboxing) um. Nur auf unterstützten Plattformen verfügbar |

81| `/schedule [description]` | Erstellen, aktualisieren, listen oder führen Sie [Routinen](/de/routines) aus. Claude führt Sie conversational durch die Einrichtung. Alias: `/routines` |

82| `/security-review` | Analysieren Sie ausstehende Änderungen im aktuellen Branch auf Sicherheitslücken. Überprüft den Git-Diff und identifiziert Risiken wie Injection, Authentifizierungsprobleme und Datenverlust |

83| `/setup-bedrock` | Konfigurieren Sie [Amazon Bedrock](/de/amazon-bedrock)-Authentifizierung, Region und Modell-Pins durch einen interaktiven Wizard. Nur sichtbar, wenn `CLAUDE_CODE_USE_BEDROCK=1` gesetzt ist. Erstbenutzer von Bedrock können auch auf diesen Wizard vom Login-Bildschirm zugreifen |

84| `/setup-vertex` | Konfigurieren Sie [Google Vertex AI](/de/google-vertex-ai)-Authentifizierung, Projekt, Region und Modell-Pins durch einen interaktiven Wizard. Nur sichtbar, wenn `CLAUDE_CODE_USE_VERTEX=1` gesetzt ist. Erstbenutzer von Vertex AI können auch auf diesen Wizard vom Login-Bildschirm zugreifen |

85| `/simplify [focus]` | **[Skill](/de/skills#bundled-skills).** Überprüfen Sie Ihre kürzlich geänderten Dateien auf Code-Wiederverwendung, Qualität und Effizienzprobleme, dann beheben Sie sie. Startet drei Review-Agenten parallel, aggregiert ihre Erkenntnisse und wendet Fixes an. Übergeben Sie Text, um sich auf spezifische Bedenken zu konzentrieren: `/simplify focus on memory efficiency` |

86| `/skills` | Listet verfügbare [Skills](/de/skills) auf. Drücken Sie `t`, um nach Token-Anzahl zu sortieren |

87| `/stats` | Alias für `/usage`. Öffnet auf der Registerkarte Stats |

88| `/status` | Öffnen Sie die Einstellungsschnittstelle (Registerkarte Status) mit Version, Modell, Konto und Konnektivität. Funktioniert, während Claude antwortet, ohne auf die Fertigstellung der aktuellen Antwort zu warten |

89| `/statusline` | Konfigurieren Sie Claude Codes [Statuszeile](/de/statusline). Beschreiben Sie, was Sie möchten, oder führen Sie ohne Argumente aus, um automatisch von Ihrer Shell-Eingabeaufforderung zu konfigurieren |

90| `/stickers` | Bestellen Sie Claude Code-Aufkleber |

91| `/tasks` | Listet und verwaltet Hintergrundaufgaben. Auch verfügbar als `/bashes` |

92| `/team-onboarding` | Generieren Sie einen Team-Onboarding-Leitfaden aus Ihrer Claude Code-Nutzungshistorie. Claude analysiert Ihre Sitzungen, Befehle und MCP-Server-Nutzung der letzten 30 Tage und erstellt einen Markdown-Leitfaden, den ein Teamkollege als erste Nachricht einfügen kann, um sich schnell einzurichten |

93| `/teleport` | Ziehen Sie eine [Claude Code im Web](/de/claude-code-on-the-web#from-web-to-terminal)-Sitzung in dieses Terminal: öffnet eine Auswahl, dann ruft den Branch und das Gespräch ab. Auch verfügbar als `/tp`. Erfordert ein claude.ai-Abonnement |

94| `/terminal-setup` | Konfigurieren Sie Terminal-Tastenkombinationen für Shift+Enter und andere Verknüpfungen. Nur in Terminals sichtbar, die dies benötigen, wie VS Code, Cursor, Windsurf, Alacritty oder Zed |

95| `/theme` | Ändern Sie das Farbschema. Enthält eine `auto`-Option, die dem dunklen oder hellen Modus Ihres Terminals folgt, helle und dunkle Varianten, farbenblindgerechte (daltonisierte) Designs, ANSI-Designs, die die Farbpalette Ihres Terminals verwenden, und alle [benutzerdefinierten Designs](/de/terminal-config#create-a-custom-theme) aus `~/.claude/themes/` oder Plugins. Wählen Sie **Neues benutzerdefiniertes Design…**, um eines zu erstellen |

96| `/tui [default\|fullscreen]` | Legen Sie den Terminal-UI-Renderer fest und starten Sie ihn mit Ihrem Gespräch intakt neu. `fullscreen` aktiviert den [flimmerfreien Alt-Screen-Renderer](/de/fullscreen). Ohne Argument wird der aktive Renderer gedruckt |

97| `/ultraplan <prompt>` | Entwerfen Sie einen Plan in einer [Ultraplan](/de/ultraplan)-Sitzung, überprüfen Sie ihn in Ihrem Browser, dann führen Sie ihn remote aus oder senden Sie ihn zurück zu Ihrem Terminal |

98| `/ultrareview [PR]` | Führen Sie eine tiefe, Multi-Agent-Code-Überprüfung in einer Cloud-Sandbox mit [Ultrareview](/de/ultrareview) durch. Enthält 3 kostenlose Durchläufe auf Pro und Max bis zum 5. Mai 2026, dann erfordert [zusätzliche Nutzung](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

99| `/upgrade` | Öffnen Sie die Upgrade-Seite, um zu einem höheren Plan-Tier zu wechseln |

100| `/usage` | Zeigen Sie Sitzungskosten, Plan-Nutzungslimits und Aktivitätsstatistiken an. Siehe die [Kostentracking-Anleitung](/de/costs#using-the-%2Fusage-command) für abonnementspezifische Details. `/cost` und `/stats` sind Aliase |

101| `/vim` | {/* max-version: 2.1.91 */}Entfernt in v2.1.92. Um zwischen Vim- und Normal-Bearbeitungsmodi zu wechseln, verwenden Sie `/config` → Editor mode |

102| `/voice [hold\|tap\|off]` | Schalten Sie [Sprachdiktat](/de/voice-dictation) um, oder aktivieren Sie es in einem bestimmten Modus. Erfordert ein Claude.ai-Konto |

103| `/web-setup` | Verbinden Sie Ihr GitHub-Konto mit [Claude Code im Web](/de/web-quickstart#connect-from-your-terminal) mit Ihren lokalen `gh` CLI-Anmeldedaten. `/schedule` fordert dies automatisch auf, wenn GitHub nicht verbunden ist |

104 

105## MCP-Eingabeaufforderungen

106 

107MCP-Server können Eingabeaufforderungen verfügbar machen, die als Befehle angezeigt werden. Diese verwenden das Format `/mcp__<server>__<prompt>` und werden dynamisch von verbundenen Servern erkannt. Siehe [MCP-Eingabeaufforderungen](/de/mcp#use-mcp-prompts-as-commands) für Details.

108 

109## Siehe auch

110 

111* [Skills](/de/skills): Erstellen Sie Ihre eigenen Befehle

112* [Interaktiver Modus](/de/interactive-mode): Tastenkombinationen, Vim-Modus und Befehlsverlauf

113* [CLI-Referenz](/de/cli-reference): Start-Flags

common-workflows.md +1030 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Häufige Workflows

6 

7> Schritt-für-Schritt-Anleitungen zum Erkunden von Codebases, Beheben von Fehlern, Refaktorierung, Testen und anderen alltäglichen Aufgaben mit Claude Code.

8 

9Diese Seite behandelt praktische Workflows für die alltägliche Entwicklung: Erkunden unbekannter Code, Debugging, Refaktorierung, Schreiben von Tests, Erstellen von PRs und Verwalten von Sitzungen. Jeder Abschnitt enthält Beispiel-Prompts, die Sie an Ihre eigenen Projekte anpassen können. Für übergeordnete Muster und Tipps siehe [Best Practices](/de/best-practices).

10 

11## Neue Codebases verstehen

12 

13### Schnelle Codebase-Übersicht erhalten

14 

15Angenommen, Sie sind gerade einem neuen Projekt beigetreten und müssen dessen Struktur schnell verstehen.

16 

17<Steps>

18 <Step title="Navigieren Sie zum Projektroot-Verzeichnis">

19 ```bash theme={null}

20 cd /path/to/project

21 ```

22 </Step>

23 

24 <Step title="Starten Sie Claude Code">

25 ```bash theme={null}

26 claude

27 ```

28 </Step>

29 

30 <Step title="Fragen Sie nach einer Übersicht auf hoher Ebene">

31 ```text theme={null}

32 give me an overview of this codebase

33 ```

34 </Step>

35 

36 <Step title="Tauchen Sie tiefer in spezifische Komponenten ein">

37 ```text theme={null}

38 explain the main architecture patterns used here

39 ```

40 

41 ```text theme={null}

42 what are the key data models?

43 ```

44 

45 ```text theme={null}

46 how is authentication handled?

47 ```

48 </Step>

49</Steps>

50 

51<Tip>

52 Tipps:

53 

54 * Beginnen Sie mit breiten Fragen und grenzen Sie dann auf spezifische Bereiche ein

55 * Fragen Sie nach Coding-Konventionen und Mustern, die im Projekt verwendet werden

56 * Fordern Sie ein Glossar projektspezifischer Begriffe an

57</Tip>

58 

59### Relevanten Code finden

60 

61Angenommen, Sie müssen Code finden, der sich auf eine bestimmte Funktion oder Funktionalität bezieht.

62 

63<Steps>

64 <Step title="Bitten Sie Claude, relevante Dateien zu finden">

65 ```text theme={null}

66 find the files that handle user authentication

67 ```

68 </Step>

69 

70 <Step title="Erhalten Sie Kontext darüber, wie Komponenten zusammenwirken">

71 ```text theme={null}

72 how do these authentication files work together?

73 ```

74 </Step>

75 

76 <Step title="Verstehen Sie den Ausführungsfluss">

77 ```text theme={null}

78 trace the login process from front-end to database

79 ```

80 </Step>

81</Steps>

82 

83<Tip>

84 Tipps:

85 

86 * Seien Sie spezifisch bei dem, was Sie suchen

87 * Verwenden Sie Domänensprache aus dem Projekt

88 * Installieren Sie ein [Code-Intelligence-Plugin](/de/discover-plugins#code-intelligence) für Ihre Sprache, um Claude präzise 'Go to Definition"- und „Find References"-Navigation zu geben

89</Tip>

90 

91***

92 

93## Fehler effizient beheben

94 

95Angenommen, Sie sind auf eine Fehlermeldung gestoßen und müssen deren Quelle finden und beheben.

96 

97<Steps>

98 <Step title="Teilen Sie den Fehler mit Claude">

99 ```text theme={null}

100 I'm seeing an error when I run npm test

101 ```

102 </Step>

103 

104 <Step title="Fragen Sie nach Behebungsempfehlungen">

105 ```text theme={null}

106 suggest a few ways to fix the @ts-ignore in user.ts

107 ```

108 </Step>

109 

110 <Step title="Wenden Sie die Behebung an">

111 ```text theme={null}

112 update user.ts to add the null check you suggested

113 ```

114 </Step>

115</Steps>

116 

117<Tip>

118 Tipps:

119 

120 * Teilen Sie Claude den Befehl mit, um das Problem zu reproduzieren und einen Stack Trace zu erhalten

121 * Erwähnen Sie alle Schritte, um den Fehler zu reproduzieren

122 * Lassen Sie Claude wissen, ob der Fehler intermittierend oder konsistent ist

123</Tip>

124 

125***

126 

127## Code refaktorieren

128 

129Angenommen, Sie müssen alten Code aktualisieren, um moderne Muster und Praktiken zu verwenden.

130 

131<Steps>

132 <Step title="Identifizieren Sie Legacy-Code zur Refaktorierung">

133 ```text theme={null}

134 find deprecated API usage in our codebase

135 ```

136 </Step>

137 

138 <Step title="Erhalten Sie Refaktorierungsempfehlungen">

139 ```text theme={null}

140 suggest how to refactor utils.js to use modern JavaScript features

141 ```

142 </Step>

143 

144 <Step title="Wenden Sie die Änderungen sicher an">

145 ```text theme={null}

146 refactor utils.js to use ES2024 features while maintaining the same behavior

147 ```

148 </Step>

149 

150 <Step title="Überprüfen Sie die Refaktorierung">

151 ```text theme={null}

152 run tests for the refactored code

153 ```

154 </Step>

155</Steps>

156 

157<Tip>

158 Tipps:

159 

160 * Bitten Sie Claude, die Vorteile des modernen Ansatzes zu erklären

161 * Fordern Sie an, dass Änderungen die Rückwärtskompatibilität beibehalten, wenn nötig

162 * Führen Sie Refaktorierung in kleinen, testbaren Schritten durch

163</Tip>

164 

165***

166 

167## Spezialisierte Subagents verwenden

168 

169Angenommen, Sie möchten spezialisierte KI-Subagents verwenden, um bestimmte Aufgaben effektiver zu bewältigen.

170 

171<Steps>

172 <Step title="Verfügbare Subagents anzeigen">

173 ```text theme={null}

174 /agents

175 ```

176 

177 Dies zeigt alle verfügbaren Subagents und ermöglicht es Ihnen, neue zu erstellen.

178 </Step>

179 

180 <Step title="Subagents automatisch verwenden">

181 Claude Code delegiert automatisch geeignete Aufgaben an spezialisierte Subagents:

182 

183 ```text theme={null}

184 review my recent code changes for security issues

185 ```

186 

187 ```text theme={null}

188 run all tests and fix any failures

189 ```

190 </Step>

191 

192 <Step title="Fordern Sie explizit spezifische Subagents an">

193 ```text theme={null}

194 use the code-reviewer subagent to check the auth module

195 ```

196 

197 ```text theme={null}

198 have the debugger subagent investigate why users can't log in

199 ```

200 </Step>

201 

202 <Step title="Erstellen Sie benutzerdefinierte Subagents für Ihren Workflow">

203 ```text theme={null}

204 /agents

205 ```

206 

207 Wählen Sie dann 'Create New subagent" und folgen Sie den Aufforderungen, um Folgendes zu definieren:

208 

209 * Eine eindeutige Kennung, die den Zweck des Subagent beschreibt (z. B. `code-reviewer`, `api-designer`).

210 * Wann Claude diesen Agent verwenden sollte

211 * Welche Tools er verwenden kann

212 * Ein System-Prompt, der die Rolle und das Verhalten des Agents beschreibt

213 </Step>

214</Steps>

215 

216<Tip>

217 Tipps:

218 

219 * Erstellen Sie projektspezifische Subagents in `.claude/agents/` zum Teilen im Team

220 * Verwenden Sie beschreibende `description`-Felder, um automatische Delegation zu ermöglichen

221 * Begrenzen Sie den Tool-Zugriff auf das, was jeder Subagent tatsächlich benötigt

222 * Überprüfen Sie die [Subagents-Dokumentation](/de/sub-agents) für detaillierte Beispiele

223</Tip>

224 

225***

226 

227## Plan Mode für sichere Code-Analyse verwenden

228 

229Plan Mode weist Claude an, einen Plan zu erstellen, indem die Codebase mit schreibgeschützten Operationen analysiert wird. Dies ist perfekt zum Erkunden von Codebases, Planen komplexer Änderungen oder sicheren Überprüfen von Code. Im Plan Mode verwendet Claude [`AskUserQuestion`](/de/tools-reference), um Anforderungen zu sammeln und Ihre Ziele zu klären, bevor ein Plan vorgeschlagen wird.

230 

231### Wann Plan Mode verwendet werden sollte

232 

233* **Multi-Schritt-Implementierung**: Wenn Ihre Funktion Änderungen an vielen Dateien erfordert

234* **Code-Exploration**: Wenn Sie die Codebase gründlich erforschen möchten, bevor Sie etwas ändern

235* **Interaktive Entwicklung**: Wenn Sie die Richtung mit Claude iterieren möchten

236 

237### Wie Plan Mode verwendet wird

238 

239**Aktivieren Sie Plan Mode während einer Sitzung**

240 

241Sie können während einer Sitzung mit **Shift+Tab** in Plan Mode wechseln, um durch Berechtigungsmodi zu zyklisieren.

242 

243Wenn Sie sich im Normal Mode befinden, wechselt **Shift+Tab** zunächst in Auto-Accept Mode, angezeigt durch `⏵⏵ accept edits on` am unteren Rand des Terminals. Ein nachfolgendes **Shift+Tab** wechselt in Plan Mode, angezeigt durch `⏸ plan mode on`.

244 

245**Starten Sie eine neue Sitzung im Plan Mode**

246 

247Um eine neue Sitzung im Plan Mode zu starten, verwenden Sie das Flag `--permission-mode plan`:

248 

249```bash theme={null}

250claude --permission-mode plan

251```

252 

253**Führen Sie „Headless"-Abfragen im Plan Mode aus**

254 

255Sie können auch eine Abfrage im Plan Mode direkt mit `-p` ausführen (d. h. im ["Headless-Modus"](/de/headless)):

256 

257```bash theme={null}

258claude --permission-mode plan -p "Analyze the authentication system and suggest improvements"

259```

260 

261### Beispiel: Planen einer komplexen Refaktorierung

262 

263```bash theme={null}

264claude --permission-mode plan

265```

266 

267```text theme={null}

268I need to refactor our authentication system to use OAuth2. Create a detailed migration plan.

269```

270 

271Claude analysiert die aktuelle Implementierung und erstellt einen umfassenden Plan. Verfeinern Sie mit Folgefragen:

272 

273```text theme={null}

274What about backward compatibility?

275```

276 

277```text theme={null}

278How should we handle database migration?

279```

280 

281<Tip>Drücken Sie `Ctrl+G`, um den Plan in Ihrem Standard-Texteditor zu öffnen, wo Sie ihn direkt bearbeiten können, bevor Claude fortfährt.</Tip>

282 

283Wenn Sie einen Plan akzeptieren, benennt Claude die Sitzung automatisch basierend auf dem Plan-Inhalt. Der Name wird in der Prompt-Leiste und in der Sitzungsauswahl angezeigt. Wenn Sie bereits einen Namen mit `--name` oder `/rename` festgelegt haben, wird das Akzeptieren eines Plans diesen nicht überschreiben.

284 

285### Konfigurieren Sie Plan Mode als Standard

286 

287```json theme={null}

288// .claude/settings.json

289{

290 "permissions": {

291 "defaultMode": "plan"

292 }

293}

294```

295 

296Weitere Konfigurationsoptionen finden Sie in der [Einstellungsdokumentation](/de/settings#available-settings).

297 

298***

299 

300## Mit Tests arbeiten

301 

302Angenommen, Sie müssen Tests für nicht abgedeckten Code hinzufügen.

303 

304<Steps>

305 <Step title="Identifizieren Sie nicht getesteten Code">

306 ```text theme={null}

307 find functions in NotificationsService.swift that are not covered by tests

308 ```

309 </Step>

310 

311 <Step title="Generieren Sie Test-Gerüste">

312 ```text theme={null}

313 add tests for the notification service

314 ```

315 </Step>

316 

317 <Step title="Fügen Sie aussagekräftige Testfälle hinzu">

318 ```text theme={null}

319 add test cases for edge conditions in the notification service

320 ```

321 </Step>

322 

323 <Step title="Führen Sie Tests aus und überprüfen Sie sie">

324 ```text theme={null}

325 run the new tests and fix any failures

326 ```

327 </Step>

328</Steps>

329 

330Claude kann Tests generieren, die den vorhandenen Mustern und Konventionen Ihres Projekts entsprechen. Seien Sie beim Anfordern von Tests spezifisch darüber, welches Verhalten Sie überprüfen möchten. Claude untersucht Ihre vorhandenen Testdateien, um den Stil, die Frameworks und die Assertion-Muster zu entsprechen, die bereits verwendet werden.

331 

332Für umfassende Abdeckung bitten Sie Claude, Grenzfälle zu identifizieren, die Sie möglicherweise übersehen haben. Claude kann Ihre Code-Pfade analysieren und Tests für Fehlerbedingungen, Grenzwerte und unerwartete Eingaben vorschlagen, die leicht zu übersehen sind.

333 

334***

335 

336## Pull Requests erstellen

337 

338Sie können Pull Requests erstellen, indem Sie Claude direkt fragen („create a pr for my changes"), oder Claude Schritt für Schritt führen:

339 

340<Steps>

341 <Step title="Fassen Sie Ihre Änderungen zusammen">

342 ```text theme={null}

343 summarize the changes I've made to the authentication module

344 ```

345 </Step>

346 

347 <Step title="Generieren Sie einen Pull Request">

348 ```text theme={null}

349 create a pr

350 ```

351 </Step>

352 

353 <Step title="Überprüfen und verfeinern Sie">

354 ```text theme={null}

355 enhance the PR description with more context about the security improvements

356 ```

357 </Step>

358</Steps>

359 

360Wenn Sie einen PR mit `gh pr create` erstellen, wird die Sitzung automatisch mit diesem PR verknüpft. Sie können sie später mit `claude --from-pr <number>` fortsetzen.

361 

362<Tip>

363 Überprüfen Sie den von Claude generierten PR vor dem Einreichen und bitten Sie Claude, potenzielle Risiken oder Überlegungen hervorzuheben.

364</Tip>

365 

366## Dokumentation verwalten

367 

368Angenommen, Sie müssen Dokumentation für Ihren Code hinzufügen oder aktualisieren.

369 

370<Steps>

371 <Step title="Identifizieren Sie nicht dokumentierten Code">

372 ```text theme={null}

373 find functions without proper JSDoc comments in the auth module

374 ```

375 </Step>

376 

377 <Step title="Generieren Sie Dokumentation">

378 ```text theme={null}

379 add JSDoc comments to the undocumented functions in auth.js

380 ```

381 </Step>

382 

383 <Step title="Überprüfen und verbessern Sie">

384 ```text theme={null}

385 improve the generated documentation with more context and examples

386 ```

387 </Step>

388 

389 <Step title="Überprüfen Sie die Dokumentation">

390 ```text theme={null}

391 check if the documentation follows our project standards

392 ```

393 </Step>

394</Steps>

395 

396<Tip>

397 Tipps:

398 

399 * Geben Sie den Dokumentationsstil an, den Sie möchten (JSDoc, Docstrings usw.)

400 * Fordern Sie Beispiele in der Dokumentation an

401 * Fordern Sie Dokumentation für öffentliche APIs, Schnittstellen und komplexe Logik an

402</Tip>

403 

404***

405 

406## Mit Notizen und Nicht-Code-Ordnern arbeiten

407 

408Claude Code funktioniert in jedem Verzeichnis. Führen Sie es in einem Notiz-Vault, einem Dokumentationsordner oder einer beliebigen Sammlung von Markdown-Dateien aus, um Inhalte auf die gleiche Weise zu suchen, zu bearbeiten und zu reorganisieren wie Code.

409 

410Das Verzeichnis `.claude/` und `CLAUDE.md` befinden sich neben den Konfigurationsverzeichnissen anderer Tools ohne Konflikte. Claude liest Dateien bei jedem Tool-Aufruf neu, daher sieht es Änderungen, die Sie in einer anderen Anwendung vornehmen, beim nächsten Lesen dieser Datei.

411 

412***

413 

414## Mit Bildern arbeiten

415 

416Angenommen, Sie müssen mit Bildern in Ihrer Codebase arbeiten und möchten Claudes Hilfe bei der Analyse von Bildinhalten.

417 

418<Steps>

419 <Step title="Fügen Sie ein Bild zum Gespräch hinzu">

420 Sie können eine dieser Methoden verwenden:

421 

422 1. Ziehen Sie ein Bild per Drag & Drop in das Claude Code-Fenster

423 2. Kopieren Sie ein Bild und fügen Sie es in die CLI mit Strg+V ein (verwenden Sie nicht Cmd+V)

424 3. Geben Sie Claude einen Bildpfad an. Z. B. „Analyze this image: /path/to/your/image.png"

425 </Step>

426 

427 <Step title="Bitten Sie Claude, das Bild zu analysieren">

428 ```text theme={null}

429 What does this image show?

430 ```

431 

432 ```text theme={null}

433 Describe the UI elements in this screenshot

434 ```

435 

436 ```text theme={null}

437 Are there any problematic elements in this diagram?

438 ```

439 </Step>

440 

441 <Step title="Verwenden Sie Bilder für Kontext">

442 ```text theme={null}

443 Here's a screenshot of the error. What's causing it?

444 ```

445 

446 ```text theme={null}

447 This is our current database schema. How should we modify it for the new feature?

448 ```

449 </Step>

450 

451 <Step title="Erhalten Sie Code-Vorschläge aus visuellem Inhalt">

452 ```text theme={null}

453 Generate CSS to match this design mockup

454 ```

455 

456 ```text theme={null}

457 What HTML structure would recreate this component?

458 ```

459 </Step>

460</Steps>

461 

462<Tip>

463 Tipps:

464 

465 * Verwenden Sie Bilder, wenn Textbeschreibungen unklar oder umständlich wären

466 * Fügen Sie Screenshots von Fehlern, UI-Designs oder Diagrammen für besseren Kontext ein

467 * Sie können mehrere Bilder in einem Gespräch verwenden

468 * Die Bildanalyse funktioniert mit Diagrammen, Screenshots, Mockups und mehr

469 * Wenn Claude auf Bilder verweist (z. B. `[Image #1]`), `Cmd+Click` (Mac) oder `Ctrl+Click` (Windows/Linux) den Link, um das Bild in Ihrem Standard-Viewer zu öffnen

470</Tip>

471 

472***

473 

474## Dateien und Verzeichnisse referenzieren

475 

476Verwenden Sie @, um schnell Dateien oder Verzeichnisse einzubeziehen, ohne auf Claude zu warten, um sie zu lesen.

477 

478<Steps>

479 <Step title="Referenzieren Sie eine einzelne Datei">

480 ```text theme={null}

481 Explain the logic in @src/utils/auth.js

482 ```

483 

484 Dies fügt den vollständigen Inhalt der Datei in das Gespräch ein.

485 </Step>

486 

487 <Step title="Referenzieren Sie ein Verzeichnis">

488 ```text theme={null}

489 What's the structure of @src/components?

490 ```

491 

492 Dies bietet eine Verzeichnisauflistung mit Dateiinformationen.

493 </Step>

494 

495 <Step title="Referenzieren Sie MCP-Ressourcen">

496 ```text theme={null}

497 Show me the data from @github:repos/owner/repo/issues

498 ```

499 

500 Dies ruft Daten von verbundenen MCP-Servern im Format @server:resource ab. Weitere Details finden Sie unter [MCP-Ressourcen](/de/mcp#use-mcp-resources).

501 </Step>

502</Steps>

503 

504<Tip>

505 Tipps:

506 

507 * Dateipfade können relativ oder absolut sein

508 * @ Dateireferenzen fügen `CLAUDE.md` im Verzeichnis der Datei und übergeordneten Verzeichnissen zum Kontext hinzu

509 * Verzeichnisreferenzen zeigen Dateiauflistungen, keine Inhalte

510 * Sie können mehrere Dateien in einer einzelnen Nachricht referenzieren (z. B. „@file1.js and @file2.js")

511</Tip>

512 

513***

514 

515## Verwenden Sie erweitertes Denken (Thinking Mode)

516 

517[Erweitertes Denken](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) ist standardmäßig aktiviert und gibt Claude Platz, um komplexe Probleme Schritt für Schritt zu durchdenken, bevor er antwortet. Dieses Denken ist im ausführlichen Modus sichtbar, den Sie mit `Ctrl+O` umschalten können. Während des erweiterten Denkens zeigt der Spinner Inline-Fortschrittshinweise wie „still thinking" und „almost done thinking" an, um zu zeigen, dass Claude aktiv arbeitet.

518 

519Darüber hinaus verwenden [Modelle, die Effort unterstützen](/de/model-config#adjust-effort-level), adaptives Denken: Anstelle eines festen Thinking-Token-Budgets entscheidet das Modell dynamisch, ob und wie viel es denken soll, basierend auf Ihrer Effort-Level-Einstellung und der anstehenden Aufgabe. Adaptives Denken ermöglicht es Claude, schneller auf Routine-Prompts zu reagieren und tieferes Denken für Schritte zu reservieren, die davon profitieren.

520 

521Erweitertes Denken ist besonders wertvoll für komplexe architektonische Entscheidungen, schwierige Fehler, mehrstufige Implementierungsplanung und Bewertung von Kompromissen zwischen verschiedenen Ansätzen.

522 

523<Note>

524 Phrasen wie „think", „think hard" und „think more" werden als reguläre Prompt-Anweisungen interpretiert und weisen keine Thinking-Tokens zu.

525</Note>

526 

527### Konfigurieren Sie Thinking Mode

528 

529Thinking ist standardmäßig aktiviert, aber Sie können es anpassen oder deaktivieren.

530 

531| Bereich | Wie man konfiguriert | Details |

532| ------------------------------ | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

533| **Effort Level** | Führen Sie `/effort` aus, passen Sie in `/model` an, oder setzen Sie [`CLAUDE_CODE_EFFORT_LEVEL`](/de/env-vars) | Steuern Sie die Thinking-Tiefe auf [unterstützten Modellen](/de/model-config#adjust-effort-level) |

534| **`ultrathink` Schlüsselwort** | Fügen Sie „ultrathink" irgendwo in Ihrem Prompt ein | Fügt eine In-Context-Anweisung hinzu, die das Modell anweist, mehr auf diesem Turn zu denken. Ändert nicht die Effort-Ebene selbst; siehe [Effort Level anpassen](/de/model-config#adjust-effort-level) dafür |

535| **Toggle-Verknüpfung** | Drücken Sie `Option+T` (macOS) oder `Alt+T` (Windows/Linux) | Schalten Sie Thinking für die aktuelle Sitzung ein/aus (alle Modelle). Kann [Terminal-Konfiguration](/de/terminal-config) erfordern, um Option-Tasten-Verknüpfungen zu aktivieren |

536| **Globaler Standard** | Verwenden Sie `/config`, um Thinking Mode umzuschalten | Setzt Ihren Standard über alle Projekte (alle Modelle).<br />Gespeichert als `alwaysThinkingEnabled` in `~/.claude/settings.json` |

537| **Token-Budget begrenzen** | Setzen Sie die Umgebungsvariable [`MAX_THINKING_TOKENS`](/de/env-vars) | Begrenzen Sie das Thinking-Budget auf eine bestimmte Anzahl von Tokens. Auf Modellen mit adaptivem Denken gilt nur `0`, es sei denn, adaptives Denken ist deaktiviert. Beispiel: `export MAX_THINKING_TOKENS=10000` |

538 

539Um Claudes Thinking-Prozess anzuzeigen, drücken Sie `Ctrl+O`, um den ausführlichen Modus umzuschalten und das interne Denken als grauer kursiver Text angezeigt zu sehen.

540 

541### Wie erweitertes Denken funktioniert

542 

543Erweitertes Denken steuert, wie viel internes Denken Claude vor der Antwort durchführt. Mehr Denken bietet mehr Platz, um Lösungen zu erkunden, Grenzfälle zu analysieren und Fehler selbst zu korrigieren.

544 

545Auf [Modellen, die Effort unterstützen](/de/model-config#adjust-effort-level), verwendet Thinking adaptives Denken: Das Modell weist Thinking-Tokens dynamisch basierend auf dem Effort Level zu, den Sie auswählen. Dies ist die empfohlene Methode, um den Kompromiss zwischen Geschwindigkeit und Reasoning-Tiefe zu optimieren. Wenn Sie möchten, dass Claude mehr oder weniger denkt, als Ihr Effort Level sonst erzeugen würde, können Sie dies auch direkt in Ihrem Prompt oder in `CLAUDE.md` sagen.

546 

547Bei älteren Modellen verwendet Thinking ein festes Token-Budget, das aus Ihrer Output-Zuteilung gezogen wird. Das Budget variiert je nach Modell; siehe [`MAX_THINKING_TOKENS`](/de/env-vars) für Obergrenzen pro Modell. Sie können das Budget mit dieser Umgebungsvariable begrenzen oder Thinking vollständig über `/config` oder den `Option+T`/`Alt+T`-Toggle deaktivieren.

548 

549Auf Modellen mit adaptivem Denken gilt `MAX_THINKING_TOKENS` nur, wenn es auf `0` gesetzt ist, um Thinking zu deaktivieren, oder wenn `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` das Modell auf das feste Budget zurückversetzt. `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` gilt nur für Opus 4.6 und Sonnet 4.6. Opus 4.7 verwendet immer adaptives Denken und unterstützt kein festes Thinking-Budget. Siehe [Umgebungsvariablen](/de/env-vars).

550 

551<Warning>

552 Ihnen werden alle verwendeten Thinking-Tokens berechnet, auch wenn Thinking-Zusammenfassungen redigiert werden. Im interaktiven Modus wird Thinking standardmäßig als zusammengefasster Stub angezeigt. Setzen Sie `showThinkingSummaries: true` in `settings.json`, um vollständige Zusammenfassungen anzuzeigen.

553</Warning>

554 

555***

556 

557## Vorherige Gespräche fortsetzen

558 

559Wenn Sie Claude Code starten, können Sie eine vorherige Sitzung fortsetzen:

560 

561* `claude --continue` setzt das neueste Gespräch im aktuellen Verzeichnis fort

562* `claude --resume` öffnet eine Gesprächsauswahl oder setzt nach Name fort

563* `claude --from-pr 123` setzt Sitzungen fort, die mit einem bestimmten Pull Request verknüpft sind

564 

565Verwenden Sie innerhalb einer aktiven Sitzung `/resume`, um zu einem anderen Gespräch zu wechseln.

566 

567Wenn die ausgewählte Sitzung alt und groß genug ist, dass das erneute Lesen einen wesentlichen Teil Ihrer Nutzungslimits verbrauchen würde, bieten `--resume`, `--continue` und `/resume` an, statt des vollständigen Transkripts von einer Zusammenfassung aus fortzufahren. Diese Eingabeaufforderung ist nicht auf Amazon Bedrock, Google Cloud Vertex AI oder Microsoft Foundry verfügbar.

568 

569Sitzungen werden pro Projektverzeichnis gespeichert. Standardmäßig zeigt die `/resume`-Auswahl interaktive Sitzungen aus dem aktuellen Worktree mit Tastaturkürzeln, um die Liste auf andere Worktrees oder Projekte zu erweitern, zu suchen, in der Vorschau anzuzeigen und umzubenennen. Siehe [Verwenden Sie die Sitzungsauswahl](#use-the-session-picker) unten für die vollständige Tastaturkürzel-Referenz.

570 

571Wenn Sie eine Sitzung aus einem anderen Worktree desselben Repositorys auswählen, setzt Claude Code sie direkt fort, ohne dass Sie zuerst das Verzeichnis wechseln müssen. Wenn Sie eine Sitzung aus einem nicht verwandten Projekt auswählen, wird ein `cd`- und Resume-Befehl stattdessen in Ihre Zwischenablage kopiert.

572 

573Das Fortsetzen nach Name wird über das aktuelle Repository und seine Worktrees aufgelöst. Sowohl `claude --resume <name>` als auch `/resume <name>` suchen nach einer genauen Übereinstimmung und setzen sie direkt fort, auch wenn die Sitzung in einem anderen Worktree lebt.

574 

575Wenn der Name mehrdeutig ist, öffnet `claude --resume <name>` die Auswahl mit dem Namen als vorgefülltem Suchbegriff. `/resume <name>` aus einer aktiven Sitzung meldet stattdessen einen Fehler, also führen Sie `/resume` ohne Argument aus, um die Auswahl zu öffnen und auszuwählen.

576 

577Sitzungen, die von `claude -p` oder SDK-Aufrufen erstellt wurden, werden nicht in der Auswahl angezeigt, aber Sie können eine trotzdem fortsetzen, indem Sie ihre Sitzungs-ID direkt an `claude --resume <session-id>` übergeben.

578 

579### Benennen Sie Ihre Sitzungen

580 

581Geben Sie Sitzungen beschreibende Namen, um sie später zu finden. Dies ist eine Best Practice, wenn Sie an mehreren Aufgaben oder Funktionen arbeiten.

582 

583<Steps>

584 <Step title="Benennen Sie die Sitzung">

585 Benennen Sie eine Sitzung beim Start mit `-n`:

586 

587 ```bash theme={null}

588 claude -n auth-refactor

589 ```

590 

591 Oder verwenden Sie `/rename` während einer Sitzung, was auch den Namen in der Prompt-Leiste anzeigt:

592 

593 ```text theme={null}

594 /rename auth-refactor

595 ```

596 

597 Sie können jede Sitzung auch aus der Auswahl umbenennen: Führen Sie `/resume` aus, navigieren Sie zu einer Sitzung, und drücken Sie `Ctrl+R`.

598 </Step>

599 

600 <Step title="Später nach Name fortsetzen">

601 Aus der Befehlszeile:

602 

603 ```bash theme={null}

604 claude --resume auth-refactor

605 ```

606 

607 Oder innerhalb einer aktiven Sitzung:

608 

609 ```text theme={null}

610 /resume auth-refactor

611 ```

612 </Step>

613</Steps>

614 

615### Verwenden Sie die Sitzungsauswahl

616 

617Der Befehl `/resume` (oder `claude --resume` ohne Argumente) öffnet eine interaktive Sitzungsauswahl mit diesen Funktionen:

618 

619**Tastaturkürzel in der Auswahl:**

620 

621| Verknüpfung | Aktion |

622| :------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

623| `↑` / `↓` | Navigieren Sie zwischen Sitzungen |

624| `→` / `←` | Erweitern oder reduzieren Sie gruppierte Sitzungen |

625| `Enter` | Wählen Sie die hervorgehobene Sitzung aus und setzen Sie sie fort |

626| `Space` | Zeigen Sie eine Vorschau des Sitzungsinhalts an. `Ctrl+V` funktioniert auch auf Terminals, die es nicht als Einfügen erfassen |

627| `Ctrl+R` | Benennen Sie die hervorgehobene Sitzung um |

628| `/` oder ein beliebiges druckbares Zeichen außer `Space` | Geben Sie den Suchmodus ein und filtern Sie Sitzungen |

629| `Ctrl+A` | Zeigen Sie Sitzungen aus allen Projekten auf diesem Computer an. Drücken Sie erneut, um zum aktuellen Repository zurückzukehren |

630| `Ctrl+W` | Zeigen Sie Sitzungen aus allen Worktrees des aktuellen Repositorys an. Drücken Sie erneut, um zum aktuellen Worktree zurückzukehren. Wird nur in Multi-Worktree-Repositorys angezeigt |

631| `Ctrl+B` | Filtern Sie zu Sitzungen aus Ihrem aktuellen Git-Branch. Drücken Sie erneut, um Sitzungen aus allen Branches anzuzeigen |

632| `Esc` | Beenden Sie die Auswahl oder den Suchmodus |

633 

634**Sitzungsorganisation:**

635 

636Die Auswahl zeigt Sitzungen mit hilfreichen Metadaten an:

637 

638* Sitzungsname, falls festgelegt, ansonsten die Gesprächszusammenfassung oder der erste Benutzer-Prompt

639* Verstrichene Zeit seit letzter Aktivität

640* Nachrichtenanzahl

641* Git-Branch (falls zutreffend)

642* Projektpfad, angezeigt nach Erweiterung auf alle Projekte mit `Ctrl+A`

643 

644Verzweigte Sitzungen (erstellt mit `/branch`, `/rewind` oder `--fork-session`) werden unter ihrer Root-Sitzung gruppiert, was es einfacher macht, verwandte Gespräche zu finden.

645 

646<Tip>

647 Tipps:

648 

649 * **Benennen Sie Sitzungen früh**: Verwenden Sie `/rename`, wenn Sie mit einer bestimmten Aufgabe beginnen – es ist viel einfacher, „payment-integration" später zu finden als „explain this function"

650 * Verwenden Sie `--continue` für schnellen Zugriff auf Ihr letztes Gespräch im aktuellen Verzeichnis

651 * Verwenden Sie `--resume session-name`, wenn Sie wissen, welche Sitzung Sie benötigen

652 * Verwenden Sie `--resume` (ohne Namen), wenn Sie durchsuchen und auswählen müssen

653 * Verwenden Sie für Skripte `claude --continue --print "prompt"`, um im nicht-interaktiven Modus fortzufahren

654 * Drücken Sie `Space` in der Auswahl, um eine Sitzung vor dem Fortsetzen in der Vorschau anzuzeigen

655 * Die fortgesetzte Konversation beginnt mit demselben Modell und der gleichen Konfiguration wie das Original

656 

657 Wie es funktioniert:

658 

659 1. **Gesprächsspeicherung**: Alle Gespräche werden automatisch lokal mit ihrer vollständigen Nachrichtenhistorie gespeichert

660 2. **Nachricht-Deserialisierung**: Beim Fortsetzen wird die gesamte Nachrichtenhistorie wiederhergestellt, um den Kontext zu bewahren

661 3. **Tool-Status**: Die Tool-Nutzung und Ergebnisse aus dem vorherigen Gespräch werden beibehalten

662 4. **Kontext-Wiederherstellung**: Das Gespräch wird mit allen vorherigen Kontexten intakt fortgesetzt

663</Tip>

664 

665***

666 

667## Führen Sie parallele Claude Code-Sitzungen mit Git Worktrees aus

668 

669Wenn Sie an mehreren Aufgaben gleichzeitig arbeiten, benötigt jede Claude-Sitzung ihre eigene Kopie der Codebase, damit Änderungen nicht kollidieren. Git Worktrees lösen dies, indem sie separate Arbeitsverzeichnisse erstellen, die jeweils ihre eigenen Dateien und Branches haben, während sie die gleiche Repository-Historie und Remote-Verbindungen teilen. Dies bedeutet, dass Sie Claude an einer Funktion in einem Worktree arbeiten lassen können, während Sie einen Fehler in einem anderen beheben, ohne dass eine Sitzung die andere beeinträchtigt.

670 

671Verwenden Sie das Flag `--worktree` (`-w`), um einen isolierten Worktree zu erstellen und Claude darin zu starten. Der Wert, den Sie übergeben, wird zum Worktree-Verzeichnisnamen und Branch-Namen:

672 

673```bash theme={null}

674# Starten Sie Claude in einem Worktree namens „feature-auth"

675# Erstellt .claude/worktrees/feature-auth/ mit einem neuen Branch

676claude --worktree feature-auth

677 

678# Starten Sie eine weitere Sitzung in einem separaten Worktree

679claude --worktree bugfix-123

680```

681 

682Wenn Sie den Namen weglassen, generiert Claude automatisch einen zufälligen:

683 

684```bash theme={null}

685# Generiert automatisch einen Namen wie „bright-running-fox"

686claude --worktree

687```

688 

689Worktrees werden unter `<repo>/.claude/worktrees/<name>` erstellt und verzweigen sich vom Standard-Remote-Branch, auf den `origin/HEAD` zeigt. Der Worktree-Branch wird `worktree-<name>` genannt.

690 

691Der Basis-Branch ist nicht über ein Claude Code-Flag oder eine Einstellung konfigurierbar. `origin/HEAD` ist eine Referenz, die in Ihrem lokalen `.git`-Verzeichnis gespeichert ist und die Git einmal beim Klonen gesetzt hat. Wenn sich der Standard-Branch des Repositorys später auf GitHub oder GitLab ändert, zeigt Ihre lokale `origin/HEAD` weiterhin auf den alten, und Worktrees verzweigen sich von dort. Um Ihre lokale Referenz mit dem, was der Remote derzeit als Standard betrachtet, neu zu synchronisieren:

692 

693```bash theme={null}

694git remote set-head origin -a

695```

696 

697Dies ist ein Standard-Git-Befehl, der nur Ihr lokales `.git`-Verzeichnis aktualisiert. Nichts auf dem Remote-Server ändert sich. Wenn Sie möchten, dass Worktrees sich von einem bestimmten Branch aus verzweigen, anstatt vom Standard des Remote, setzen Sie ihn explizit mit `git remote set-head origin your-branch-name`.

698 

699Für vollständige Kontrolle über die Erstellung von Worktrees, einschließlich der Auswahl einer anderen Basis pro Aufruf, konfigurieren Sie einen [WorktreeCreate Hook](/de/hooks#worktreecreate). Der Hook ersetzt Claudes Standard-`git worktree`-Logik vollständig, sodass Sie von jedem Ref abrufen und verzweigen können, den Sie benötigen.

700 

701Sie können auch Claude während einer Sitzung bitten, „in einem Worktree zu arbeiten" oder „einen Worktree zu starten", und er erstellt automatisch einen.

702 

703### Subagent Worktrees

704 

705Subagents können auch Worktree-Isolation verwenden, um parallel ohne Konflikte zu arbeiten. Bitten Sie Claude, „Worktrees für Ihre Agents zu verwenden" oder konfigurieren Sie es in einem [benutzerdefinierten Subagent](/de/sub-agents#supported-frontmatter-fields), indem Sie `isolation: worktree` zum Frontmatter des Agents hinzufügen. Jeder Subagent erhält seinen eigenen Worktree, der automatisch bereinigt wird, wenn der Subagent ohne Änderungen beendet wird.

706 

707### Worktree-Bereinigung

708 

709Wenn Sie eine Worktree-Sitzung beenden, handhabt Claude die Bereinigung basierend darauf, ob Sie Änderungen vorgenommen haben:

710 

711* **Keine Änderungen**: Der Worktree und sein Branch werden automatisch entfernt

712* **Änderungen oder Commits vorhanden**: Claude fragt Sie, ob Sie den Worktree behalten oder entfernen möchten. Das Behalten bewahrt das Verzeichnis und den Branch, damit Sie später zurückkehren können. Das Entfernen löscht das Worktree-Verzeichnis und seinen Branch und verwirft alle nicht committeten Änderungen und Commits

713 

714Subagent-Worktrees, die durch einen Absturz oder einen unterbrochenen parallelen Lauf verwaist sind, werden beim Start automatisch entfernt, sobald sie älter als Ihre [`cleanupPeriodDays`](/de/settings#available-settings)-Einstellung sind, vorausgesetzt, sie haben keine nicht committeten Änderungen, keine nicht verfolgten Dateien und keine nicht gepushten Commits. Worktrees, die Sie mit `--worktree` erstellen, werden durch diese Bereinigung nie entfernt.

715 

716Um Worktrees außerhalb einer Claude-Sitzung zu bereinigen, verwenden Sie [manuelle Worktree-Verwaltung](#manage-worktrees-manually).

717 

718<Tip>

719 Fügen Sie `.claude/worktrees/` zu Ihrer `.gitignore` hinzu, um zu verhindern, dass Worktree-Inhalte als nicht verfolgte Dateien in Ihrem Haupt-Repository angezeigt werden.

720</Tip>

721 

722### Kopieren Sie gitignorierte Dateien zu Worktrees

723 

724Git Worktrees sind frische Checkouts, daher enthalten sie keine nicht verfolgten Dateien wie `.env` oder `.env.local` aus Ihrem Haupt-Repository. Um diese Dateien automatisch zu kopieren, wenn Claude einen Worktree erstellt, fügen Sie eine `.worktreeinclude`-Datei zu Ihrem Projektroot hinzu.

725 

726Die Datei verwendet `.gitignore`-Syntax, um aufzulisten, welche Dateien kopiert werden sollen. Nur Dateien, die einem Muster entsprechen und auch gitignoriert sind, werden kopiert, daher werden verfolgte Dateien niemals dupliziert.

727 

728```text .worktreeinclude theme={null}

729.env

730.env.local

731config/secrets.json

732```

733 

734Dies gilt für Worktrees, die mit `--worktree`, Subagent-Worktrees und parallele Sitzungen in der [Desktop-App](/de/desktop#work-in-parallel-with-sessions) erstellt werden.

735 

736### Verwalten Sie Worktrees manuell

737 

738Für mehr Kontrolle über den Worktree-Speicherort und die Branch-Konfiguration erstellen Sie Worktrees direkt mit Git. Dies ist nützlich, wenn Sie einen bestimmten vorhandenen Branch auschecken oder den Worktree außerhalb des Repositorys platzieren müssen.

739 

740```bash theme={null}

741# Erstellen Sie einen Worktree mit einem neuen Branch

742git worktree add ../project-feature-a -b feature-a

743 

744# Erstellen Sie einen Worktree mit einem vorhandenen Branch

745git worktree add ../project-bugfix bugfix-123

746 

747# Starten Sie Claude im Worktree

748cd ../project-feature-a && claude

749 

750# Bereinigen Sie, wenn Sie fertig sind

751git worktree list

752git worktree remove ../project-feature-a

753```

754 

755Weitere Informationen finden Sie in der [offiziellen Git Worktree-Dokumentation](https://git-scm.com/docs/git-worktree).

756 

757<Tip>

758 Denken Sie daran, Ihre Entwicklungsumgebung in jedem neuen Worktree gemäß der Einrichtung Ihres Projekts zu initialisieren. Je nach Ihrem Stack kann dies die Ausführung der Abhängigkeitsinstallation (`npm install`, `yarn`), das Einrichten virtueller Umgebungen oder das Befolgen des Standard-Setup-Prozesses Ihres Projekts umfassen.

759</Tip>

760 

761### Nicht-Git-Versionskontrolle

762 

763Worktree-Isolation funktioniert standardmäßig mit Git. Für andere Versionskontrollsysteme wie SVN, Perforce oder Mercurial konfigurieren Sie [WorktreeCreate und WorktreeRemove Hooks](/de/hooks#worktreecreate), um benutzerdefinierte Worktree-Erstellungs- und Bereinigungslogik bereitzustellen. Wenn konfiguriert, ersetzen diese Hooks das Standard-Git-Verhalten, wenn Sie `--worktree` verwenden, daher wird [`.worktreeinclude`](#copy-gitignored-files-to-worktrees) nicht verarbeitet. Kopieren Sie alle lokalen Konfigurationsdateien stattdessen in Ihrem Hook-Skript.

764 

765Für automatisierte Koordination paralleler Sitzungen mit gemeinsamen Aufgaben und Messaging siehe [Agent Teams](/de/agent-teams).

766 

767***

768 

769## Erhalten Sie Benachrichtigungen, wenn Claude Ihre Aufmerksamkeit benötigt

770 

771Wenn Sie eine lange laufende Aufgabe starten und zu einem anderen Fenster wechseln, können Sie Desktop-Benachrichtigungen einrichten, damit Sie wissen, wenn Claude fertig ist oder Ihre Eingabe benötigt. Dies verwendet das `Notification` [Hook-Ereignis](/de/hooks-guide#get-notified-when-claude-needs-input), das immer dann ausgelöst wird, wenn Claude auf Berechtigung wartet, untätig ist und bereit für einen neuen Prompt ist, oder die Authentifizierung abgeschlossen ist.

772 

773<Steps>

774 <Step title="Fügen Sie den Hook zu Ihren Einstellungen hinzu">

775 Öffnen Sie `~/.claude/settings.json` und fügen Sie einen `Notification` Hook hinzu, der den nativen Benachrichtigungsbefehl Ihrer Plattform aufruft:

776 

777 <Tabs>

778 <Tab title="macOS">

779 ```json theme={null}

780 {

781 "hooks": {

782 "Notification": [

783 {

784 "matcher": "",

785 "hooks": [

786 {

787 "type": "command",

788 "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"

789 }

790 ]

791 }

792 ]

793 }

794 }

795 ```

796 </Tab>

797 

798 <Tab title="Linux">

799 ```json theme={null}

800 {

801 "hooks": {

802 "Notification": [

803 {

804 "matcher": "",

805 "hooks": [

806 {

807 "type": "command",

808 "command": "notify-send 'Claude Code' 'Claude Code needs your attention'"

809 }

810 ]

811 }

812 ]

813 }

814 }

815 ```

816 </Tab>

817 

818 <Tab title="Windows">

819 ```json theme={null}

820 {

821 "hooks": {

822 "Notification": [

823 {

824 "matcher": "",

825 "hooks": [

826 {

827 "type": "command",

828 "command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude Code needs your attention', 'Claude Code')\""

829 }

830 ]

831 }

832 ]

833 }

834 }

835 ```

836 </Tab>

837 </Tabs>

838 

839 Wenn Ihre Einstellungsdatei bereits einen `hooks`-Schlüssel hat, führen Sie den `Notification`-Eintrag darin zusammen, anstatt ihn zu überschreiben. Sie können Claude auch bitten, den Hook für Sie zu schreiben, indem Sie beschreiben, was Sie in der CLI möchten.

840 </Step>

841 

842 <Step title="Grenzen Sie den Matcher optional ein">

843 Standardmäßig wird der Hook bei allen Benachrichtigungstypen ausgelöst. Um nur für bestimmte Ereignisse ausgelöst zu werden, setzen Sie das Feld `matcher` auf einen dieser Werte:

844 

845 | Matcher | Wird ausgelöst, wenn |

846 | :--------------------- | :-------------------------------------------------------------- |

847 | `permission_prompt` | Claude benötigt Ihre Genehmigung für eine Tool-Nutzung |

848 | `idle_prompt` | Claude ist fertig und wartet auf Ihren nächsten Prompt |

849 | `auth_success` | Die Authentifizierung ist abgeschlossen |

850 | `elicitation_dialog` | Ein MCP-Server öffnet ein Elicitierungsformular |

851 | `elicitation_complete` | Ein MCP-Elicitierungsformular wird eingereicht oder verworfen |

852 | `elicitation_response` | Eine MCP-Elicitierungsantwort wird an den Server zurückgesendet |

853 </Step>

854 

855 <Step title="Überprüfen Sie den Hook">

856 Geben Sie `/hooks` ein und wählen Sie `Notification` aus, um zu bestätigen, dass der Hook angezeigt wird. Wenn Sie ihn auswählen, wird der Befehl angezeigt, der ausgeführt wird. Um ihn end-to-end zu testen, bitten Sie Claude, einen Befehl auszuführen, der Berechtigung erfordert, und wechseln Sie weg vom Terminal, oder bitten Sie Claude, direkt eine Benachrichtigung auszulösen.

857 </Step>

858</Steps>

859 

860Für das vollständige Ereignisschema und die Benachrichtigungstypen siehe die [Benachrichtigungsreferenz](/de/hooks#notification).

861 

862***

863 

864## Verwenden Sie Claude als Unix-ähnliches Dienstprogramm

865 

866### Fügen Sie Claude zu Ihrem Überprüfungsprozess hinzu

867 

868Angenommen, Sie möchten Claude Code als Linter oder Code-Reviewer verwenden.

869 

870**Fügen Sie Claude zu Ihrem Build-Skript hinzu:**

871 

872```json theme={null}

873// package.json

874{

875 ...

876 "scripts": {

877 ...

878 "lint:claude": "claude -p 'you are a linter. please look at the changes vs. main and report any issues related to typos. report the filename and line number on one line, and a description of the issue on the second line. do not return any other text.'"

879 }

880}

881```

882 

883<Tip>

884 Tipps:

885 

886 * Verwenden Sie Claude für automatisierte Code-Überprüfung in Ihrer CI/CD-Pipeline

887 * Passen Sie den Prompt an, um auf spezifische Probleme zu überprüfen, die für Ihr Projekt relevant sind

888 * Erwägen Sie, mehrere Skripte für verschiedene Arten von Überprüfungen zu erstellen

889</Tip>

890 

891### Pipe in, Pipe out

892 

893Angenommen, Sie möchten Daten in Claude pipen und Daten in einem strukturierten Format zurückbekommen.

894 

895**Pipen Sie Daten durch Claude:**

896 

897```bash theme={null}

898cat build-error.txt | claude -p 'concisely explain the root cause of this build error' > output.txt

899```

900 

901<Tip>

902 Tipps:

903 

904 * Verwenden Sie Pipes, um Claude in vorhandene Shell-Skripte zu integrieren

905 * Kombinieren Sie mit anderen Unix-Tools für leistungsstarke Workflows

906 * Erwägen Sie die Verwendung von `--output-format` für strukturierte Ausgabe

907</Tip>

908 

909### Steuern Sie das Ausgabeformat

910 

911Angenommen, Sie benötigen Claudes Ausgabe in einem bestimmten Format, besonders wenn Sie Claude Code in Skripte oder andere Tools integrieren.

912 

913<Steps>

914 <Step title="Verwenden Sie Textformat (Standard)">

915 ```bash theme={null}

916 cat data.txt | claude -p 'summarize this data' --output-format text > summary.txt

917 ```

918 

919 Dies gibt nur Claudes einfache Textantwort aus (Standardverhalten).

920 </Step>

921 

922 <Step title="Verwenden Sie JSON-Format">

923 ```bash theme={null}

924 cat code.py | claude -p 'analyze this code for bugs' --output-format json > analysis.json

925 ```

926 

927 Dies gibt ein JSON-Array von Nachrichten mit Metadaten einschließlich Kosten und Dauer aus.

928 </Step>

929 

930 <Step title="Verwenden Sie Streaming-JSON-Format">

931 ```bash theme={null}

932 cat log.txt | claude -p 'parse this log file for errors' --output-format stream-json

933 ```

934 

935 Dies gibt eine Reihe von JSON-Objekten in Echtzeit aus, während Claude die Anfrage verarbeitet. Jede Nachricht ist ein gültiges JSON-Objekt, aber die gesamte Ausgabe ist kein gültiges JSON, wenn es verkettet wird.

936 </Step>

937</Steps>

938 

939<Tip>

940 Tipps:

941 

942 * Verwenden Sie `--output-format text` für einfache Integrationen, bei denen Sie nur Claudes Antwort benötigen

943 * Verwenden Sie `--output-format json`, wenn Sie das vollständige Gesprächsprotokoll benötigen

944 * Verwenden Sie `--output-format stream-json` für Echtzeit-Ausgabe jedes Gesprächsturn

945</Tip>

946 

947***

948 

949## Führen Sie Claude nach einem Zeitplan aus

950 

951Angenommen, Sie möchten Claude automatisch eine Aufgabe auf wiederkehrender Basis ausführen, z. B. offene PRs jeden Morgen überprüfen, Abhängigkeiten wöchentlich prüfen oder über Nacht auf CI-Fehler überprüfen.

952 

953Wählen Sie eine Planungsoption basierend darauf, wo Sie die Aufgabe ausführen möchten:

954 

955| Option | Wo es ausgeführt wird | Am besten für |

956| :------------------------------------------------------- | :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

957| [Routines](/de/routines) | Von Anthropic verwaltete Infrastruktur | Aufgaben, die auch dann ausgeführt werden sollten, wenn Ihr Computer ausgeschaltet ist. Können auch durch API-Aufrufe oder GitHub-Ereignisse zusätzlich zu einem Zeitplan ausgelöst werden. Konfigurieren Sie unter [claude.ai/code/routines](https://claude.ai/code/routines). |

958| [Desktop-geplante Aufgaben](/de/desktop-scheduled-tasks) | Ihr Computer, über die Desktop-App | Aufgaben, die direkten Zugriff auf lokale Dateien, Tools oder nicht committete Änderungen benötigen. |

959| [GitHub Actions](/de/github-actions) | Ihre CI-Pipeline | Aufgaben, die an Repository-Ereignisse wie geöffnete PRs gebunden sind, oder Cron-Zeitpläne, die neben Ihrer Workflow-Konfiguration leben sollten. |

960| [`/loop`](/de/scheduled-tasks) | Die aktuelle CLI-Sitzung | Schnelle Abfragen während eine Sitzung offen ist. Aufgaben werden abgebrochen, wenn Sie beenden. |

961 

962<Tip>

963 Wenn Sie Prompts für geplante Aufgaben schreiben, seien Sie explizit darüber, wie Erfolg aussieht und was mit Ergebnissen zu tun ist. Die Aufgabe wird autonom ausgeführt, daher kann sie keine Klärungsfragen stellen. Beispiel: 'Überprüfen Sie offene PRs mit dem Label `needs-review`, hinterlassen Sie Inline-Kommentare zu Problemen und posten Sie eine Zusammenfassung im `#eng-reviews` Slack-Kanal."

964</Tip>

965 

966***

967 

968## Fragen Sie Claude nach seinen Fähigkeiten

969 

970Claude hat integrierten Zugriff auf seine Dokumentation und kann Fragen zu seinen eigenen Funktionen und Einschränkungen beantworten.

971 

972### Beispielfragen

973 

974```text theme={null}

975can Claude Code create pull requests?

976```

977 

978```text theme={null}

979how does Claude Code handle permissions?

980```

981 

982```text theme={null}

983what skills are available?

984```

985 

986```text theme={null}

987how do I use MCP with Claude Code?

988```

989 

990```text theme={null}

991how do I configure Claude Code for Amazon Bedrock?

992```

993 

994```text theme={null}

995what are the limitations of Claude Code?

996```

997 

998<Note>

999 Claude bietet dokumentationsgestützte Antworten auf diese Fragen. Für praktische Demonstrationen führen Sie `/powerup` für interaktive Lektionen mit animierten Demos aus, oder beziehen Sie sich auf die spezifischen Workflow-Abschnitte oben.

1000</Note>

1001 

1002<Tip>

1003 Tipps:

1004 

1005 * Claude hat immer Zugriff auf die neueste Claude Code-Dokumentation, unabhängig von der Version, die Sie verwenden

1006 * Stellen Sie spezifische Fragen, um detaillierte Antworten zu erhalten

1007 * Claude kann komplexe Funktionen wie MCP-Integration, Enterprise-Konfigurationen und erweiterte Workflows erklären

1008</Tip>

1009 

1010***

1011 

1012## Nächste Schritte

1013 

1014<CardGroup cols={2}>

1015 <Card title="Best Practices" icon="lightbulb" href="/de/best-practices">

1016 Muster zum Herausholen des Besten aus Claude Code

1017 </Card>

1018 

1019 <Card title="Wie Claude Code funktioniert" icon="gear" href="/de/how-claude-code-works">

1020 Verstehen Sie die agentic Loop und Kontextverwaltung

1021 </Card>

1022 

1023 <Card title="Erweitern Sie Claude Code" icon="puzzle-piece" href="/de/features-overview">

1024 Fügen Sie Skills, Hooks, MCP, Subagents und Plugins hinzu

1025 </Card>

1026 

1027 <Card title="Referenzimplementierung" icon="code" href="https://github.com/anthropics/claude-code/tree/main/.devcontainer">

1028 Klonen Sie die Referenzimplementierung des Development Containers

1029 </Card>

1030</CardGroup>

communications-kit.md +569 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Kommunikations-Kit

6 

7> Startankündigungen, Drip-Campaign-Nachrichten und FAQ-Antworten für die Einführung von Claude Code in Ihrer Entwicklungsorganisation.

8 

9Diese Seite ist für Administratoren und Entwicklungsteamleiter, die Claude Code in einem Team einführen. Sie bietet einsatzbereite Startankündigungen, eine Tipps-und-Tricks-Drip-Campaign und einzeilige FAQ-Antworten für die Fragen, die Sie am häufigsten gestellt bekommen.

10 

11<Note>

12 Behandeln Sie alles hier als Entwurfskopie, nicht als fertige Kopie. Schreiben Sie jede Nachricht in der Stimme Ihrer Organisation um, ersetzen Sie die Beispielaufgaben durch echte Bugs und Module aus Ihrer eigenen Codebasis und ersetzen Sie die `[eingeklammerten Platzhalter]` vor dem Versand. Die Ankündigungen, die Akzeptanz fördern, sind diejenigen, die sich so lesen, als hätte sie jemand aus Ihrem Unternehmen geschrieben.

13</Note>

14 

15## Startmitteilungen

16 

17Eine Ankündigung in zwei Formaten plus zwei optionale Varianten. Wählen Sie diejenige aus, die zu Ihrem Rollout passt, und schreiben Sie sie von dort aus um.

18 

19### Bevor Sie senden

20 

21Arbeiten Sie diese Checkliste durch, bevor die Ankündigung rausgeht. Jeder Punkt schließt eine Lücke, die sonst zu einem Support-Thread am Starttag wird.

22 

23| Element | Warum es wichtig ist |

24| ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |

25| `#claude-code` Kanal erstellt und in der Nachricht verlinkt | Gibt Fragen einen Ort zum Landen |

26| Installationsbefehl auf mindestens einem Computer in Ihrer Umgebung getestet | Fängt Proxy- oder Firewall-Probleme ab, bevor alle sie gleichzeitig treffen |

27| Sicherheits- und Datenbehandlungslink bereit ([Datennutzung](/de/data-usage) oder Ihr internes Äquivalent) | „Wo geht mein Code hin?" wird die erste Antwort sein |

28| Eine konkrete erste Aufgabe ausgewählt, ein echter Bug oder eine Datei in Ihrer Codebasis | Generische Beispiele funktionieren nicht; „Behebe den flaky Test in `auth_test.go`" schon |

29| Ein benannter Besitzer für den Kanal für die ersten 48 Stunden | Unbeantwortete Fragen am Starttag töten den Schwung |

30| Ein C-Suite-Sponsor, der die Ankündigung sendet oder mitunterzeichnet | Von Führungskräften gesendete Starts sehen durchweg höhere Adoptionsraten in der ersten Woche als von Administratoren gesendete |

31 

32### Die Ankündigung

33 

34Verwenden Sie dies als Ihre Standard-Ankündigung für die gesamte Organisation. Sie erklärt, was Claude Code ist, bietet einen zweiminütigen Installationspfad, gibt Lesern eine konkrete Aufgabe zum Ausprobieren und beantwortet „Wo geht mein Code hin?" bevor jemand fragen muss.

35 

36<Tabs>

37 <Tab title="E-Mail">

38 ```text theme={null}

39 Betreff: Claude Code ist live für [Engineering / Ihr Team]

40 

41 Team,

42 

43 Ab heute haben Sie Zugriff auf Claude Code, einen KI-Coding-Agent, der in

44 Ihrem Terminal läuft, Ihre tatsächliche Codebasis liest und echte Aufgaben

45 von Anfang bis Ende durcharbeitet: Debugging, Refactorings, Tests, PRs. Es

46 ist keine Autovervollständigung und kein Chat-Fenster. Es bearbeitet

47 Dateien, führt Ihre Befehle aus und fragt die Berechtigung ab, bevor etwas

48 Riskantes passiert.

49 

50 Starten Sie in zwei Minuten:

51 

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

53 cd <your-repo>

54 claude

55 

56 Führen Sie dann `/init` einmal aus. Claude liest Ihr Projekt und schreibt

57 eine CLAUDE.md mit Ihren Build-Befehlen und Konventionen, sodass Sie

58 aufhören, die Grundlagen zu wiederholen.

59 

60 Versuchen Sie dann eines davon im Repo, an dem Sie bereits arbeiten:

61 

62 - 'Der Test in [Datei] ist flaky. Finde heraus, warum und behebe es"

63 - „Zeige mir, wie [Modul] [X] handhabt"

64 - „Schau dir meinen funktionierenden Diff an und sag mir, was riskant ist,

65 bevor ich pushe"

66 

67 Wo Ihr Code hingeht: Claude Code läuft in Ihrem Terminal und spricht direkt

68 mit Anthropics API, ohne dass dritte Server in der Schleife sind. Es fragt,

69 bevor es Dateien bearbeitet oder Befehle ausführt. Unter unserer

70 Enterprise-Vereinbarung verwendet Anthropic Ihren Code oder Prompts nicht

71 zum Trainieren seiner Modelle.

72 Details: https://code.claude.com/docs/de/data-usage

73 https://code.claude.com/docs/de/security

74 

75 Wo Sie mit Fragen hingehen: #claude-code. [Besitzername] beobachtet es

76 diese Woche.

77 

78 - [Name]

79 

80 P.S. Bevorzugen Sie Ihren Editor? Es gibt eine VS Code-Erweiterung und ein

81 JetBrains-Plugin. Derselbe Agent, kein Terminal erforderlich.

82 ```

83 </Tab>

84 

85 <Tab title="Slack oder Teams">

86 ```markdown theme={null}

87 🚀 *Claude Code ist live für [Team]*

88 

89 KI-Coding-Agent, läuft in Ihrem Terminal, liest Ihr Repo, macht echte

90 Arbeit: Bugs, Refactorings, Tests, PRs. Fragt, bevor es etwas anfasst.

91 

92 `curl -fsSL https://claude.ai/install.sh | bash` → `cd your-repo` → `claude`

93 

94 *Erste Sache zum Ausprobieren* → führen Sie `/init` aus, dann: 'Der Test in

95 [Datei] ist flaky, finde heraus, warum und behebe es."

96 

97 🔒 Läuft in Ihrem Terminal, spricht nur mit Anthropics API. Unter unserem

98 Enterprise-Plan werden Ihr Code und Prompts nicht zum Trainieren von

99 Modellen verwendet.

100 Datennutzung → https://code.claude.com/docs/de/data-usage

101 

102 📚 Schnellstart · VS Code · Kostenloser 1-Stunden-Kurs

103 https://code.claude.com/docs/de/quickstart

104 https://code.claude.com/docs/de/vs-code

105 https://anthropic.skilljar.com/claude-code-in-action

106 

107 Fragen → dieser Thread. [Besitzer] ist verantwortlich.

108 ```

109 </Tab>

110</Tabs>

111 

112### Variante für Executive Sponsor

113 

114Senden Sie dies von Ihrem sponsernden Executive, wie dem CTO, CIO oder SVP Engineering, unter seinem Namen und von seinem Konto. Starts, die unter dem Namen eines Executives rausgehen, sehen durchweg höhere Öffnungsraten und schnellere Aktivierung in der ersten Woche als dieselbe Nachricht von einem Administrator oder Tooling-Team. Es signalisiert eine Unternehmenspriorität statt eines optionalen Experiments.

115 

116Diese Version ist absichtlich auf eine Anfrage reduziert: Installieren Sie es und führen Sie es auf einer echten Aufgabe aus. Die Aufgabe des Executives ist es, die Anfrage landen zu lassen; die Standard-Ankündigung und `#claude-code` kümmern sich um das Wie.

117 

118<Tabs>

119 <Tab title="E-Mail">

120 ```text theme={null}

121 Betreff: Eine Sache, die ich diese Woche von jedem Engineer ausprobiert

122 haben möchte

123 

124 Team,

125 

126 Wir haben Claude Code für alle Engineering-Teams aktiviert. Es ist ein

127 KI-Agent, der direkt in Ihrem Terminal auf Ihrer tatsächlichen Codebasis

128 arbeitet, und die frühen Ergebnisse von Teams, die es bereits verwenden,

129 sind stark genug, dass ich diese Woche alle darauf haben möchte.

130 

131 Ich bitte um zehn Minuten:

132 

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

134 cd <your-repo>

135 claude

136 

137 Geben Sie ihm dann eine echte Aufgabe: den Bug, den Sie aufgeschoben haben,

138 oder 'Zeige mir, wie [Modul] funktioniert."

139 

140 Das ist die ganze Anfrage. [Besitzername] und Team sind in #claude-code für

141 alles, das Sie unterwegs treffen.

142 

143 - [Executive Name]

144 [Titel]

145 ```

146 </Tab>

147 

148 <Tab title="Slack oder Teams">

149 ```markdown theme={null}

150 📣 *Von [Executive Name]: eine Sache zum Ausprobieren diese Woche*

151 

152 Wir haben *Claude Code* für alle Engineering-Teams aktiviert. Frühe

153 Ergebnisse sind stark genug, dass ich alle bitte, diese Woche zehn Minuten

154 auf echte Arbeit zu geben.

155 

156 `curl -fsSL https://claude.ai/install.sh | bash` → `cd your-repo` →

157 `claude` → geben Sie ihm eine echte Aufgabe.

158 

159 Das ist alles. Fragen → #claude-code.

160 ```

161 </Tab>

162</Tabs>

163 

164### Variante für Pilotgruppe

165 

166Verwenden Sie für einen gestaffelten Rollout. Senden Sie nur an die Pilot-Kohorte.

167 

168```text theme={null}

169Betreff: Sie sind im Claude Code Pilot

170 

171[Name / Team],

172 

173Sie sind in der ersten Welle von Claude Code bei [Unternehmen]. Wir haben

174diese Gruppe ausgewählt, weil Sie es auf echte Probleme anwenden und uns

175die Wahrheit darüber sagen werden.

176 

177Die Anfrage: Verwenden Sie es diese Woche auf mindestens einer echten

178Aufgabe, dann schreiben Sie eine Notiz in #claude-code-pilot, die abdeckt,

179was funktioniert hat, was nervig war und was Sie überrascht hat. Dieses

180Feedback entscheidet, wie wir es für alle anderen einführen.

181 

182[Fortfahren mit 'Starten Sie in zwei Minuten" aus der Standard-Ankündigung]

183 

184Eine zusätzliche Sache für Piloten: Bei Ihrer ersten Änderung mit mehreren

185Dateien drücken Sie Shift+Tab, bis Sie „plan" sehen. Claude wird genau

186aufzeigen, was es beabsichtigt zu tun, bevor es eine Datei anfasst. Es ist

187der schnellste Weg, um zu kalibrieren, wie viel Sie ihm vertrauen können.

188```

189 

190### Champion-Rekrutierungs-DM

191 

192Nach dem Start, DM an die zwei oder drei aktivsten Personen in `#claude-code`.

193 

194```text theme={null}

195Hey [Name], Ihre #claude-code-Posts tun mehr für die Akzeptanz als meine

196Ankündigung. Ein paar Leute haben mir gesagt, dass Ihr [Thread / Screenshot]

197der Grund war, warum sie es tatsächlich ausprobiert haben.

198 

199Möchten Sie das halboffiziell machen? Wenig Aufwand: Posten Sie größtenteils

200weiterhin, was Sie posten, plus erste Chance auf neue Features und eine

201direkte Leitung zum Anthropic-Team. Ich kann ein kurzes Playbook teilen,

202wenn Sie dabei sind.

203```

204 

205## Tipps und Tricks Campaign

206 

207Einsatzbereite Slack- oder Teams-Nachrichten, die nach dem Start die Feature-Aktivierung fördern. Jede folgt demselben Muster: ein Hook, der Gewinn, eine „Probieren Sie es jetzt"-Aufforderung und ein Dokumentationslink. Verteilen Sie sie eine oder zwei pro Woche in `#claude-code`, oder wählen Sie die Handvoll aus, die zu den Lücken Ihres Teams passt. Sie stehen allein ohne erforderliche Reihenfolge.

208 

209Kopieren Sie den Nachrichtentext aus jedem Block direkt in Slack oder Teams. Ersetzen Sie `[eingeklammerte Platzhalter]` vor dem Versand.

210 

211### Erste Schritte

212 

213**Das richtige Modell wählen**

214 

215```markdown theme={null}

216🎯 *Tipp: Passen Sie das Modell zum Moment an*

217 

218Opus zu verwenden, um einen Tippfehler zu beheben, verschwendet Rechenleistung.

219Haiku für ein 12-Datei-Refactoring zu verwenden, ist eine Wiederholung

220verlangen.

221 

222Claude Code läuft auf denselben Modellen wie die Claude-App, und Sie können

223mid-session wechseln. *Sonnet* ist der zuverlässige Standard für alltägliche

224Feature-Arbeit, Bugs, Tests und Reviews. Greifen Sie zu *Opus* bei großen

225Refactorings, kniffligem Debugging oder allem mit hohem Einsatz. Fallen Sie

226auf *Haiku* für schnelle Fragen, Formatierung und mechanische Bearbeitungen,

227bei denen Geschwindigkeit gewinnt.

228 

229*Probieren Sie es jetzt:* Geben Sie `/model` ein und wählen Sie Sonnet, wenn

230Sie es noch nicht getan haben. Es ist der richtige Standard für die meisten

231Aufgaben.

232 

233📖 Modellkonfiguration → https://code.claude.com/docs/de/model-config

234```

235 

236| Modell | Am besten für |

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

238| Opus | Großflächige Refactorings, komplexes Debugging, Architekturentscheidungen, hochriskante Änderungen |

239| Sonnet | Alltägliche Feature-Arbeit, Bug-Fixes, Tests, Dokumentation, Code-Review. Empfohlener Standard. |

240| Haiku | Schnelle Fragen, Formatierung, mechanische Bearbeitungen, schnelle Iteration |

241 

242**Schnelle Gewinne zum ersten Ausprobieren**

243 

244```markdown theme={null}

245🚀 *Tipp: Drei Dinge zum Ausprobieren in Ihren ersten 10 Minuten*

246 

247Claude Code installiert, aber nicht sicher, was Sie tatsächlich fragen

248sollen? Beginnen Sie mit dem Zeug, das Sie die ganze Woche über nervt.

249 

250 - Beheben Sie etwas Nerviges: „Der Test in [Datei] ist flaky, finde heraus,

251 warum"

252 - Orientieren Sie sich in Code, den Sie nicht geschrieben haben: „Zeige mir,

253 wie [Modul] funktioniert"

254 - Sanity-Check vor dem Push: „Schau dir meinen funktionierenden Diff an und

255 sag mir, was riskant aussieht"

256 

257Keine davon benötigt Setup. Einfach `cd` in Ihr Repo und führen Sie `claude`

258aus.

259 

260*Probieren Sie es jetzt:* Wählen Sie den Bug, den Sie vermieden haben, und

261fügen Sie die Fehlermeldung ein.

262 

263📖 Schnellstart → https://code.claude.com/docs/de/quickstart

264```

265 

266### Projektgedächtnis

267 

268**`/init` und CLAUDE.md**

269 

270```markdown theme={null}

271📁 *Tipp: Hören Sie auf, Ihr Repo jede Sitzung zu erklären*

272 

273Claude zum fünften Mal sagen „wir verwenden pnpm, nicht npm"? Es gibt eine

274einmalige Lösung.

275 

276Führen Sie `/init` einmal pro Repo aus. Claude liest Ihre Projektstruktur

277und schreibt eine CLAUDE.md-Datei mit Ihren Build-Befehlen, Architektur und

278Konventionen. Jede zukünftige Sitzung in diesem Repo beginnt automatisch mit

279dieser Datei. Halten Sie sie unter zwei Bildschirmen. Es ist ein Spickzettel,

280keine Dokumentation.

281 

282*Probieren Sie es jetzt:* Öffnen Sie Ihr Haupt-Repo, führen Sie `claude` aus,

283geben Sie `/init` ein. Dreißig Sekunden, zahlt sich nach jeder Sitzung aus.

284 

285📖 CLAUDE.md und Projektgedächtnis → https://code.claude.com/docs/de/memory

286```

287 

288**@-Referenzen**

289 

290```markdown theme={null}

291📎 *Tipp: Hören Sie auf, Dateiinhalte in den Chat zu kopieren*

292 

293200 Zeilen einer Komponente in Ihren Prompt kopieren, damit Claude sie

294„sehen" kann? Das müssen Sie nicht.

295 

296Geben Sie `@` ein, dann einen Dateipfad. Claude zieht die Datei direkt in

297den Kontext. Funktioniert auch für ganze Verzeichnisse.

298 

299> die Stile in @src/components/Button.tsx sehen falsch aus, überprüfen Sie

300> gegen @docs/design-system.md

301 

302*Probieren Sie es jetzt:* Geben Sie `@` ein, dann Tab. Autovervollständigung

303zeigt Ihnen jede Datei in Reichweite.

304 

305📖 Dateien referenzieren → https://code.claude.com/docs/de/common-workflows

306```

307 

308### Kontrolle und Sicherheit

309 

310**Berechtigungsmodi**

311 

312```markdown theme={null}

313🛡️ *Tipp: Ein Tastendruck zwischen „Schauen, aber nicht anfassen" und

314„Mach es einfach"*

315 

316Manchmal möchten Sie, dass Claude vor jeder Bearbeitung fragt. Manchmal

317möchten Sie einfach, dass es ausgeliefert wird. Sie sollten sich nicht

318für immer für einen entscheiden müssen.

319 

320*Shift+Tab* durchläuft, wie viel Spielraum Claude bekommt: *default* fragt

321vor riskanten Sachen, *acceptEdits* lässt Dateibearbeitungen und häufige

322Dateisystem-Befehle durchfließen, während immer noch vor anderen

323Shell-Befehlen überprüft wird, und *plan* schlägt Änderungen zur Genehmigung

324vor, bevor etwas angefasst wird. Plan-Modus ist der Vertrauensaufbauer,

325also beginnen Sie damit für alles, das mehrere Dateien anfasst.

326 

327*Probieren Sie es jetzt:* Bei Ihrem nächsten Refactoring drücken Sie

328Shift+Tab, bis Sie „plan" sehen, dann beschreiben Sie die Änderung. Sie

329erhalten einen vollständigen Vorschlag, bevor eine einzelne Datei sich

330bewegt.

331 

332📖 Berechtigungsmodi → https://code.claude.com/docs/de/permissions

333```

334 

335**Checkpointing und `/rewind`**

336 

337```markdown theme={null}

338⏪ *Tipp: Es gibt einen Rückgängig-Button für das ganze Gespräch*

339 

340Claude ist vor drei Zügen den falschen Weg gegangen und jetzt entwirren Sie

341es? Sie müssen nicht vorwärts reparieren.

342 

343`/rewind` rollt zu einem früheren Punkt im Gespräch zurück, einschließlich

344der Dateiänderungen, die Claude unterwegs gemacht hat. Checkpointing ist

345automatisch; Sie richten nichts ein.

346 

347*Probieren Sie es jetzt:* Drücken Sie *Esc* zweimal, um das Rewind-Menü zu

348öffnen, oder geben Sie `/rewind` ein. Wählen Sie den Punkt, bevor die Dinge

349schiefgingen.

350 

351📖 Checkpointing → https://code.claude.com/docs/de/checkpointing

352```

353 

354### Verbinden Sie Ihre Tools

355 

356**MCP-Konnektoren**

357 

358```markdown theme={null}

359🔌 *Tipp: Lassen Sie Claude Ihren Issue-Tracker lesen, damit Sie keine

360Tickets einfügen müssen*

361 

362Jira-Tickets ins Terminal kopieren und einfügen fühlt sich wie ein Schritt

363zurück an. Das ist es.

364 

365Eine Konfigurationsdatei (`.mcp.json` in Ihrem Projekt-Root) verbindet Claude

366mit GitHub, Jira, Linear oder welchem Tracker Sie auch verwenden. Dann

367passieren „Was ist das Top-Priority-Issue, das mir zugewiesen ist?" und

368„Gehen Sie voran und beheben Sie es" im selben Gespräch.

369 

370*Probieren Sie es jetzt:* Fragen Sie Claude „Richten Sie einen MCP-Konnektor

371für [GitHub/Jira/Linear] in diesem Repo ein". Es wird die Konfiguration für

372Sie schreiben.

373 

374📖 MCP-Konnektoren → https://code.claude.com/docs/de/mcp

375```

376 

377### Automatisieren Sie Ihre Workflows

378 

379**Skills**

380 

381```markdown theme={null}

382⚡ *Tipp: Verwandeln Sie diesen Prompt, den Sie immer wieder eingeben, in

383einen Befehl*

384 

385Diese Woche dreimal „Fasse zusammen, woran ich heute aus git log gearbeitet

386habe, formatiere es für Standup" eingegeben? Das ist ein Slash-Befehl, der

387darauf wartet.

388 

389Eine SKILL.md-Datei in `.claude/skills/<name>/` wird zu einem wiederverwendbaren

390Prompt; geben Sie `/<name>` ein, um ihn auszuführen. Erstellen Sie einen,

391wenn Sie zum zweiten Mal einen mehrstufigen Prompt eingeben, den Sie vorher

392eingegeben haben. Einfachster Weg: Fragen Sie Claude, es für Sie zu machen.

393 

394*Probieren Sie es jetzt:* Geben Sie „Machen Sie mir einen /standup Skill, der

395zusammenfasst, woran ich heute aus git log gearbeitet habe", dann führen Sie

396morgen früh `/standup` aus.

397 

398📖 Skills → https://code.claude.com/docs/de/skills

399```

400 

401**Hooks**

402 

403```markdown theme={null}

404🔔 *Tipp: Erhalten Sie eine Benachrichtigung, wenn Ihr Refactoring fertig

405ist*

406 

407Sitzen Sie an Ihrem Schreibtisch und beobachten Claude bei einer langen

408Aufgabe? Sie haben bessere Dinge zu tun für diese acht Minuten.

409 

410Hooks sind Shell-Befehle, die bei Claude Code-Ereignissen ausgelöst werden.

411Ein Stop-Hook, der eine Desktop-Benachrichtigung sendet, bedeutet, dass Sie

412ein langes Refactoring starten, weggehen und eine Benachrichtigung erhalten

413können, sobald es fertig ist.

414 

415*Probieren Sie es jetzt:* Fragen Sie Claude „Fügen Sie einen Stop-Hook hinzu,

416der eine Desktop-Benachrichtigung sendet, wenn Sie fertig sind". Es wird das

417Skript schreiben und es verdrahten.

418 

419📖 Hooks-Anleitung → https://code.claude.com/docs/de/hooks-guide

420```

421 

422### Alltägliche Entwicklung

423 

424**Screenshots und Bilder**

425 

426```markdown theme={null}

427📸 *Tipp: Hören Sie auf, den Fehler-Dialog zu beschreiben. Zeigen Sie ihn

428einfach.*

429 

430„Es gibt eine rote Box, die etwas über eine Null-Referenz sagt und auf

431Zeile 47-ish zeigt" eingeben? Screenshot es.

432 

433Ziehen Sie einen Screenshot direkt ins Terminal und Claude sieht ihn:

434Fehler-Dialoge, UI-Mockups, Whiteboard-Fotos, Figma-Exporte. *Ctrl+V*

435fügt aus der Zwischenablage ein (verwenden Sie auch Ctrl+V auf macOS, nicht

436Cmd+V).

437 

438*Probieren Sie es jetzt:* Wenn das nächste Mal etwas Visuelles bricht,

439machen Sie einen Screenshot und fügen Sie ihn direkt in den Prompt ein.

440Geben Sie dann einfach „Was ist hier falsch?" ein.

441 

442📖 Mit Bildern arbeiten → https://code.claude.com/docs/de/common-workflows

443```

444 

445**Git-Workflows**

446 

447```markdown theme={null}

448🌿 *Tipp: Übergeben Sie die ganze Git-Zeremonie*

449 

450Die Behebung dauerte 5 Minuten. Die Commit-Nachricht, der Branch und die

451PR-Beschreibung dauerten 15. Dieses Verhältnis ist falsch.

452 

453Claude handhabt den vollständigen Git-Flow: Commits mit konventionellen

454Nachrichten, Branches, PRs mit ordentlichen Zusammenfassungen. Eine Anfrage:

455„Behebe den Off-by-One, committe mit einer konventionellen Commit-Nachricht

456und öffne einen PR." Überprüfen Sie die Arbeit von jemand anderem? Fügen Sie

457die PR-URL ein und fragen Sie Claude, Sie durch den Diff zu führen.

458 

459*Probieren Sie es jetzt:* Nach Ihrer nächsten Behebung, statt zu Ihrem

460Git-Client zu wechseln, geben Sie einfach „Committe dies mit einer guten

461Nachricht und öffne einen PR" ein.

462 

463📖 Pull Requests erstellen → https://code.claude.com/docs/de/common-workflows

464```

465 

466### Teilen und skalieren

467 

468**Plugins**

469 

470```markdown theme={null}

471📦 *Tipp: Jemand hat diesen Skill wahrscheinlich bereits erstellt*

472 

473Dabei, eine Stunde damit zu verbringen, einen `/deploy`-Befehl zu erstellen?

474Überprüfen Sie, ob er bereits existiert.

475 

476Skills werden gebündelt und als Plugins geteilt. `/plugin` durchsucht, was

477verfügbar ist, und installiert in einem Schritt. Fünf Minuten Durchsuchen

478können eine Stunde Bauen sparen.

479 

480*Probieren Sie es jetzt:* Geben Sie `/plugin` ein und scrollen Sie durch.

481Sie werden mindestens eine Sache finden, die Sie nicht wussten, dass Sie sie

482wollten.

483 

484📖 Plugins → https://code.claude.com/docs/de/plugins

485```

486 

487### Sicherheit und Admin

488 

489**Sicherheitsarchitektur**

490 

491```markdown theme={null}

492🔐 *Tipp: Die Antwort auf „Ist das sicher?" für das nächste Mal, wenn Sie

493gefragt werden*

494 

495Jemand in Ihrem Team wird fragen „Warte, wo geht mein Code hin?"

496Hier ist die Kurzversion, die Sie einfügen können.

497 

498Berechtigungsorientiert nach Design. Jede Dateibearbeitung, jeder

499Shell-Befehl und jeder externe Aufruf wird durch Ihre Genehmigung

500kontrolliert. Die CLI läuft in Ihrem Terminal und spricht direkt mit

501Anthropics API, ohne dritte Server, und unterstützt optionales

502Betriebssystem-Level-Sandboxing für Shell-Befehle. Unter unserem

503Enterprise-Plan verwendet Anthropic Ihren Code oder Prompts nicht zum

504Trainieren seiner Modelle.

505 

506*Probieren Sie es jetzt:* Speichern Sie diese zwei Links für das nächste

507Mal, wenn die Frage kommt. Sie beantworten die meisten

508Sicherheitsüberprüfungsfragen.

509 

510📖 https://code.claude.com/docs/de/security

511📖 https://code.claude.com/docs/de/data-usage

512```

513 

514**Best Practices**

515 

516```markdown theme={null}

517✅ *Tipp: Die 4 Gewohnheiten, die „Ausprobiert einmal" von „Verwende es

518täglich" trennen*

519 

520Die meisten Menschen, die Claude Code abbrechen, haben eine davon übersprungen.

521Die meisten Menschen, die bleiben, haben alle vier in der ersten Woche gemacht.

522 

523 - Beginnen Sie im Plan-Modus für alles, das mehrere Dateien anfasst

524 - Führen Sie /init früh aus; Kontext verstärkt sich

525 - Überprüfen Sie Diffs vor dem Committen; Claude kann zuversichtlich falsch

526 sein

527 - Überprüfen Sie Änderungen, die kritische Pfade anfassen; behandeln Sie es

528 wie einen scharfsinnigen Junior, nicht wie ein Orakel

529 

530*Probieren Sie es jetzt:* Wenn Sie nur eines oder zwei davon gemacht haben,

531wählen Sie das aus, das Sie vermissen, und machen Sie es bei Ihrer nächsten

532Aufgabe. Posten Sie, was sich in #claude-code geändert hat.

533 

534📖 Best Practices → https://code.claude.com/docs/de/best-practices

535```

536 

537## Schnellreferenz

538 

539### FAQ-Antworten

540 

541Einzeilige Antworten für die Fragen, die Sie am häufigsten gestellt bekommen.

542 

543| Frage | Antwort |

544| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

545| „Funktioniert es in VS Code?" | Ja. Es gibt eine VS Code-Erweiterung und ein JetBrains-Plugin mit denselben Features, eingebettet in Ihrem Editor. [VS Code →](/de/vs-code) |

546| „Muss ich vorher etwas konfigurieren?" | Nein. Installieren Sie, führen Sie dann `claude` in einem beliebigen Repo aus. Führen Sie `/init` einmal aus und Sie sind fertig. [Schnellstart →](/de/quickstart) |

547| „Wo geht mein Code hin?" | Die CLI läuft in Ihrem Terminal und sendet Kontext an Anthropics API für Inferenz, ohne dritte Server. Unter Ihrem Enterprise-Plan werden Ihr Code und Prompts nicht zum Trainieren von Modellen verwendet. [Datennutzung →](/de/data-usage) |

548| „Kann es mein ganzes Repo sehen?" | Es liest, worauf Sie ihm Zugriff geben. Dateilesevorgänge in Ihrem Arbeitsverzeichnis erfordern keine Aufforderung; Berechtigungsaufforderungen kontrollieren Bearbeitungen, Shell-Befehle und alles außerhalb dieses Verzeichnisses. [Berechtigungen →](/de/permissions) |

549| „Wie unterscheidet sich das von Copilot?" | Copilot vervollständigt Zeilen. Claude Code ist ein Agent, der Dateien liest, Befehle ausführt und mehrdatei-Bearbeitungen macht. [Übersicht →](/de/overview) |

550| „Was sollte ich zuerst ausprobieren?" | Ein Bug, den Sie aufgeschoben haben, weil er mühsam ist. „Der Test in \[Datei] ist flaky, finde heraus, warum." [Schnellstart →](/de/quickstart) |

551 

552### Prompt-Vorlagen

553 

554Teilen Sie diese Starter-Prompts mit Engineers, die installiert haben, aber nicht sicher sind, was sie fragen sollen. Jeder ist so formuliert, wie er in einer echten Sitzung eingegeben würde; ersetzen Sie die eingeklammerten Teile durch Dateien aus Ihrem eigenen Repo.

555 

556| Aufgabe | Prompt |

557| ------------------------------ | ----------------------------------------------------------------------------------------------------- |

558| Beheben Sie einen Bug | „Die Tests in \[Datei] schlagen fehl, finde heraus, warum und behebe es" |

559| Verstehen Sie Code | „Zeige mir, wie \[Modul] funktioniert, dann sag mir, wo der Einstiegspunkt ist" |

560| Sicheres Refactoring | „Refaktoriere \[Modul] zu \[Ziel], verwende Plan-Modus, damit ich zuerst überprüfen kann" |

561| Schreiben Sie Tests | „Schreibe Tests für \[Datei], die die Edge Cases um \[Szenario] abdecken" |

562| Überprüfen Sie vor dem Commit | „Schau dir meinen funktionierenden Diff an und sag mir, was riskant aussieht" |

563| Öffnen Sie einen PR | „Behebe \[Issue], schreibe einen konventionellen Commit und öffne einen PR mit einer Zusammenfassung" |

564| Erstellen Sie einen Skill | „Machen Sie mir einen /ship Skill, der Tests und Lint vor dem Commit ausführt" |

565| Debuggen Sie einen Stack Trace | „Hier ist der Stack Trace, finde die Grundursache, papiere es nicht einfach über" |

566 

567<Tip>

568 Claude Code wird häufig aktualisiert. Überprüfen Sie versionsspezifische Details gegen die [Dokumentationsstartseite](/de/overview), bevor Sie intern verteilen.

569</Tip>

computer-use.md +207 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude von der CLI aus Ihren Computer nutzen lassen

6 

7> Aktivieren Sie die Computernutzung in der Claude Code CLI, damit Claude Apps öffnen, klicken, tippen und Ihren Bildschirm auf macOS sehen kann. Testen Sie native Apps, debuggen Sie visuelle Probleme und automatisieren Sie GUI-only-Tools, ohne Ihr Terminal zu verlassen.

8 

9<Note>

10 {/* plan-availability: feature=computer-use plans=pro,max */}

11 

12 Die Computernutzung ist eine Forschungsvorschau auf macOS, die einen Pro- oder Max-Plan erfordert. Sie ist nicht auf Team- oder Enterprise-Plänen verfügbar. Sie erfordert Claude Code v2.1.85 oder später und eine interaktive Sitzung, daher ist sie nicht im nicht-interaktiven Modus mit dem Flag `-p` verfügbar.

13</Note>

14 

15Die Computernutzung ermöglicht es Claude, Apps zu öffnen, Ihren Bildschirm zu steuern und auf Ihrem Computer so zu arbeiten, wie Sie es tun würden. Von der CLI aus kann Claude eine Swift-App kompilieren, sie starten, jeden Button durchklicken und das Ergebnis screenshooten – alles in derselben Konversation, in der es den Code geschrieben hat.

16 

17Diese Seite behandelt, wie die Computernutzung in der CLI funktioniert. Für die Desktop-App siehe [Computernutzung in Desktop](/de/desktop#let-claude-use-your-computer).

18 

19## Was Sie mit der Computernutzung tun können

20 

21Die Computernutzung bewältigt Aufgaben, die eine GUI erfordern: alles, was Sie normalerweise das Terminal verlassen und von Hand tun müssten.

22 

23* **Native Apps erstellen und validieren**: Bitten Sie Claude, eine macOS-Menüleisten-App zu erstellen. Claude schreibt Swift, kompiliert es, startet die App und klickt jeden Control durch, um zu überprüfen, dass es funktioniert, bevor Sie es jemals öffnen.

24* **End-to-End-UI-Tests**: Zeigen Sie Claude eine lokale Electron-App und sagen Sie „teste den Onboarding-Flow." Claude öffnet die App, klickt sich durch die Anmeldung und macht einen Screenshot von jedem Schritt. Keine Playwright-Konfiguration, kein Test-Harness.

25* **Visuelle und Layout-Probleme debuggen**: Sagen Sie Claude „das Modal wird bei kleinen Fenstern abgeschnitten." Claude ändert die Fenstergröße, reproduziert den Bug, macht einen Screenshot, patcht das CSS und überprüft die Korrektur. Claude sieht, was Sie sehen.

26* **GUI-only-Tools steuern**: Interagieren Sie mit Design-Tools, Hardware-Kontrollpanelen, dem iOS Simulator oder proprietären Apps, die keine CLI oder API haben.

27 

28## Wann die Computernutzung angewendet wird

29 

30Claude hat mehrere Möglichkeiten, mit einer App oder einem Service zu interagieren. Die Computernutzung ist die breiteste und langsamste, daher versucht Claude zuerst das präziseste Tool:

31 

32* Wenn Sie einen [MCP-Server](/de/mcp) für den Service haben, verwendet Claude diesen.

33* Wenn die Aufgabe ein Shell-Befehl ist, verwendet Claude Bash.

34* Wenn die Aufgabe Browser-Arbeit ist und Sie [Claude in Chrome](/de/chrome) eingerichtet haben, verwendet Claude das.

35* Wenn keine dieser Optionen zutrifft, verwendet Claude die Computernutzung.

36 

37Die Bildschirmsteuerung ist für Dinge reserviert, die nichts anderes erreichen kann: native Apps, Simulatoren und Tools ohne API.

38 

39## Computernutzung aktivieren

40 

41Die Computernutzung ist als integrierter MCP-Server namens `computer-use` verfügbar. Sie ist standardmäßig deaktiviert, bis Sie sie aktivieren.

42 

43<Steps>

44 <Step title="Öffnen Sie das MCP-Menü">

45 Führen Sie in einer interaktiven Claude Code-Sitzung Folgendes aus:

46 

47 ```text theme={null}

48 /mcp

49 ```

50 

51 Finden Sie `computer-use` in der Serverliste. Es wird als deaktiviert angezeigt.

52 </Step>

53 

54 <Step title="Aktivieren Sie den Server">

55 Wählen Sie `computer-use` und wählen Sie **Aktivieren**. Die Einstellung bleibt pro Projekt bestehen, daher müssen Sie dies nur einmal für jedes Projekt tun, in dem Sie die Computernutzung möchten.

56 </Step>

57 

58 <Step title="Gewähren Sie macOS-Berechtigungen">

59 Wenn Claude Ihren Computer zum ersten Mal nutzen möchte, sehen Sie eine Aufforderung, zwei macOS-Berechtigungen zu gewähren:

60 

61 * **Barrierefreiheit**: ermöglicht Claude zu klicken, zu tippen und zu scrollen

62 * **Bildschirmaufzeichnung**: ermöglicht Claude zu sehen, was auf Ihrem Bildschirm angezeigt wird

63 

64 Die Aufforderung enthält Links zum Öffnen des relevanten System-Einstellungsbereichs. Gewähren Sie beide, wählen Sie dann **Erneut versuchen** in der Aufforderung. macOS erfordert möglicherweise, dass Sie Claude Code nach dem Gewähren der Bildschirmaufzeichnung neu starten.

65 </Step>

66</Steps>

67 

68Nach der Einrichtung bitten Sie Claude, etwas zu tun, das die GUI benötigt:

69 

70```text theme={null}

71Erstellen Sie das App-Ziel, starten Sie es und klicken Sie durch jeden Tab, um

72sicherzustellen, dass nichts abstürzt. Machen Sie einen Screenshot von Fehlerzuständen, die Sie finden.

73```

74 

75## Genehmigen Sie Apps pro Sitzung

76 

77Das Aktivieren des `computer-use`-Servers gewährt Claude nicht automatisch Zugriff auf jede App auf Ihrem Computer. Wenn Claude eine bestimmte App zum ersten Mal in einer Sitzung benötigt, erscheint eine Aufforderung in Ihrem Terminal mit:

78 

79* Welche Apps Claude steuern möchte

80* Alle zusätzlichen angeforderten Berechtigungen, wie z. B. Zwischenablage-Zugriff

81* Wie viele andere Apps ausgeblendet werden, während Claude arbeitet

82 

83Wählen Sie **Für diese Sitzung zulassen** oder **Ablehnen**. Genehmigungen gelten für die aktuelle Sitzung. Sie können mehrere Apps auf einmal genehmigen, wenn Claude sie zusammen anfordert.

84 

85Apps mit großer Reichweite zeigen eine zusätzliche Warnung in der Aufforderung, damit Sie wissen, welche Zugriffe das Genehmigen gewährt:

86 

87| Warnung | Gilt für |

88| :----------------------------------- | :----------------------------------------------------------- |

89| Gleichbedeutend mit Shell-Zugriff | Terminal, iTerm, VS Code, Warp und andere Terminals und IDEs |

90| Kann jede Datei lesen oder schreiben | Finder |

91| Kann Systemeinstellungen ändern | Systemeinstellungen |

92 

93Diese Apps sind nicht blockiert. Die Warnung hilft Ihnen zu entscheiden, ob die Aufgabe dieses Zugriffsniveau rechtfertigt.

94 

95Claudes Kontrollebene variiert auch je nach App-Kategorie: Browser und Handelsplattformen sind nur zum Anschauen, Terminals und IDEs sind nur zum Klicken und alles andere erhält vollständige Kontrolle. Siehe [App-Berechtigungen in Desktop](/de/desktop#app-permissions) für die vollständige Tier-Aufschlüsselung.

96 

97## Wie Claude auf Ihrem Bildschirm arbeitet

98 

99Das Verständnis des Ablaufs hilft Ihnen zu antizipieren, was Claude tun wird und wie Sie eingreifen können.

100 

101### Eine Sitzung auf einmal

102 

103Die Computernutzung hält eine maschinenweite Sperre, während sie aktiv ist. Wenn eine andere Claude Code-Sitzung bereits Ihren Computer nutzt, schlagen neue Versuche mit einer Nachricht fehl, die Ihnen mitteilt, welche Sitzung die Sperre hält. Beenden oder beenden Sie diese Sitzung zuerst.

104 

105### Apps werden ausgeblendet, während Claude arbeitet

106 

107Wenn Claude beginnt, Ihren Bildschirm zu steuern, werden andere sichtbare Apps ausgeblendet, damit Claude nur mit den genehmigten Apps interagiert. Ihr Terminal-Fenster bleibt sichtbar und ist von Screenshots ausgeschlossen, daher können Sie die Sitzung beobachten und Claude sieht seine eigene Ausgabe nie.

108 

109Wenn Claude die Runde beendet, werden ausgeblendete Apps automatisch wiederhergestellt.

110 

111### Jederzeit stoppen

112 

113Wenn Claude die Sperre erhält, erscheint eine macOS-Benachrichtigung: 'Claude nutzt Ihren Computer · drücken Sie Esc zum Stoppen." Drücken Sie `Esc` überall, um die aktuelle Aktion sofort abzubrechen, oder drücken Sie `Ctrl+C` im Terminal. In beiden Fällen gibt Claude die Sperre frei, blendet Ihre Apps wieder ein und gibt Ihnen die Kontrolle zurück.

114 

115Eine zweite Benachrichtigung erscheint, wenn Claude fertig ist.

116 

117## Sicherheit und die Vertrauensgrenze

118 

119<Warning>

120 Im Gegensatz zum [isolierten Bash-Tool](/de/sandboxing) läuft die Computernutzung auf Ihrem tatsächlichen Desktop mit Zugriff auf die Apps, die Sie genehmigen. Claude überprüft jede Aktion und kennzeichnet potenzielle Prompt-Injection aus Inhalten auf dem Bildschirm, aber die Vertrauensgrenze ist unterschiedlich. Siehe den [Sicherheitsleitfaden für Computernutzung](https://support.claude.com/en/articles/14128542) für Best Practices.

121</Warning>

122 

123Die integrierten Schutzvorrichtungen reduzieren das Risiko ohne Konfiguration:

124 

125* **Pro-App-Genehmigung**: Claude kann nur Apps steuern, die Sie in der aktuellen Sitzung genehmigt haben.

126* **Sentinel-Warnungen**: Apps, die Shell-, Dateisystem- oder Systemeinstellungszugriff gewähren, werden gekennzeichnet, bevor Sie sie genehmigen.

127* **Terminal ausgeschlossen von Screenshots**: Claude sieht Ihr Terminal-Fenster nie, daher können On-Screen-Aufforderungen in Ihrer Sitzung nicht in das Modell zurückfließen.

128* **Globales Escape**: Die `Esc`-Taste bricht die Computernutzung von überall ab, und der Tastendruck wird verbraucht, daher kann Prompt-Injection ihn nicht zum Schließen von Dialogen verwenden.

129* **Sperrdatei**: Nur eine Sitzung kann Ihren Computer auf einmal steuern.

130 

131## Beispiel-Workflows

132 

133Diese Beispiele zeigen häufige Möglichkeiten, die Computernutzung mit Coding-Aufgaben zu kombinieren.

134 

135### Einen nativen Build validieren

136 

137Nach Änderungen an einer macOS- oder iOS-App lassen Sie Claude in einem Durchgang kompilieren und überprüfen:

138 

139```text theme={null}

140Erstellen Sie das MenuBarStats-Ziel, starten Sie es, öffnen Sie das Einstellungsfenster,

141und überprüfen Sie, dass der Interval-Schieberegler das Label aktualisiert. Machen Sie einen Screenshot des

142Einstellungsfensters, wenn Sie fertig sind.

143```

144 

145Claude führt `xcodebuild` aus, startet die App, interagiert mit der UI und berichtet, was es findet.

146 

147### Einen Layout-Bug reproduzieren

148 

149Wenn ein visueller Bug nur bei bestimmten Fenstergrößen auftritt, lassen Sie Claude ihn finden:

150 

151```text theme={null}

152Das Einstellungsmodal schneidet seine Fußzeile bei schmalen Fenstern ab. Ändern Sie die Größe des App-Fensters,

153bis Sie es reproduzieren können, machen Sie einen Screenshot des abgeschnittenen Zustands,

154überprüfen Sie dann das CSS für den Modal-Container.

155```

156 

157Claude ändert die Fenstergröße, erfasst den fehlerhaften Zustand und liest die relevanten Stylesheets.

158 

159### Einen Simulator-Flow testen

160 

161Steuern Sie den iOS Simulator, ohne XCTest zu schreiben:

162 

163```text theme={null}

164Öffnen Sie den iOS Simulator, starten Sie die App, tippen Sie sich durch die Onboarding-Bildschirme,

165und sagen Sie mir, ob ein Bildschirm länger als eine Sekunde zum Laden braucht.

166```

167 

168Claude steuert den Simulator auf die gleiche Weise wie Sie mit einer Maus.

169 

170## Unterschiede zur Desktop-App

171 

172Die CLI- und Desktop-Oberflächen teilen sich die gleiche Computernutzungs-Engine. Ein paar Desktop-spezifische Steuerelemente sind noch nicht in der CLI:

173 

174| Funktion | Desktop | CLI |

175| :--------------------- | :------------------------------------------------------------------ | :-------------------------------------- |

176| Aktivieren | Umschalter in **Einstellungen > Allgemein** (unter **Desktop-App**) | Aktivieren Sie `computer-use` in `/mcp` |

177| Liste abgelehnter Apps | Konfigurierbar in Einstellungen | Noch nicht verfügbar |

178| Auto-Unhide-Umschalter | Optional | Immer aktiviert |

179| Dispatch-Integration | Von Dispatch gestartete Sitzungen können Computernutzung verwenden | Nicht anwendbar |

180 

181## Fehlerbehebung

182 

183### „Computernutzung wird von einer anderen Claude-Sitzung verwendet"

184 

185Eine andere Claude Code-Sitzung hält die Sperre. Beenden Sie die Aufgabe in dieser Sitzung oder beenden Sie sie. Wenn die andere Sitzung abgestürzt ist, wird die Sperre automatisch freigegeben, wenn Claude erkennt, dass der Prozess nicht mehr ausgeführt wird.

186 

187### macOS-Berechtigungsaufforderung erscheint immer wieder

188 

189macOS erfordert manchmal einen Neustart des anfordernden Prozesses, nachdem Sie die Bildschirmaufzeichnung gewähren. Beenden Sie Claude Code vollständig und starten Sie eine neue Sitzung. Wenn die Aufforderung weiterhin angezeigt wird, öffnen Sie **Systemeinstellungen > Datenschutz & Sicherheit > Bildschirmaufzeichnung** und bestätigen Sie, dass Ihre Terminal-App aufgelistet und aktiviert ist.

190 

191### `computer-use` erscheint nicht in `/mcp`

192 

193Der Server erscheint nur auf berechtigten Setups. Überprüfen Sie, dass:

194 

195* Sie auf macOS sind. Die Computernutzung ist nicht auf Linux oder Windows verfügbar.

196* Sie Claude Code v2.1.85 oder später ausführen. Führen Sie `claude --version` aus, um zu überprüfen.

197* Sie einen Pro- oder Max-Plan haben. Führen Sie `/status` aus, um Ihr Abonnement zu bestätigen.

198* Sie sich über claude.ai authentifiziert haben. Die Computernutzung ist nicht mit Drittanbieter-Providern wie Amazon Bedrock, Google Cloud Vertex AI oder Microsoft Foundry verfügbar. Wenn Sie Claude ausschließlich über einen Drittanbieter-Provider nutzen, benötigen Sie ein separates claude.ai-Konto, um diese Funktion zu nutzen.

199* Sie sind in einer interaktiven Sitzung. Die Computernutzung ist nicht im nicht-interaktiven Modus mit dem Flag `-p` verfügbar.

200 

201## Siehe auch

202 

203* [Computernutzung in Desktop](/de/desktop#let-claude-use-your-computer): die gleiche Funktion mit einer grafischen Einstellungsseite

204* [Claude in Chrome](/de/chrome): Browser-Automatisierung für webbasierte Aufgaben

205* [MCP](/de/mcp): Verbinden Sie Claude mit strukturierten Tools und APIs

206* [Sandboxing](/de/sandboxing): wie Claudes Bash-Tool Dateisystem- und Netzwerkzugriff isoliert

207* [Sicherheitsleitfaden für Computernutzung](https://support.claude.com/en/articles/14128542): Best Practices für sichere Computernutzung

costs.md +203 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Kosten effektiv verwalten

6 

7> Verfolgen Sie die Token-Nutzung, legen Sie Ausgabenlimits für Teams fest und reduzieren Sie Claude Code-Kosten durch Kontextverwaltung, Modellauswahl, Einstellungen für erweitertes Denken und Preprocessing-Hooks.

8 

9Claude Code wird nach API-Token-Verbrauch berechnet. Für Abonnementplan-Preise (Pro, Max, Team, Enterprise) siehe [claude.com/pricing](https://claude.com/pricing). Die Kosten pro Entwickler variieren stark je nach Modellauswahl, Codebasis-Größe und Nutzungsmustern wie dem Ausführen mehrerer Instanzen oder Automatisierung.

10 

11In unternehmensweiten Bereitstellungen betragen die durchschnittlichen Kosten etwa 13 USD pro Entwickler pro aktivem Tag und 150–250 USD pro Entwickler pro Monat, wobei die Kosten für 90 % der Benutzer unter 30 USD pro aktivem Tag bleiben. Um die Ausgaben für Ihr eigenes Team zu schätzen, beginnen Sie mit einer kleinen Pilotgruppe und verwenden Sie die Tracking-Tools unten, um eine Baseline zu etablieren, bevor Sie einen breiteren Rollout durchführen.

12 

13Diese Seite behandelt, wie Sie [Ihre Kosten verfolgen](#track-your-costs), [Kosten für Teams verwalten](#managing-costs-for-teams) und [Token-Nutzung reduzieren](#reduce-token-usage).

14 

15## Verfolgen Sie Ihre Kosten

16 

17### Verwenden des `/usage`-Befehls

18 

19<Note>

20 Der Session-Block in `/usage` zeigt die API-Token-Nutzung an und ist für API-Benutzer vorgesehen. Claude Max und Pro-Abonnenten haben die Nutzung in ihrem Abonnement enthalten, daher ist die Session-Kostenzahl nicht relevant für Abrechnungszwecke. Abonnenten sehen Plannutzungsbalken und Aktivitätsstatistiken auf demselben Bildschirm.

21</Note>

22 

23Der `/usage`-Befehl bietet detaillierte Token-Nutzungsstatistiken für Ihre aktuelle Sitzung. Die Dollarzahl ist eine Schätzung, die lokal aus Token-Zählungen berechnet wird, und kann sich von Ihrer tatsächlichen Rechnung unterscheiden. Für verbindliche Abrechnung siehe die Nutzungsseite in der [Claude Console](https://platform.claude.com/usage).

24 

25```text theme={null}

26Total cost: $0.55

27Total duration (API): 6m 19.7s

28Total duration (wall): 6h 33m 10.2s

29Total code changes: 0 lines added, 0 lines removed

30```

31 

32## Verwalten Sie Kosten für Teams

33 

34Bei Verwendung der Claude API können Sie [Workspace-Ausgabenlimits festlegen](https://platform.claude.com/docs/de/build-with-claude/workspaces#workspace-limits) für die gesamten Claude Code-Workspace-Ausgaben. Administratoren können [Kosten- und Nutzungsberichte anzeigen](https://platform.claude.com/docs/de/build-with-claude/workspaces#usage-and-cost-tracking) in der Console.

35 

36<Note>

37 Wenn Sie Claude Code zum ersten Mal mit Ihrem Claude Console-Konto authentifizieren, wird automatisch ein Workspace namens „Claude Code" für Sie erstellt. Dieser Workspace bietet zentrale Kostenverfolgung und Verwaltung für alle Claude Code-Nutzung in Ihrer Organisation. Sie können keine API-Schlüssel für diesen Workspace erstellen; er ist ausschließlich für Claude Code-Authentifizierung und -Nutzung.

38 

39 Für Organisationen mit benutzerdefinierten Ratenlimits zählt Claude Code-Verkehr in diesem Workspace zu den gesamten API-Ratenlimits Ihrer Organisation. Sie können ein [Workspace-Ratenlimit](https://platform.claude.com/docs/de/api/rate-limits#setting-lower-limits-for-workspaces) auf der Limits-Seite dieses Workspace in der Claude Console festlegen, um Claude Code's Anteil zu begrenzen und andere Produktions-Workloads zu schützen.

40</Note>

41 

42Bei Bedrock, Vertex und Foundry sendet Claude Code keine Metriken aus Ihrer Cloud. Um Kostenmetriken zu erhalten, berichteten mehrere große Unternehmen von der Verwendung von [LiteLLM](/de/llm-gateway#litellm-configuration), einem Open-Source-Tool, das Unternehmen hilft, [Ausgaben nach Schlüssel zu verfolgen](https://docs.litellm.ai/docs/proxy/virtual_keys#tracking-spend). Dieses Projekt ist nicht mit Anthropic verbunden und wurde nicht auf Sicherheit überprüft.

43 

44### Empfehlungen für Ratenlimits

45 

46Beim Einrichten von Claude Code für Teams sollten Sie diese Token Pro Minute (TPM) und Anfragen Pro Minute (RPM) pro Benutzer-Empfehlungen basierend auf Ihrer Organisationsgröße berücksichtigen:

47 

48| Team-Größe | TPM pro Benutzer | RPM pro Benutzer |

49| ---------------- | ---------------- | ---------------- |

50| 1–5 Benutzer | 200.000–300.000 | 5–7 |

51| 5–20 Benutzer | 100.000–150.000 | 2,5–3,5 |

52| 20–50 Benutzer | 50.000–75.000 | 1,25–1,75 |

53| 50–100 Benutzer | 25.000–35.000 | 0,62–0,87 |

54| 100–500 Benutzer | 15.000–20.000 | 0,37–0,47 |

55| 500+ Benutzer | 10.000–15.000 | 0,25–0,35 |

56 

57Wenn Sie beispielsweise 200 Benutzer haben, könnten Sie 20.000 TPM für jeden Benutzer anfordern, oder insgesamt 4 Millionen TPM (200\*20.000 = 4 Millionen).

58 

59Die TPM pro Benutzer sinkt mit zunehmender Team-Größe, da in größeren Organisationen weniger Benutzer Claude Code gleichzeitig verwenden. Diese Ratenlimits gelten auf Organisationsebene, nicht pro einzelnem Benutzer, was bedeutet, dass einzelne Benutzer vorübergehend mehr als ihren berechneten Anteil verbrauchen können, wenn andere den Service nicht aktiv nutzen.

60 

61<Note>

62 Wenn Sie Szenarien mit ungewöhnlich hoher gleichzeitiger Nutzung erwarten (z. B. Live-Schulungssitzungen mit großen Gruppen), benötigen Sie möglicherweise höhere TPM-Zuordnungen pro Benutzer.

63</Note>

64 

65### Token-Kosten für Agent-Teams

66 

67[Agent-Teams](/de/agent-teams) starten mehrere Claude Code-Instanzen, jede mit ihrem eigenen Kontextfenster. Die Token-Nutzung skaliert mit der Anzahl der aktiven Teammates und wie lange jeder läuft.

68 

69Um Agent-Team-Kosten überschaubar zu halten:

70 

71* Verwenden Sie Sonnet für Teammates. Es bietet ein Gleichgewicht zwischen Fähigkeit und Kosten für Koordinationsaufgaben.

72* Halten Sie Teams klein. Jeder Teammate führt sein eigenes Kontextfenster aus, daher ist die Token-Nutzung ungefähr proportional zur Team-Größe.

73* Halten Sie Spawn-Prompts fokussiert. Teammates laden CLAUDE.md, MCP-Server und Skills automatisch, aber alles im Spawn-Prompt trägt von Anfang an zu ihrem Kontext bei.

74* Bereinigen Sie Teams, wenn die Arbeit erledigt ist. Aktive Teammates verbrauchen weiterhin Token, auch wenn sie untätig sind.

75* Agent-Teams sind standardmäßig deaktiviert. Setzen Sie `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` in Ihrer [settings.json](/de/settings) oder Umgebung, um sie zu aktivieren. Siehe [Agent-Teams aktivieren](/de/agent-teams#enable-agent-teams).

76 

77## Reduzieren Sie die Token-Nutzung

78 

79Token-Kosten skalieren mit der Kontextgröße: Je mehr Kontext Claude verarbeitet, desto mehr Token verwenden Sie. Claude Code optimiert Kosten automatisch durch Prompt Caching (das Kosten für wiederholte Inhalte wie Systemprompts reduziert) und Auto-Compaction (das Gesprächsverlauf zusammenfasst, wenn sich dem Kontextlimit genähert wird).

80 

81Die folgenden Strategien helfen Ihnen, den Kontext klein zu halten und die Kosten pro Nachricht zu reduzieren.

82 

83### Verwalten Sie den Kontext proaktiv

84 

85Verwenden Sie `/usage`, um Ihre aktuelle Token-Nutzung zu überprüfen, oder [konfigurieren Sie Ihre Statuszeile](/de/statusline#context-window-usage), um sie kontinuierlich anzuzeigen.

86 

87* **Zwischen Aufgaben löschen**: Verwenden Sie `/clear`, um neu zu beginnen, wenn Sie zu nicht verwandter Arbeit wechseln. Veralteter Kontext verschwendet Token bei jeder nachfolgenden Nachricht. Verwenden Sie `/rename` vor dem Löschen, damit Sie die Sitzung später leicht finden können, dann `/resume`, um zu ihr zurückzukehren.

88* **Fügen Sie benutzerdefinierte Compaction-Anweisungen hinzu**: `/compact Focus on code samples and API usage` teilt Claude mit, was während der Zusammenfassung beibehalten werden soll.

89 

90Sie können das Compaction-Verhalten auch in Ihrer CLAUDE.md anpassen:

91 

92```markdown theme={null}

93# Compact instructions

94 

95When you are using compact, please focus on test output and code changes

96```

97 

98### Wählen Sie das richtige Modell

99 

100Sonnet bewältigt die meisten Codierungsaufgaben gut und kostet weniger als Opus. Reservieren Sie Opus für komplexe architektonische Entscheidungen oder mehrstufiges Denken. Verwenden Sie `/model`, um Modelle während einer Sitzung zu wechseln, oder legen Sie einen Standard in `/config` fest. Für einfache Subagent-Aufgaben geben Sie `model: haiku` in Ihrer [Subagent-Konfiguration](/de/sub-agents#choose-a-model) an.

101 

102### Reduzieren Sie den MCP-Server-Overhead

103 

104MCP-Tool-Definitionen werden [standardmäßig aufgeschoben](/de/mcp#scale-with-mcp-tool-search), daher treten nur Tool-Namen in den Kontext ein, bis Claude ein bestimmtes Tool verwendet. Führen Sie `/context` aus, um zu sehen, was Platz verbraucht.

105 

106* **Bevorzugen Sie CLI-Tools, wenn verfügbar**: Tools wie `gh`, `aws`, `gcloud` und `sentry-cli` sind immer noch kontexteffektiver als MCP-Server, da sie keine Pro-Tool-Auflistung hinzufügen. Claude kann CLI-Befehle direkt ausführen.

107* **Deaktivieren Sie ungenutzte Server**: Führen Sie `/mcp` aus, um konfigurierte Server anzuzeigen und alle zu deaktivieren, die Sie nicht aktiv verwenden.

108 

109### Installieren Sie Code-Intelligence-Plugins für typisierte Sprachen

110 

111[Code-Intelligence-Plugins](/de/discover-plugins#code-intelligence) geben Claude präzise Symbol-Navigation statt textbasierter Suche, wodurch unnötige Dateileser beim Erkunden unbekannten Codes reduziert werden. Ein einzelner „Gehe zu Definition"-Aufruf ersetzt, was sonst ein Grep gefolgt vom Lesen mehrerer Kandidatendateien sein könnte. Installierte Sprachserver melden auch Typfehler automatisch nach Bearbeitungen, sodass Claude Fehler erkennt, ohne einen Compiler auszuführen.

112 

113### Verlagern Sie die Verarbeitung auf Hooks und Skills

114 

115Benutzerdefinierte [Hooks](/de/hooks) können Daten vorverarbeiten, bevor Claude sie sieht. Anstatt dass Claude eine 10.000-Zeilen-Protokolldatei liest, um Fehler zu finden, kann ein Hook nach `ERROR` suchen und nur übereinstimmende Zeilen zurückgeben, wodurch der Kontext von Zehntausenden Token auf Hunderte reduziert wird.

116 

117Ein [Skill](/de/skills) kann Claude Domänenwissen geben, sodass es nicht erkunden muss. Beispielsweise könnte ein „codebase-overview"-Skill die Architektur Ihres Projekts, wichtige Verzeichnisse und Namenskonventionen beschreiben. Wenn Claude den Skill aufruft, erhält es diesen Kontext sofort, anstatt Token zu verschwenden, um mehrere Dateien zu lesen, um die Struktur zu verstehen.

118 

119Beispielsweise filtert dieser PreToolUse-Hook die Testausgabe, um nur Fehler anzuzeigen:

120 

121<Tabs>

122 <Tab title="settings.json">

123 Fügen Sie dies zu Ihrer [settings.json](/de/settings#settings-files) hinzu, um den Hook vor jedem Bash-Befehl auszuführen:

124 

125 ```json theme={null}

126 {

127 "hooks": {

128 "PreToolUse": [

129 {

130 "matcher": "Bash",

131 "hooks": [

132 {

133 "type": "command",

134 "command": "~/.claude/hooks/filter-test-output.sh"

135 }

136 ]

137 }

138 ]

139 }

140 }

141 ```

142 </Tab>

143 

144 <Tab title="filter-test-output.sh">

145 Der Hook ruft dieses Skript auf, das überprüft, ob der Befehl ein Test-Runner ist, und ihn ändert, um nur Fehler anzuzeigen:

146 

147 ```bash theme={null}

148 #!/bin/bash

149 input=$(cat)

150 cmd=$(echo "$input" | jq -r '.tool_input.command')

151 

152 # If running tests, filter to show only failures

153 if [[ "$cmd" =~ ^(npm test|pytest|go test) ]]; then

154 filtered_cmd="$cmd 2>&1 | grep -A 5 -E '(FAIL|ERROR|error:)' | head -100"

155 echo "{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"permissionDecision\":\"allow\",\"updatedInput\":{\"command\":\"$filtered_cmd\"}}}"

156 else

157 echo "{}"

158 fi

159 ```

160 </Tab>

161</Tabs>

162 

163### Verschieben Sie Anweisungen von CLAUDE.md zu Skills

164 

165Ihre [CLAUDE.md](/de/memory)-Datei wird beim Sitzungsstart in den Kontext geladen. Wenn sie detaillierte Anweisungen für spezifische Workflows enthält (wie PR-Reviews oder Datenbankmigrationen), sind diese Token vorhanden, auch wenn Sie nicht verwandte Arbeit erledigen. [Skills](/de/skills) werden bei Bedarf nur geladen, wenn sie aufgerufen werden, daher hält das Verschieben spezialisierter Anweisungen in Skills Ihren Basis-Kontext kleiner. Streben Sie danach, CLAUDE.md unter 200 Zeilen zu halten, indem Sie nur das Wesentliche einbeziehen.

166 

167### Passen Sie das erweiterte Denken an

168 

169Erweitertes Denken ist standardmäßig aktiviert, da es die Leistung bei komplexen Planungs- und Denkaufgaben erheblich verbessert. Thinking-Token werden als Output-Token abgerechnet, und das Standard-Budget kann je nach Modell Zehntausende Token pro Anfrage betragen. Für einfachere Aufgaben, bei denen tiefes Denken nicht erforderlich ist, können Sie Kosten reduzieren, indem Sie die [Anstrengungsstufe](/de/model-config#adjust-effort-level) mit `/effort` senken oder in `/model`, Denken in `/config` deaktivieren oder das Budget mit `MAX_THINKING_TOKENS=8000` senken.

170 

171### Delegieren Sie ausführliche Operationen an Subagents

172 

173Das Ausführen von Tests, das Abrufen von Dokumentation oder das Verarbeiten von Protokolldateien kann erheblichen Kontext verbrauchen. Delegieren Sie diese an [Subagents](/de/sub-agents#isolate-high-volume-operations), sodass die ausführliche Ausgabe im Kontext des Subagent bleibt, während nur eine Zusammenfassung zu Ihrem Hauptgespräch zurückkehrt.

174 

175### Verwalten Sie Agent-Team-Kosten

176 

177Agent-Teams verwenden ungefähr 7-mal mehr Token als Standard-Sitzungen, wenn Teammates im Plan Mode laufen, da jeder Teammate sein eigenes Kontextfenster verwaltet und als separate Claude-Instanz läuft. Halten Sie Team-Aufgaben klein und in sich geschlossen, um die Token-Nutzung pro Teammate zu begrenzen. Siehe [Agent-Teams](/de/agent-teams) für Details.

178 

179### Schreiben Sie spezifische Prompts

180 

181Vage Anfragen wie „Verbessern Sie diese Codebasis" lösen breites Scannen aus. Spezifische Anfragen wie „Fügen Sie Eingabevalidierung zur Login-Funktion in auth.ts hinzu" ermöglichen es Claude, effizient mit minimalen Dateileser zu arbeiten.

182 

183### Arbeiten Sie effizient an komplexen Aufgaben

184 

185Für längere oder komplexere Arbeiten helfen diese Gewohnheiten, verschwendete Token durch das Gehen des falschen Weges zu vermeiden:

186 

187* **Verwenden Sie Plan Mode für komplexe Aufgaben**: Drücken Sie Shift+Tab, um [Plan Mode](/de/common-workflows#use-plan-mode-for-safe-code-analysis) vor der Implementierung zu betreten. Claude erkundet die Codebasis und schlägt einen Ansatz zur Genehmigung vor, was teure Überarbeitungen verhindert, wenn die anfängliche Richtung falsch ist.

188* **Korrigieren Sie den Kurs früh**: Wenn Claude in die falsche Richtung geht, drücken Sie Escape, um sofort zu stoppen. Verwenden Sie `/rewind` oder doppeltippen Sie Escape, um das Gespräch und den Code zu einem vorherigen Checkpoint wiederherzustellen.

189* **Geben Sie Verifizierungsziele an**: Fügen Sie Testfälle ein, fügen Sie Screenshots ein oder definieren Sie erwartete Ausgabe in Ihrem Prompt. Wenn Claude seine eigene Arbeit verifizieren kann, erkennt es Probleme, bevor Sie Korrektionen anfordern müssen.

190* **Testen Sie schrittweise**: Schreiben Sie eine Datei, testen Sie sie, dann fahren Sie fort. Dies erkennt Probleme früh, wenn sie billig zu beheben sind.

191 

192## Hintergrund-Token-Nutzung

193 

194Claude Code verwendet Token für einige Hintergrund-Funktionalität, auch wenn untätig:

195 

196* **Gesprächszusammenfassung**: Hintergrund-Jobs, die vorherige Gespräche für die `claude --resume`-Funktion zusammenfassen

197* **Befehlsverarbeitung**: Einige Befehle wie `/usage` können Anfragen generieren, um den Status zu überprüfen

198 

199Diese Hintergrund-Prozesse verbrauchen eine kleine Menge Token (typischerweise unter 0,04 USD pro Sitzung), auch ohne aktive Interaktion.

200 

201## Verstehen Sie Änderungen im Claude Code-Verhalten

202 

203Claude Code erhält regelmäßig Updates, die ändern können, wie Funktionen funktionieren, einschließlich Kostenberichterstattung. Führen Sie `claude --version` aus, um Ihre aktuelle Version zu überprüfen. Für spezifische Abrechnungsfragen kontaktieren Sie den Anthropic-Support über Ihr [Console-Konto](https://platform.claude.com/login).

data-usage.md +124 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Datennutzung

6 

7> Erfahren Sie mehr über die Datennutzungsrichtlinien von Anthropic für Claude

8 

9## Datenrichtlinien

10 

11### Datentrainingsrichtlinie

12 

13**Verbrauchernutzer (Free-, Pro- und Max-Pläne)**:

14Wir geben Ihnen die Möglichkeit, Ihre Daten zur Verbesserung zukünftiger Claude-Modelle zu nutzen. Wir trainieren neue Modelle mit Daten aus Free-, Pro- und Max-Konten, wenn diese Einstellung aktiviert ist (auch wenn Sie Claude Code aus diesen Konten verwenden).

15 

16**Kommerzielle Nutzer**: (Team- und Enterprise-Pläne, API, Plattformen von Drittanbietern und Claude Gov) behalten bestehende Richtlinien bei: Anthropic trainiert keine generativen Modelle mit Code oder Eingabeaufforderungen, die unter kommerziellen Bedingungen an Claude Code gesendet werden, es sei denn, der Kunde hat sich dafür entschieden, seine Daten für die Modellverbesserung bereitzustellen (zum Beispiel das [Developer Partner Program](https://support.claude.com/en/articles/11174108-about-the-development-partner-program)).

17 

18### Development Partner Program

19 

20Wenn Sie sich explizit dafür entscheiden, uns Materialien zum Trainieren bereitzustellen, z. B. über das [Development Partner Program](https://support.claude.com/en/articles/11174108-about-the-development-partner-program), können wir diese Materialien zum Trainieren unserer Modelle verwenden. Ein Organisationsadministrator kann sich explizit für das Development Partner Program für seine Organisation anmelden. Beachten Sie, dass dieses Programm nur für die Anthropic-API von Erstanbietern verfügbar ist und nicht für Bedrock- oder Vertex-Nutzer.

21 

22### Feedback mit dem `/feedback`-Befehl

23 

24Wenn Sie uns Feedback zu Claude Code mit dem `/feedback`-Befehl senden, können wir Ihr Feedback zur Verbesserung unserer Produkte und Dienstleistungen nutzen. Transkripte, die über `/feedback` freigegeben werden, werden 5 Jahre lang aufbewahrt.

25 

26### Sitzungsqualitätsumfragen

27 

28Wenn Sie in Claude Code die Eingabeaufforderung „Wie macht Claude das in dieser Sitzung?" sehen, wird bei der Beantwortung dieser Umfrage (einschließlich der Auswahl von „Verwerfen") nur Ihre Bewertung aufgezeichnet. Wir erfassen oder speichern keine Gesprächstranskripte, Eingaben, Ausgaben oder andere Sitzungsdaten als Teil der Bewertungsaufforderung selbst. Im Gegensatz zu Daumen-hoch/runter-Feedback oder `/feedback`-Berichten ist diese Sitzungsqualitätsumfrage eine einfache Produktzufriedenheitsmetrik.

29 

30Nach der Bewertungsaufforderung sehen Sie möglicherweise eine separate Folgefrage: „Kann Anthropic Ihr Sitzungstranskript ansehen, um uns bei der Verbesserung von Claude Code zu helfen?". Dies ist ein optionaler zweiter Schritt, der sich von der Bewertung unterscheidet:

31 

32* **Ja**: lädt Ihr Gesprächstranskript, alle Subagenten-Transkripte und die Raw-Sitzungsprotokoll-Datei von der Festplatte zu Anthropic hoch. Bekannte API-Schlüssel- und Token-Muster werden vor dem Hochladen redigiert. Quellcode, Dateiinhalte und andere Gesprächsinhalte werden unverändert hochgeladen. Freigegebene Transkripte werden bis zu 6 Monate lang aufbewahrt.

33* **Nein**: lehnt ab, ohne etwas zu senden

34* **Nicht erneut fragen**: lehnt ab und verhindert, dass diese Folgefrage in zukünftigen Sitzungen angezeigt wird

35 

36Nichts wird hochgeladen, es sei denn, Sie wählen explizit **Ja**. Organisationen mit [Zero Data Retention](/de/zero-data-retention) oder bei denen Produktfeedback durch Organisationsrichtlinie deaktiviert ist, sehen diese Folgefrage nie. Ihre Antworten auf diese Umfrage, einschließlich Sitzungstranskripte, die nach der Bewertungsaufforderung eingereicht werden, beeinflussen nicht Ihre Datentrainingseinstellungen und können nicht zum Trainieren unserer KI-Modelle verwendet werden.

37 

38Um diese Umfragen zu deaktivieren, setzen Sie `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1`. Die Umfrage wird auch deaktiviert, wenn `DISABLE_TELEMETRY` oder `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` gesetzt ist. Um die Häufigkeit zu steuern, anstatt zu deaktivieren, setzen Sie [`feedbackSurveyRate`](/de/settings#available-settings) in Ihrer Einstellungsdatei auf eine Wahrscheinlichkeit zwischen `0` und `1`.

39 

40### Datenspeicherung

41 

42Anthropic speichert Claude Code-Daten basierend auf Ihrem Kontotyp und Ihren Einstellungen.

43 

44**Verbrauchernutzer (Free-, Pro- und Max-Pläne)**:

45 

46* Nutzer, die die Datennutzung für die Modellverbesserung zulassen: 5-jährige Aufbewahrungsfrist zur Unterstützung der Modellentwicklung und Sicherheitsverbesserungen

47* Nutzer, die die Datennutzung für die Modellverbesserung nicht zulassen: 30-tägige Aufbewahrungsfrist

48* Datenschutzeinstellungen können jederzeit unter [claude.ai/settings/data-privacy-controls](https://claude.ai/settings/data-privacy-controls) geändert werden.

49 

50**Kommerzielle Nutzer (Team, Enterprise und API)**:

51 

52* Standard: 30-tägige Aufbewahrungsfrist

53* [Zero Data Retention](/de/zero-data-retention): verfügbar für Claude Code auf Claude for Enterprise. ZDR wird auf Organisationsbasis aktiviert; jede neue Organisation muss ZDR separat von Ihrem Account-Team aktivieren lassen

54* Lokales Caching: Claude Code-Clients speichern Sitzungstranskripte lokal im Klartext unter `~/.claude/projects/` für standardmäßig 30 Tage, um die Sitzungswiederaufnahme zu ermöglichen. Passen Sie den Zeitraum mit `cleanupPeriodDays` an. Siehe [Anwendungsdaten](/de/claude-directory#application-data) für das, was gespeichert wird und wie man es löscht.

55 

56Sie können einzelne Claude Code-Websitzungen jederzeit löschen. Das Löschen einer Sitzung entfernt die Ereignisdaten der Sitzung dauerhaft. Anweisungen zum Löschen von Sitzungen finden Sie unter [Sitzungen löschen](/de/claude-code-on-the-web#delete-sessions).

57 

58Erfahren Sie mehr über Datenspeicherungspraktiken in unserem [Privacy Center](https://privacy.anthropic.com/).

59 

60Vollständige Details finden Sie in unseren [Commercial Terms of Service](https://www.anthropic.com/legal/commercial-terms) (für Team-, Enterprise- und API-Nutzer) oder [Consumer Terms](https://www.anthropic.com/legal/consumer-terms) (für Free-, Pro- und Max-Nutzer) und [Privacy Policy](https://www.anthropic.com/legal/privacy).

61 

62## Datenzugriff

63 

64Für alle Nutzer von Erstanbietern können Sie mehr über die protokollierten Daten für [lokales Claude Code](#local-claude-code-data-flow-and-dependencies) und [Remote Claude Code](#cloud-execution-data-flow-and-dependencies) erfahren. [Remote Control](/de/remote-control)-Sitzungen folgen dem lokalen Datenfluss, da die gesamte Ausführung auf Ihrem Computer stattfindet. Beachten Sie, dass Claude bei Remote Claude Code auf das Repository zugreift, in dem Sie Ihre Claude Code-Sitzung starten. Claude greift nicht auf Repositories zu, die Sie verbunden haben, aber in denen Sie keine Sitzung gestartet haben.

65 

66## Local Claude Code: Datenfluss und Abhängigkeiten

67 

68Das folgende Diagramm zeigt, wie Claude Code während der Installation und des normalen Betriebs eine Verbindung zu externen Diensten herstellt. Durchgehende Linien zeigen erforderliche Verbindungen an, während gestrichelte Linien optionale oder vom Benutzer initiierte Datenflüsse darstellen.

69 

70<img src="https://mintcdn.com/claude-code/YcBW2H7CArGcduPb/images/claude-code-data-flow.svg?fit=max&auto=format&n=YcBW2H7CArGcduPb&q=85&s=b600a89f84fc86f9ff7be00a466c0635" alt="Diagramm, das die externen Verbindungen von Claude Code zeigt: Installation/Update verbindet sich mit dem Verteilungsserver, und Benutzeranfragen verbinden sich mit Anthropic-Diensten, einschließlich Console-Authentifizierung, öffentlicher API und optional Statsig, Sentry und Bug-Berichterstattung" width="720" height="520" data-path="images/claude-code-data-flow.svg" />

71 

72Claude Code wird lokal ausgeführt. Um mit dem LLM zu interagieren, sendet Claude Code Daten über das Netzwerk. Diese Daten umfassen alle Benutzereingabeaufforderungen und Modellausgaben, verschlüsselt während der Übertragung über TLS 1.2+. Claude Code ist mit den meisten gängigen VPNs und LLM-Proxys kompatibel.

73 

74Die Verschlüsselung im Ruhezustand hängt von Ihrem Modelldienstanbieter ab:

75 

76| Anbieter | Verschlüsselung im Ruhezustand |

77| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |

78| Anthropic API | Verschlüsselung auf Infrastrukturebene (AES-256). Aktivieren Sie [Zero Data Retention](/de/zero-data-retention) für keine serverseitige Persistierung. |

79| Amazon Bedrock | AES-256 mit von AWS verwalteten Schlüsseln. Von Kunden verwaltete Schlüssel verfügbar über AWS KMS. |

80| Google Cloud Vertex AI | Von Google verwaltete Verschlüsselungsschlüssel. CMEK verfügbar. |

81| Microsoft Foundry | Anfragen werden an die Anthropic-Infrastruktur mit AES-256-Festplattenverschlüsselung weitergeleitet. |

82 

83Claude Code basiert auf den APIs von Anthropic. Weitere Informationen zu den Sicherheitskontrollen unserer API, einschließlich unserer API-Protokollierungsverfahren, finden Sie in den Compliance-Artefakten im [Anthropic Trust Center](https://trust.anthropic.com).

84 

85### Cloud-Ausführung: Datenfluss und Abhängigkeiten

86 

87Bei Verwendung von [Claude Code on the web](/de/claude-code-on-the-web) werden Sitzungen in von Anthropic verwalteten virtuellen Maschinen statt lokal ausgeführt. In Cloud-Umgebungen:

88 

89* **Code- und Datenspeicherung:** Ihr Repository wird auf eine isolierte VM geklont. Code und Sitzungsdaten unterliegen den Aufbewahrungs- und Nutzungsrichtlinien für Ihren Kontotyp (siehe Abschnitt Datenspeicherung oben)

90* **Anmeldedaten:** Die GitHub-Authentifizierung wird über einen sicheren Proxy durchgeführt; Ihre GitHub-Anmeldedaten gelangen niemals in die Sandbox

91* **Netzwerkverkehr:** Der gesamte ausgehende Datenverkehr wird über einen Sicherheitsproxy für Audit-Protokollierung und Missbrauchsprävention geleitet

92* **Sitzungsdaten:** Eingabeaufforderungen, Codeänderungen und Ausgaben folgen den gleichen Datenrichtlinien wie die lokale Claude Code-Nutzung

93 

94Sicherheitsdetails zur Cloud-Ausführung finden Sie unter [Security](/de/security#cloud-execution-security).

95 

96## Telemetrie-Dienste

97 

98Claude Code verbindet sich von den Maschinen der Benutzer mit dem Statsig-Dienst, um operative Metriken wie Latenz, Zuverlässigkeit und Nutzungsmuster zu protokollieren. Diese Protokollierung umfasst keinen Code oder Dateipfade. Die Daten werden während der Übertragung mit TLS und im Ruhezustand mit 256-Bit-AES-Verschlüsselung verschlüsselt. Weitere Informationen finden Sie in der [Statsig-Sicherheitsdokumentation](https://www.statsig.com/trust/security). Um sich von der Statsig-Telemetrie abzumelden, setzen Sie die Umgebungsvariable `DISABLE_TELEMETRY`.

99 

100Claude Code verbindet sich von den Maschinen der Benutzer mit Sentry für operative Fehlerprotokollierung. Die Daten werden während der Übertragung mit TLS und im Ruhezustand mit 256-Bit-AES-Verschlüsselung verschlüsselt. Weitere Informationen finden Sie in der [Sentry-Sicherheitsdokumentation](https://sentry.io/security/). Um sich von der Fehlerprotokollierung abzumelden, setzen Sie die Umgebungsvariable `DISABLE_ERROR_REPORTING`.

101 

102Wenn Benutzer den `/feedback`-Befehl ausführen, wird eine Kopie ihres vollständigen Gesprächsverlaufs einschließlich Code an Anthropic gesendet. Die Daten werden während der Übertragung mit TLS verschlüsselt. Optional wird ein GitHub-Problem in dem öffentlichen Repository erstellt. Um sich abzumelden, setzen Sie die Umgebungsvariable `DISABLE_FEEDBACK_COMMAND` auf `1`.

103 

104## Standardverhalten nach API-Anbieter

105 

106Standardmäßig sind Fehlerberichterstattung, Telemetrie und Bug-Berichterstattung deaktiviert, wenn Sie Bedrock, Vertex oder Foundry verwenden. Sitzungsqualitätsumfragen und die WebFetch-Domänensicherheitsprüfung sind Ausnahmen und werden unabhängig vom Anbieter ausgeführt. Sie können sich auf einmal von all dem nicht wesentlichen Datenverkehr, einschließlich Umfragen, abmelden, indem Sie `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` setzen. Diese Variable beeinträchtigt die WebFetch-Prüfung nicht, die ihre eigene Abmeldeoption hat. Hier sind die vollständigen Standardverhalten:

107 

108| Dienst | Claude API | Vertex API | Bedrock API | Foundry API |

109| -------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |

110| **Statsig (Metriken)** | Standardmäßig aktiviert.<br />`DISABLE_TELEMETRY=1` zum Deaktivieren. | Standardmäßig deaktiviert.<br />`CLAUDE_CODE_USE_VERTEX` muss 1 sein. | Standardmäßig deaktiviert.<br />`CLAUDE_CODE_USE_BEDROCK` muss 1 sein. | Standardmäßig deaktiviert.<br />`CLAUDE_CODE_USE_FOUNDRY` muss 1 sein. |

111| **Sentry (Fehler)** | Standardmäßig aktiviert.<br />`DISABLE_ERROR_REPORTING=1` zum Deaktivieren. | Standardmäßig deaktiviert.<br />`CLAUDE_CODE_USE_VERTEX` muss 1 sein. | Standardmäßig deaktiviert.<br />`CLAUDE_CODE_USE_BEDROCK` muss 1 sein. | Standardmäßig deaktiviert.<br />`CLAUDE_CODE_USE_FOUNDRY` muss 1 sein. |

112| **Claude API (`/feedback`-Berichte)** | Standardmäßig aktiviert.<br />`DISABLE_FEEDBACK_COMMAND=1` zum Deaktivieren. | Standardmäßig deaktiviert.<br />`CLAUDE_CODE_USE_VERTEX` muss 1 sein. | Standardmäßig deaktiviert.<br />`CLAUDE_CODE_USE_BEDROCK` muss 1 sein. | Standardmäßig deaktiviert.<br />`CLAUDE_CODE_USE_FOUNDRY` muss 1 sein. |

113| **Sitzungsqualitätsumfragen** | Standardmäßig aktiviert.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` zum Deaktivieren. | Standardmäßig aktiviert.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` zum Deaktivieren. | Standardmäßig aktiviert.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` zum Deaktivieren. | Standardmäßig aktiviert.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` zum Deaktivieren. |

114| **WebFetch-Domänensicherheitsprüfung** | Standardmäßig aktiviert.<br />`skipWebFetchPreflight: true` in [Einstellungen](/de/settings) zum Deaktivieren. | Standardmäßig aktiviert.<br />`skipWebFetchPreflight: true` in [Einstellungen](/de/settings) zum Deaktivieren. | Standardmäßig aktiviert.<br />`skipWebFetchPreflight: true` in [Einstellungen](/de/settings) zum Deaktivieren. | Standardmäßig aktiviert.<br />`skipWebFetchPreflight: true` in [Einstellungen](/de/settings) zum Deaktivieren. |

115 

116Alle Umgebungsvariablen können in `settings.json` eingecheckt werden (siehe [Einstellungsreferenz](/de/settings)).

117 

118Ab v2.1.126 werden Statsig-Metriken standardmäßig aktiviert für Vertex, Bedrock und Foundry, wenn eine Host-Plattform `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` setzt, und folgen der Standard-Abmeldeoption `DISABLE_TELEMETRY`. Sentry-Fehlerberichterstattung und `/feedback`-Berichte bleiben standardmäßig auf diesen Anbietern deaktiviert.

119 

120### WebFetch-Domänensicherheitsprüfung

121 

122Bevor eine URL abgerufen wird, sendet das WebFetch-Tool den angeforderten Hostnamen an `api.anthropic.com`, um ihn gegen eine von Anthropic verwaltete Sicherheitsblockierungsliste zu überprüfen. Es wird nur der Hostname gesendet, nicht die vollständige URL, der Pfad oder der Seiteninhalt. Ergebnisse werden pro Hostname für fünf Minuten zwischengespeichert.

123 

124Diese Prüfung wird unabhängig davon ausgeführt, welchen Modellanbieter Sie verwenden, und wird nicht durch `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` beeinträchtigt. Wenn Ihr Netzwerk `api.anthropic.com` blockiert, schlagen WebFetch-Anfragen fehl, bis Sie entweder die Domäne auf die Whitelist setzen oder `skipWebFetchPreflight: true` in [Einstellungen](/de/settings) setzen. Das Deaktivieren der Prüfung bedeutet, dass WebFetch versucht, jede URL abzurufen, ohne die Blockierungsliste zu konsultieren. Kombinieren Sie dies daher mit [`WebFetch`-Berechtigungsregeln](/de/permissions#webfetch), wenn Sie einschränken müssen, auf welche Domänen Claude zugreifen kann.

debug-your-config.md +97 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Konfiguration debuggen

6 

7> Diagnostizieren Sie, warum CLAUDE.md, Einstellungen, Hooks, MCP-Server oder Skills nicht wirksam werden. Verwenden Sie /context, /doctor, /hooks und /mcp, um zu sehen, was tatsächlich geladen wurde.

8 

9Wenn Claude eine Anweisung ignoriert oder eine konfigurierte Funktion nicht angezeigt wird, liegt die Ursache normalerweise darin, dass die Datei nicht geladen wurde, sie von einem anderen Ort als erwartet geladen wurde oder eine andere Datei sie überschrieben hat. Diese Anleitung zeigt, wie Sie überprüfen, was Claude Code tatsächlich geladen hat, damit Sie eingrenzen können, welcher Fall zutrifft.

10 

11Für Installations-, Authentifizierungs- und Konnektivitätsprobleme siehe stattdessen [Troubleshooting](/de/troubleshoot-install).

12 

13## Sehen Sie, was in den Kontext geladen wurde

14 

15Der Befehl `/context` zeigt alles, was das Kontextfenster für die aktuelle Sitzung belegt, aufgeschlüsselt nach Kategorie: Systemaufforderung, Speicherdateien, Skills, MCP-Tools und Konversationsnachrichten. Führen Sie ihn zuerst aus, um zu bestätigen, ob Ihre `CLAUDE.md`, Regeln oder Skill-Beschreibungen überhaupt vorhanden sind.

16 

17Für Details zu einer bestimmten Kategorie folgen Sie mit dem dedizierten Befehl:

18 

19| Befehl | Zeigt |

20| :------------- | :---------------------------------------------------------------------------------- |

21| `/memory` | Welche `CLAUDE.md`- und Regeldateien geladen wurden, plus Auto-Memory-Einträge |

22| `/skills` | Verfügbare Skills aus Projekt-, Benutzer- und Plugin-Quellen |

23| `/agents` | Konfigurierte Subagenten und ihre Einstellungen |

24| `/hooks` | Aktive Hook-Konfigurationen |

25| `/mcp` | Verbundene MCP-Server und ihr Status |

26| `/permissions` | Aufgelöste Allow- und Deny-Regeln, die derzeit wirksam sind |

27| `/doctor` | Konfigurationsdiagnose: ungültige Schlüssel, Schemafehler, Installationsintegrität |

28| `/status` | Aktive Einstellungsquellen, einschließlich ob verwaltete Einstellungen wirksam sind |

29 

30Wenn eine Speicherdatei in `/memory` fehlt, überprüfen Sie ihren Speicherort anhand von [wie CLAUDE.md-Dateien geladen werden](/de/memory#how-claude-md-files-load). Unterverzeichnis-`CLAUDE.md`-Dateien werden bei Bedarf geladen, wenn Claude eine Datei in diesem Verzeichnis mit dem Read-Tool liest, nicht beim Sitzungsstart.

31 

32Wenn `/memory` bestätigt, dass die Datei geladen wurde, Claude aber immer noch einer bestimmten Anweisung nicht folgt, liegt das Problem wahrscheinlich darin, wie die Anweisung geschrieben ist, nicht darin, ob sie geladen wurde. CLAUDE.md funktioniert gut für die Art von Anleitung, die Sie einem neuen Teamkollegen geben würden, wie z. B. Projektkonventionen, Build-Befehle und wo Dateien hingehören.

33 

34Die Einhaltung sinkt, wenn eine Anweisung mehrdeutig genug ist, um mehrere Interpretationen zuzulassen, wenn zwei Dateien widersprüchliche Anweisungen geben, oder wenn die Datei so lang geworden ist, dass einzelne Regeln weniger Aufmerksamkeit erhalten. [Schreiben Sie effektive Anweisungen](/de/memory#write-effective-instructions) behandelt die Spezifität, Größe und Strukturmuster, die die Einhaltung hoch halten.

35 

36<Note>

37 CLAUDE.md und Berechtigungen lösen unterschiedliche Probleme. CLAUDE.md teilt Claude mit, wie Ihr Projekt funktioniert, damit es gute Entscheidungen trifft. [Berechtigungen](/de/permissions) und [Hooks](/de/hooks) erzwingen Grenzen unabhängig davon, was Claude entscheidet. Verwenden Sie CLAUDE.md für „wir machen es hier so". Verwenden Sie Berechtigungen oder Hooks für Sicherheitsgrenzen und alles, das niemals passieren darf, wenn Sie eine Garantie statt einer Anleitung benötigen.

38</Note>

39 

40## Überprüfen Sie aufgelöste Einstellungen

41 

42Einstellungen werden über verwaltete, Benutzer-, Projekt- und lokale Bereiche zusammengeführt. Verwaltete Einstellungen gewinnen immer, wenn sie vorhanden sind. Bei den übrigen überschreibt der nähere Bereich den breiteren in der Reihenfolge lokal, dann Projekt, dann Benutzer. Einige Einstellungen können auch durch Befehlszeilenflaggen oder [Umgebungsvariablen](/de/env-vars) festgelegt werden, die als eine weitere Überschreibungsebene fungieren. Wenn eine Einstellung nicht angewendet zu werden scheint, wird der von Ihnen festgelegte Wert normalerweise durch einen anderen Bereich oder eine Umgebungsvariable überschrieben.

43 

44Führen Sie `/doctor` aus, um Ihre Konfigurationsdateien zu validieren und ungültige Schlüssel oder Schemafehler zu identifizieren. Führen Sie `/status` aus, um zu sehen, welche Einstellungsquellen aktiv sind, einschließlich ob verwaltete Einstellungen wirksam sind. Um zu verstehen, welcher Bereich für einen bestimmten Schlüssel gewinnt, siehe [Wie Bereiche interagieren](/de/settings#how-scopes-interact).

45 

46## Überprüfen Sie MCP-Server

47 

48Führen Sie `/mcp` aus, um jeden konfigurierten Server, seinen Verbindungsstatus und ob Sie ihn für das aktuelle Projekt genehmigt haben, zu sehen. Ein Server kann korrekt definiert sein, aber aus einigen häufigen Gründen immer noch keine Tools bereitstellen:

49 

50* Projektbezogene Server in `.mcp.json` erfordern eine einmalige Genehmigung. Wenn die Aufforderung verworfen wurde, bleibt der Server deaktiviert, bis Sie ihn von `/mcp` aus genehmigen.

51* Ein Server, der nicht startet, wird in `/mcp` als fehlgeschlagen angezeigt. Relative Dateipfade in `command` oder `args` sind eine häufige Ursache, da sie gegen das Verzeichnis aufgelöst werden, von dem aus Sie Claude Code gestartet haben, nicht gegen den Speicherort von `.mcp.json`.

52* Ein Server, der als verbunden angezeigt wird, aber null Tools auflistet, hat erfolgreich gestartet, gibt aber keine Toolliste zurück. Wählen Sie **Reconnect** von `/mcp`. Wenn die Anzahl bei null bleibt, führen Sie `claude --debug mcp` aus, um die Stderr-Ausgabe des Servers zu sehen.

53 

54Für Konfigurationsspeicherorte und Bereichsregeln siehe [MCP](/de/mcp).

55 

56## Überprüfen Sie Hooks

57 

58Führen Sie `/hooks` aus, um jeden Hook aufzulisten, der für die aktuelle Sitzung registriert ist, gruppiert nach Ereignis. Wenn ein von Ihnen definierter Hook nicht angezeigt wird, wird er nicht gelesen: Hooks gehen unter den Schlüssel `"hooks"` in einer Einstellungsdatei, nicht in einer eigenständigen Datei.

59 

60Wenn der Hook angezeigt wird, aber nicht ausgelöst wird, ist der Matcher die übliche Ursache. Das Feld `matcher` ist eine einzelne Zeichenkette, die `|` verwendet, um mehrere Tool-Namen zu entsprechen, z. B. `"Edit|Write"`. Ein falsch geschriebener Tool-Name schlägt stillschweigend fehl, da der Matcher nie übereinstimmt. Ein Array-Wert ist ein Schemafehler: Claude Code zeigt einen Einstellungsfehler an, `/doctor` meldet den Validierungsfehler, und der Hook-Eintrag wird gelöscht, sodass er nicht in `/hooks` angezeigt wird.

61 

62Änderungen an `settings.json` werden in der laufenden Sitzung nach einer kurzen Dateistabilitätsverzögerung wirksam. Sie müssen nicht neu starten. Wenn `/hooks` einige Sekunden nach dem Speichern immer noch die alte Definition anzeigt, führen Sie `/hooks` erneut aus, um die Ansicht zu aktualisieren.

63 

64Wenn `/hooks` den Hook anzeigt, aber er wird immer noch nicht ausgelöst, besteht der nächste Schritt darin, die Hook-Auswertung live zu beobachten. Starten Sie eine Sitzung mit `claude --debug hooks` und lösen Sie den Tool-Aufruf aus. Das Debug-Protokoll zeichnet jedes Ereignis, welche Matcher überprüft wurden, und den Exit-Code und die Ausgabe des Hooks auf. Siehe [Debug Hooks](/de/hooks#debug-hooks) für das Protokollformat und [Hooks Troubleshooting](/de/hooks-guide#limitations-and-troubleshooting) für häufige Fehlermuster.

65 

66## Häufige Ursachen

67 

68Die meisten Konfigurationsüberraschungen lassen sich auf eine kleine Anzahl von Speicherort- und Syntaxregeln zurückführen. Überprüfen Sie diese, bevor Sie einen Fehler annehmen:

69 

70| Symptom | Ursache | Behebung |

71| :----------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

72| Hook wird nie ausgelöst | `matcher` ist ein JSON-Array statt einer Zeichenkette | Verwenden Sie eine einzelne Zeichenkette mit `\|`, um mehrere Tools zu entsprechen, z. B. `"Edit\|Write"`. Siehe [Matcher-Muster](/de/hooks#matcher-patterns). |

73| Hook wird nie ausgelöst | `matcher`-Wert ist Kleinbuchstaben, z. B. `"bash"` | Matching ist Groß-/Kleinschreibung-empfindlich. Tool-Namen werden großgeschrieben: `Bash`, `Edit`, `Write`, `Read`. |

74| Hook wird nie ausgelöst | Hooks befinden sich in einer eigenständigen `.claude/hooks.json`-Datei | Es gibt keine eigenständige Hooks-Datei. Definieren Sie Hooks unter dem Schlüssel `"hooks"` in `settings.json`. Siehe [Hook-Konfiguration](/de/hooks). |

75| Berechtigungen, Hooks oder global gesetzte Umgebungsvariablen werden ignoriert | Konfiguration wurde zu `~/.claude.json` hinzugefügt | `~/.claude.json` enthält App-Status und UI-Umschalter. `permissions`, `hooks` und `env` gehören zu `~/.claude/settings.json`. Dies sind zwei verschiedene Dateien. |

76| Ein `settings.json`-Wert scheint ignoriert zu werden | Derselbe Schlüssel ist in `settings.local.json` gesetzt | `settings.local.json` überschreibt `settings.json`, und beide überschreiben `~/.claude/settings.json`. Siehe [Einstellungspriorität](/de/settings#how-scopes-interact). |

77| Skill erscheint nicht in `/skills` | Skill-Datei befindet sich unter `.claude/skills/name.md` statt in einem Ordner | Verwenden Sie einen Ordner mit `SKILL.md` darin: `.claude/skills/name/SKILL.md`. |

78| Skill erscheint in `/skills`, aber Claude ruft ihn nie auf | Skill hat `disable-model-invocation: true` in seinem Frontmatter, oder seine Beschreibung stimmt nicht damit überein, wie Sie die Anfrage formulieren | Überprüfen Sie das Badge in `/skills`: Ein Label „user-only" bedeutet, dass Claude es nicht von selbst auslöst. Siehe [Skill-Aufruf](/de/skills). |

79| Anweisungen im Unterverzeichnis `CLAUDE.md` scheinen ignoriert zu werden | Unterverzeichnisdateien werden bei Bedarf geladen, nicht beim Sitzungsstart | Sie werden geladen, wenn Claude eine Datei in diesem Verzeichnis mit dem Read-Tool liest, nicht beim Start und nicht beim Schreiben oder Erstellen von Dateien dort. Siehe [wie CLAUDE.md-Dateien geladen werden](/de/memory#how-claude-md-files-load). |

80| Subagent ignoriert `CLAUDE.md`-Anweisungen | Subagenten erben nicht immer Projektgedächtnis | Setzen Sie kritische Regeln in den Agent-Dateitext, der zum Systemaufforderung des Subagenten wird. Siehe [Subagent-Konfiguration](/de/sub-agents). |

81| Cleanup-Logik wird am Sitzungsende nie ausgeführt | Kein `SessionEnd`-Hook konfiguriert | Fügen Sie einen `SessionEnd`-Hook in `settings.json` hinzu. Siehe die [Hook-Ereignisliste](/de/hooks#hook-events). |

82| MCP-Server in `.mcp.json` werden nie geladen | Datei befindet sich unter `.claude/` oder verwendet das Konfigurationsformat von Claude Desktop | Projekt-MCP-Konfiguration geht an die Repository-Root als `.mcp.json`, nicht in `.claude/`. Siehe [MCP-Konfiguration](/de/mcp). |

83| Projekt-MCP-Server hinzugefügt, aber erscheint nicht | Die einmalige Genehmigungsaufforderung wurde verworfen | Projektbezogene Server erfordern Genehmigung. Führen Sie `/mcp` aus, um den Status zu sehen und zu genehmigen. |

84| MCP-Server kann nicht von einigen Verzeichnissen aus gestartet werden | `command` oder `args` verwendet einen relativen Dateipfad | Verwenden Sie absolute Pfade für lokale Skripte. Ausführbare Dateien auf Ihrem `PATH` wie `npx` oder `uvx` funktionieren wie gewohnt. |

85| MCP-Server startet ohne erwartete Umgebungsvariablen | Variablen befinden sich in `settings.json` `env`, die nicht an MCP-Kindprozesse weitergegeben werden | Setzen Sie stattdessen pro-Server `env` in `.mcp.json`. |

86| `Bash(rm *)`-Deny-Regel blockiert nicht `/bin/rm` oder `find -delete` | Präfix-Regeln entsprechen der wörtlichen Befehlszeichenkette, nicht der zugrunde liegenden ausführbaren Datei | Fügen Sie explizite Muster für jede Variante hinzu, oder verwenden Sie einen [PreToolUse-Hook](/de/hooks-guide) oder die [Sandbox](/de/sandboxing) für eine harte Garantie. |

87 

88## Verwandte Ressourcen

89 

90Für vollständige Referenzen zu jeder Konfigurationsoberfläche siehe die dedizierte Seite:

91 

92* **[`.claude`-Verzeichnisreferenz](/de/claude-directory)**: jeder Konfigurationsdateispeicherort und wer ihn liest

93* **[Einstellungen](/de/settings)**: Prioritätsreihenfolge und die vollständige Schlüsselliste

94* **[Hooks-Referenz](/de/hooks)**: Ereignisnamen, Payloads und `--debug hooks`-Ausgabeformat

95* **[MCP](/de/mcp)**: Server-Konfiguration, Genehmigung und `/mcp`-Ausgabe

96* **[Troubleshooting bei Installation und Anmeldung](/de/troubleshoot-install)**: `command not found`, PATH und Authentifizierungsprobleme

97* **[Troubleshooting](/de/troubleshooting)**: Leistung, Hängen und Suchprobleme

desktop.md +761 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code Desktop verwenden

6 

7> Nutzen Sie Claude Code Desktop optimal: parallele Sitzungen mit Git-Isolation, Drag-and-Drop-Pane-Layout, integriertes Terminal und Datei-Editor, Seitenchats, Computernutzung, Dispatch-Sitzungen von Ihrem Telefon, visuelle Diff-Überprüfung, App-Vorschau, PR-Überwachung, Konnektoren und Unternehmenskonfiguration.

8 

9Die Claude Desktop-App hat drei Registerkarten: **Chat** für Gespräche, **Cowork** für [Dispatch und längere agentengestützte Arbeiten](https://claude.com/product/cowork) und **Code** für Softwareentwicklung. Diese Seite ist die Referenz für die Registerkarte „Code".

10 

11<CardGroup cols={2}>

12 <Card title="Download for macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">

13 Universal build for Intel and Apple Silicon

14 </Card>

15 

16 <Card title="Download for Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">

17 For x64 processors

18 </Card>

19</CardGroup>

20 

21For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). The desktop app is not available on Linux; use the [CLI](/en/quickstart) instead.

22 

23Nach der Installation starten Sie Claude, melden sich an und klicken auf die Registerkarte **Code**. Beim ersten Öffnen unter Windows benötigen Sie [Git für Windows](https://git-scm.com/downloads/win) installiert; starten Sie die App nach der Installation neu. Eine Anleitung für Ihre erste Sitzung finden Sie im [Leitfaden „Erste Schritte"](/de/desktop-quickstart).

24 

25In der Registerkarte „Code" ist jedes Gespräch eine **Sitzung**: Es hat seinen eigenen Chat-Verlauf, Projektordner und Code-Änderungen, unabhängig von jeder anderen Sitzung. Die Seitenleiste listet Ihre Sitzungen auf und ermöglicht es Ihnen, mehrere parallel auszuführen. Innerhalb einer Sitzung können Sie:

26 

27* [Diffs überprüfen und kommentieren](#review-changes-with-diff-view), dann [den resultierenden PR durch CI überwachen](#monitor-pull-request-status)

28* [Ihre laufende App](#preview-your-app) in einem eingebetteten Browser in der Vorschau anzeigen, während Claude seine eigenen Änderungen überprüft

29* [Panes anordnen](#arrange-your-workspace) für Chat, Diff, Vorschau, Terminal und Datei-Editor nebeneinander

30* Eine [Seitenfrage](#ask-a-side-question-without-derailing-the-session) stellen, die den Kontext der Sitzung nutzt, ohne sie zu beeinträchtigen

31* [Externe Tools verbinden](#connect-external-tools) wie GitHub, Slack und Linear

32* Claude [Apps öffnen und Ihren Bildschirm steuern lassen](#let-claude-use-your-computer)

33* Auf Ihrem Computer, in der [Cloud](#run-long-running-tasks-remotely) oder über [SSH](#ssh-sessions) ausführen

34 

35Für [geplante wiederkehrende Arbeiten](/de/desktop-scheduled-tasks), [Tastaturkürzel](#keyboard-shortcuts) oder [Aufgaben von Ihrem Telefon senden](#sessions-from-dispatch) siehe die verlinkten Seiten und Abschnitte. Wenn Sie bereits die Terminal-basierte CLI verwenden, siehe den [CLI-Vergleich](#coming-from-the-cli) für das, was übertragen wird.

36 

37## Sitzung starten

38 

39Bevor Sie Ihre erste Nachricht senden, konfigurieren Sie vier Dinge im Eingabebereich:

40 

41* **Umgebung**: Wählen Sie, wo Claude ausgeführt wird. Wählen Sie **Lokal** für Ihren Computer, **Remote** für von Anthropic gehostete Cloud-Sitzungen oder eine [**SSH-Verbindung**](#ssh-sessions) für einen von Ihnen verwalteten Remote-Computer. Siehe [Umgebungskonfiguration](#environment-configuration).

42* **Projektordner**: Wählen Sie den Ordner oder das Repository aus, in dem Claude arbeitet. Für Remote-Sitzungen können Sie [mehrere Repositories](#run-long-running-tasks-remotely) hinzufügen.

43* **Modell**: Wählen Sie ein [Modell](/de/model-config#available-models) aus dem Dropdown neben der Schaltfläche „Senden". Sie können dies während der Sitzung ändern.

44* **Berechtigungsmodus**: Wählen Sie, wie viel Autonomie Claude aus dem [Moduswahlschalter](#choose-a-permission-mode) hat. Sie können dies während der Sitzung ändern.

45 

46Geben Sie Ihre Aufgabe ein und drücken Sie **Eingabe**, um zu starten. Jede Sitzung verfolgt ihren eigenen Kontext und Änderungen unabhängig.

47 

48## Arbeiten mit Code

49 

50Geben Sie Claude den richtigen Kontext, kontrollieren Sie, wie viel es eigenständig tut, und überprüfen Sie, was es geändert hat.

51 

52### Verwenden Sie das Eingabefeld

53 

54Geben Sie ein, was Claude tun soll, und drücken Sie **Eingabe**, um zu senden. Claude liest Ihre Projektdateien, nimmt Änderungen vor und führt Befehle basierend auf Ihrem [Berechtigungsmodus](#choose-a-permission-mode) aus. Sie können Claude jederzeit unterbrechen: Klicken Sie auf die Stoppschaltfläche oder geben Sie Ihre Korrektur ein und drücken Sie **Eingabe**. Claude stoppt, was es tut, und passt sich basierend auf Ihrer Eingabe an.

55 

56Die Schaltfläche **+** neben dem Eingabefeld gibt Ihnen Zugriff auf Dateianhänge, [Skills](#use-skills), [Konnektoren](#connect-external-tools) und [Plugins](#install-plugins).

57 

58### Fügen Sie Dateien und Kontext zu Eingaben hinzu

59 

60Das Eingabefeld unterstützt zwei Möglichkeiten, um externen Kontext einzubinden:

61 

62* **@mention-Dateien**: Geben Sie `@` gefolgt von einem Dateinamen ein, um eine Datei zum Gesprächskontext hinzuzufügen. Claude kann diese Datei dann lesen und referenzieren. @mention ist nicht in Remote-Sitzungen verfügbar.

63* **Dateien anhängen**: Hängen Sie Bilder, PDFs und andere Dateien an Ihre Eingabe an, indem Sie die Schaltfläche „Anhängen" verwenden, oder ziehen Sie Dateien direkt in die Eingabe. Dies ist nützlich zum Teilen von Screenshots von Fehlern, Design-Mockups oder Referenzdokumenten.

64 

65### Wählen Sie einen Berechtigungsmodus

66 

67Berechtigungsmodi kontrollieren, wie viel Autonomie Claude während einer Sitzung hat: ob es vor dem Bearbeiten von Dateien, dem Ausführen von Befehlen oder beidem fragt. Sie können Modi jederzeit mit dem Moduswahlschalter neben der Schaltfläche „Senden" wechseln. Beginnen Sie mit „Berechtigungen erfragen", um genau zu sehen, was Claude tut, und wechseln Sie dann zu „Bearbeitungen automatisch akzeptieren" oder „Plan Mode", wenn Sie sich wohler fühlen.

68 

69| Modus | Einstellungsschlüssel | Verhalten |

70| ----------------------------------------- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

71| **Berechtigungen erfragen** | `default` | Claude fragt vor dem Bearbeiten von Dateien oder dem Ausführen von Befehlen. Sie sehen einen Diff und können jede Änderung akzeptieren oder ablehnen. Empfohlen für neue Benutzer. |

72| **Bearbeitungen automatisch akzeptieren** | `acceptEdits` | Claude akzeptiert Dateibearbeitungen automatisch und häufige Dateisystem-Befehle wie `mkdir`, `touch` und `mv`, fragt aber immer noch vor dem Ausführen anderer Terminal-Befehle. Verwenden Sie dies, wenn Sie Dateiänderungen vertrauen und schnellere Iterationen wünschen. |

73| **Plan Mode** | `plan` | Claude liest Dateien und führt Befehle aus, um zu erkunden, schlägt dann einen Plan vor, ohne Ihren Quellcode zu bearbeiten. Gut für komplexe Aufgaben, bei denen Sie den Ansatz zuerst überprüfen möchten. |

74| **Auto** | `auto` | Claude führt alle Aktionen mit Hintergrund-Sicherheitsprüfungen aus, die die Ausrichtung mit Ihrer Anfrage überprüfen. Reduziert Berechtigungsaufforderungen bei Beibehaltung der Überwachung. Aktivieren Sie in Ihren Einstellungen → Claude Code. Siehe [Verfügbarkeitsanforderungen](#auto-mode-availability) unten. |

75| **Berechtigungen umgehen** | `bypassPermissions` | Claude läuft ohne Berechtigungsaufforderungen, äquivalent zu `--dangerously-skip-permissions` in der CLI. Aktivieren Sie dies in Ihren Einstellungen → Claude Code unter „Bypass-Berechtigungsmodus zulassen". Verwenden Sie dies nur in sandboxierten Containern oder VMs. Enterprise-Administratoren können diese Option deaktivieren. |

76 

77Der Berechtigungsmodus `dontAsk` ist nur in der [CLI](/de/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) verfügbar.

78 

79<span id="auto-mode-availability" />

80 

81Auto Mode ist eine Forschungsvorschau, die auf Max-, Team-, Enterprise- und API-Plänen verfügbar ist. Es ist nicht auf Pro-Plänen oder bei Drittanbieter-Providern verfügbar. Auf Team-, Enterprise- und API-Plänen ist Claude Sonnet 4.6, Opus 4.6 oder Opus 4.7 erforderlich. Auf Max-Plänen ist Claude Opus 4.7 erforderlich.

82 

83<Tip title="Best Practice">

84 Beginnen Sie komplexe Aufgaben im Plan Mode, damit Claude einen Ansatz abbildet, bevor Änderungen vorgenommen werden. Sobald Sie den Plan genehmigen, wechseln Sie zu 'Bearbeitungen automatisch akzeptieren" oder „Berechtigungen erfragen", um ihn auszuführen. Siehe [Zuerst erkunden, dann planen, dann codieren](/de/best-practices#explore-first-then-plan-then-code) für mehr zu diesem Workflow.

85</Tip>

86 

87Remote-Sitzungen unterstützen „Bearbeitungen automatisch akzeptieren" und „Plan Mode". „Berechtigungen erfragen" ist nicht verfügbar, da Remote-Sitzungen Dateibearbeitungen standardmäßig automatisch akzeptieren, und „Berechtigungen umgehen" ist nicht verfügbar, da die Remote-Umgebung bereits sandboxed ist.

88 

89Enterprise-Administratoren können einschränken, welche Berechtigungsmodi verfügbar sind. Siehe [Unternehmenskonfiguration](#enterprise-configuration) für Details.

90 

91### Vorschau Ihrer App

92 

93Claude kann einen Dev-Server starten und einen eingebetteten Browser öffnen, um seine Änderungen zu überprüfen. Dies funktioniert sowohl für Frontend-Web-Apps als auch für Backend-Server: Claude kann API-Endpunkte testen, Server-Protokolle anzeigen und Probleme, die er findet, iterieren. In den meisten Fällen startet Claude den Server automatisch nach dem Bearbeiten von Projektdateien. Sie können Claude auch jederzeit bitten, eine Vorschau anzuzeigen. Standardmäßig [überprüft Claude automatisch](#auto-verify-changes) Änderungen nach jeder Bearbeitung.

94 

95Das Vorschau-Pane kann auch statische HTML-Dateien, PDFs, Bilder und Videos aus Ihrem Projekt öffnen. Klicken Sie auf einen HTML-, PDF-, Bild- oder Videopfad im Chat, um ihn in der Vorschau zu öffnen.

96 

97Aus dem Vorschau-Pane können Sie:

98 

99* Direkt im eingebetteten Browser mit Ihrer laufenden App interagieren

100* Beobachten, wie Claude seine eigenen Änderungen automatisch überprüft: Es macht Screenshots, inspiziert das DOM, klickt auf Elemente, füllt Formulare aus und behebt Probleme, die es findet

101* Server aus dem Dropdown **Vorschau** in der Sitzungs-Symbolleiste starten oder stoppen

102* Cookies und lokalen Speicher über Server-Neustarts hinweg beibehalten, indem Sie **Sitzungen beibehalten** im Dropdown auswählen, damit Sie sich während der Entwicklung nicht erneut anmelden müssen

103* Die Server-Konfiguration bearbeiten oder alle Server auf einmal stoppen

104 

105Claude erstellt die anfängliche Server-Konfiguration basierend auf Ihrem Projekt. Wenn Ihre App einen benutzerdefinierten Dev-Befehl verwendet, bearbeiten Sie `.claude/launch.json`, um Ihr Setup zu entsprechen. Siehe [Vorschau-Server konfigurieren](#configure-preview-servers) für die vollständige Referenz.

106 

107Um gespeicherte Sitzungsdaten zu löschen, schalten Sie **Vorschau-Sitzungen beibehalten** in Einstellungen → Claude Code aus. Um die Vorschau vollständig zu deaktivieren, schalten Sie **Vorschau** in Einstellungen → Claude Code aus.

108 

109### Überprüfen Sie Änderungen mit der Diff-Ansicht

110 

111Nachdem Claude Änderungen an Ihrem Code vorgenommen hat, können Sie mit der Diff-Ansicht Änderungen dateiweise überprüfen, bevor Sie einen Pull Request erstellen.

112 

113Wenn Claude Dateien ändert, wird ein Diff-Statistik-Indikator angezeigt, der die Anzahl der hinzugefügten und entfernten Zeilen anzeigt, z. B. `+12 -1`. Klicken Sie auf diesen Indikator, um den Diff-Viewer zu öffnen, der eine Dateiliste auf der linken Seite und die Änderungen für jede Datei auf der rechten Seite anzeigt.

114 

115Um Kommentare zu bestimmten Zeilen hinzuzufügen, klicken Sie auf eine beliebige Zeile im Diff, um ein Kommentarfeld zu öffnen. Geben Sie Ihr Feedback ein und drücken Sie **Eingabe**, um den Kommentar hinzuzufügen. Nach dem Hinzufügen von Kommentaren zu mehreren Zeilen senden Sie alle Kommentare auf einmal:

116 

117* **macOS**: drücken Sie **Cmd+Eingabe**

118* **Windows**: drücken Sie **Strg+Eingabe**

119 

120Claude liest Ihre Kommentare und nimmt die angeforderten Änderungen vor, die als neuer Diff angezeigt werden, den Sie überprüfen können.

121 

122### Überprüfen Sie Ihren Code

123 

124Klicken Sie in der Diff-Ansicht auf **Code überprüfen** in der oberen rechten Symbolleiste, um Claude zu bitten, die Änderungen vor dem Commit zu bewerten. Claude untersucht die aktuellen Diffs und hinterlässt Kommentare direkt in der Diff-Ansicht. Sie können auf jeden Kommentar antworten oder Claude bitten, zu überarbeiten.

125 

126Die Überprüfung konzentriert sich auf hochwertige Probleme: Kompilierungsfehler, definitive Logikfehler, Sicherheitslücken und offensichtliche Fehler. Sie kennzeichnet keine Stil-, Formatierungs-, bereits vorhandenen Probleme oder etwas, das ein Linter erfassen würde.

127 

128### Überwachen Sie den Pull-Request-Status

129 

130Nachdem Sie einen Pull Request öffnen, wird eine CI-Statusleiste in der Sitzung angezeigt. Claude Code verwendet die GitHub CLI, um Prüfergebnisse abzurufen und Fehler anzuzeigen.

131 

132* **Automatische Fehlerbehebung**: Wenn aktiviert, versucht Claude automatisch, fehlgeschlagene CI-Prüfungen zu beheben, indem die Fehlerausgabe gelesen und iteriert wird.

133* **Automatisches Merge**: Wenn aktiviert, führt Claude den PR zusammen, sobald alle Prüfungen bestanden sind. Die Merge-Methode ist Squash. Das automatische Merge muss [in Ihren GitHub-Repository-Einstellungen aktiviert sein](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository), damit dies funktioniert.

134 

135Verwenden Sie die Umschalter **Automatische Fehlerbehebung** und **Automatisches Merge** in der CI-Statusleiste, um eine der beiden Optionen zu aktivieren. Claude Code sendet auch eine Desktop-Benachrichtigung, wenn CI abgeschlossen ist. Um die Sitzung automatisch zu archivieren, sobald der PR zusammengeführt oder geschlossen wird, schalten Sie [Auto-Archivieren](#work-in-parallel-with-sessions) in Einstellungen → Claude Code ein.

136 

137<Note>

138 Die PR-Überwachung erfordert, dass die [GitHub CLI (`gh`)](https://cli.github.com/) auf Ihrem Computer installiert und authentifiziert ist. Wenn `gh` nicht installiert ist, fordert Desktop Sie auf, es beim ersten Versuch, einen PR zu erstellen, zu installieren.

139</Note>

140 

141## Anordnen Ihres Arbeitsbereichs

142 

143Die Code-Registerkarte ist um Panes aufgebaut, die Sie in jedem Layout anordnen können: Chat, Diff, Vorschau, Terminal, Datei, Plan, Aufgaben und Subagent. Ziehen Sie ein Pane an seiner Kopfzeile, um es zu verschieben, oder ziehen Sie eine Pane-Kante, um es zu vergrößern. Drücken Sie **Cmd+\\** auf macOS oder **Ctrl+\\** auf Windows, um das fokussierte Pane zu schließen. Öffnen Sie zusätzliche Panes aus dem Menü **Ansichten** in der Sitzungs-Symbolleiste.

144 

145<Note>

146 Das Pane-Layout, Terminal, Datei-Editor und Ansichtsmodi in diesem Abschnitt erfordern Claude Desktop v1.2581.0 oder später. Öffnen Sie **Claude → Nach Updates suchen** auf macOS oder **Hilfe → Nach Updates suchen** auf Windows, um zu aktualisieren.

147</Note>

148 

149### Führen Sie Befehle im Terminal aus

150 

151Das integrierte Terminal ermöglicht es Ihnen, Befehle neben Ihrer Sitzung auszuführen, ohne zu einer anderen App zu wechseln. Öffnen Sie es aus dem Menü **Ansichten** oder drücken Sie **Ctrl+\`** auf macOS oder Windows. Das Terminal öffnet sich im Arbeitsverzeichnis Ihrer Sitzung und teilt die gleiche Umgebung wie Claude, sodass Befehle wie `npm test` oder `git status` die gleichen Dateien sehen, die Claude bearbeitet. Das Terminal ist nur in lokalen Sitzungen verfügbar.

152 

153### Öffnen und bearbeiten Sie Dateien

154 

155Klicken Sie auf einen Dateipfad im Chat oder Diff-Viewer, um ihn im Datei-Pane zu öffnen. HTML-, PDF-, Bild- und Videopfade öffnen sich stattdessen im [Vorschau-Pane](#preview-your-app). Nehmen Sie Spot-Bearbeitungen vor und klicken Sie auf **Speichern**, um sie zurückzuschreiben. Wenn sich die Datei auf der Festplatte geändert hat, seit Sie sie geöffnet haben, warnt Sie das Pane und lässt Sie überschreiben oder verwerfen. Klicken Sie auf **Verwerfen**, um Ihre Bearbeitungen rückgängig zu machen, oder klicken Sie auf den Pfad in der Pane-Kopfzeile, um den absoluten Pfad zu kopieren.

156 

157Das Datei-Pane ist in lokalen und SSH-Sitzungen verfügbar. Für Remote-Sitzungen bitten Sie Claude, die Änderung vorzunehmen.

158 

159### Öffnen Sie Dateien in anderen Apps

160 

161Klicken Sie mit der rechten Maustaste auf einen Dateipfad im Chat, Diff-Viewer oder Datei-Pane, um ein Kontextmenü zu öffnen:

162 

163* **Als Kontext anhängen**: Fügen Sie die Datei zu Ihrer nächsten Eingabe hinzu

164* **Öffnen in**: Öffnen Sie die Datei in einem installierten Editor wie VS Code, Cursor oder Zed

165* **Im Finder anzeigen** auf macOS, **Im Explorer anzeigen** auf Windows: Öffnen Sie den enthaltenden Ordner

166* **Pfad kopieren**: Kopieren Sie den absoluten Pfad in Ihre Zwischenablage

167 

168### Wechseln Sie Ansichtsmodi

169 

170Ansichtsmodi kontrollieren, wie viel Detail im Chat-Transkript angezeigt wird. Wechseln Sie Modi aus dem Dropdown **Transkript-Ansicht** neben der Schaltfläche „Senden", oder drücken Sie **Ctrl+O** auf macOS oder Windows, um durch sie zu zyklisieren.

171 

172| Modus | Was es anzeigt |

173| ------------------- | -------------------------------------------------------------------------------------------- |

174| **Normal** | Tool-Aufrufe in Zusammenfassungen zusammengefasst, mit vollständigen Text-Antworten |

175| **Ausführlich** | Jeden Tool-Aufruf, jede Datei-Leseoperation und jeden Zwischenschritt, den Claude unternimmt |

176| **Zusammenfassung** | Nur Claudes endgültige Antworten und die Änderungen, die er vorgenommen hat |

177 

178Verwenden Sie „Ausführlich", wenn Sie debuggen, warum Claude eine bestimmte Aktion unternommen hat. Verwenden Sie „Zusammenfassung", wenn Sie mehrere Sitzungen ausführen und Ergebnisse schnell scannen möchten.

179 

180### Tastaturkürzel

181 

182Drücken Sie **Cmd+/** auf macOS oder **Ctrl+/** auf Windows, um alle im Code-Tab verfügbaren Kürzel zu sehen. Unter Windows verwenden Sie **Ctrl** anstelle von **Cmd** für die folgenden Kürzel. Sitzungs-Zyklisierung, Terminal-Umschalter und Ansichtsmodus-Umschalter verwenden **Ctrl** auf jeder Plattform.

183 

184| Kürzel | Aktion |

185| ------------------------------------- | --------------------------------------- |

186| `Cmd` `/` | Tastaturkürzel anzeigen |

187| `Cmd` `N` | Neue Sitzung |

188| `Cmd` `W` | Sitzung schließen |

189| `Ctrl` `Tab` / `Ctrl` `Shift` `Tab` | Nächste oder vorherige Sitzung |

190| `Cmd` `Shift` `]` / `Cmd` `Shift` `[` | Nächste oder vorherige Sitzung |

191| `Esc` | Claudes Antwort stoppen |

192| `Cmd` `Shift` `D` | Diff-Pane umschalten |

193| `Cmd` `Shift` `P` | Vorschau-Pane umschalten |

194| `Cmd` `Shift` `S` | Element in Vorschau auswählen |

195| `Ctrl` `` ` `` | Terminal-Pane umschalten |

196| `Cmd` `\` | Fokussiertes Pane schließen |

197| `Cmd` `;` | Seitenchat öffnen |

198| `Ctrl` `O` | Ansichtsmodi zyklisieren |

199| `Cmd` `Shift` `M` | Berechtigungsmodus-Menü öffnen |

200| `Cmd` `Shift` `I` | Modell-Menü öffnen |

201| `Cmd` `Shift` `E` | Aufwand-Menü öffnen |

202| `1`–`9` | Element in einem offenen Menü auswählen |

203 

204Diese Kürzel gelten nur für den Code-Tab. Die Terminal-basierten [Kürzel des interaktiven Modus](/de/interactive-mode#keyboard-shortcuts), wie `Shift+Tab` zum Zyklisieren von Modi, gelten nicht in Desktop.

205 

206### Überprüfen Sie die Nutzung

207 

208Klicken Sie auf den Nutzungsring neben dem Modell-Wahlschalter, um Ihre aktuelle Kontextfenster-Nutzung und Ihre Plan-Nutzung für den Zeitraum zu sehen. Die Kontext-Nutzung ist pro Sitzung; die Plan-Nutzung wird über alle Ihre Claude-Code-Oberflächen hinweg geteilt.

209 

210## Lassen Sie Claude Ihren Computer verwenden

211 

212Computernutzung ermöglicht es Claude, Ihre Apps zu öffnen, Ihren Bildschirm zu steuern und direkt auf Ihrem Computer zu arbeiten, wie Sie es tun würden. Bitten Sie Claude, eine native App im mobilen Simulator zu testen, mit einem Desktop-Tool zu interagieren, das keine CLI hat, oder etwas zu automatisieren, das nur über eine GUI funktioniert.

213 

214<Note>

215 Computernutzung ist eine Forschungsvorschau auf macOS und Windows, die einen Pro- oder Max-Plan erfordert. Sie ist nicht für Team- oder Enterprise-Pläne verfügbar. Die Claude Desktop-App muss ausgeführt werden.

216</Note>

217 

218Computernutzung ist standardmäßig deaktiviert. [Aktivieren Sie sie in Einstellungen](#enable-computer-use), bevor Claude Ihren Bildschirm steuern kann. Auf macOS müssen Sie auch Barrierefreiheits- und Bildschirmaufzeichnungsberechtigungen gewähren.

219 

220<Warning>

221 Im Gegensatz zum [sandboxierten Bash-Tool](/de/sandboxing) läuft Computernutzung auf Ihrem tatsächlichen Desktop mit Zugriff auf das, was Sie genehmigen. Claude überprüft jede Aktion und kennzeichnet potenzielle Prompt-Injection von Bildschirminhalten, aber die Vertrauensgrenze ist unterschiedlich. Siehe den [Sicherheitsleitfaden für Computernutzung](https://support.claude.com/en/articles/14128542) für Best Practices.

222</Warning>

223 

224### Wann Computernutzung anwendbar ist

225 

226Claude hat mehrere Möglichkeiten, mit einer App oder einem Dienst zu interagieren, und Computernutzung ist die breiteste und langsamste. Es versucht zuerst das präziseste Tool:

227 

228* Wenn Sie einen [Konnektor](#connect-external-tools) für einen Dienst haben, verwendet Claude den Konnektor.

229* Wenn die Aufgabe ein Shell-Befehl ist, verwendet Claude Bash.

230* Wenn die Aufgabe Browser-Arbeit ist und Sie [Claude in Chrome](/de/chrome) eingerichtet haben, verwendet Claude das.

231* Wenn keine dieser Optionen zutrifft, verwendet Claude Computernutzung.

232 

233Die [Pro-App-Zugriffsstufen](#app-permissions) verstärken dies: Browser sind auf Nur-Ansicht begrenzt, und Terminals und IDEs auf Nur-Klick, was Claude zum dedizierten Tool lenkt, auch wenn Computernutzung aktiv ist. Bildschirmsteuerung ist für Dinge reserviert, die nichts anderes erreichen kann, wie native Apps, Hardware-Steuerfelder, mobile Simulatoren oder proprietäre Tools ohne API.

234 

235### Aktivieren Sie Computernutzung

236 

237Computernutzung ist standardmäßig deaktiviert. Wenn Sie Claude bitten, etwas zu tun, das es benötigt, während es deaktiviert ist, teilt Claude Ihnen mit, dass es die Aufgabe tun könnte, wenn Sie Computernutzung in Einstellungen aktivieren.

238 

239<Steps>

240 <Step title="Aktualisieren Sie die Desktop-App">

241 Stellen Sie sicher, dass Sie die neueste Version von Claude Desktop haben. Laden Sie herunter oder aktualisieren Sie unter [claude.com/download](https://claude.com/download), und starten Sie die App neu.

242 </Step>

243 

244 <Step title="Schalten Sie den Umschalter ein">

245 Gehen Sie in der Desktop-App zu **Einstellungen > Allgemein** (unter **Desktop-App**). Suchen Sie den Umschalter **Computernutzung** und schalten Sie ihn ein. Unter Windows wird der Umschalter sofort wirksam und das Setup ist abgeschlossen. Auf macOS fahren Sie mit dem nächsten Schritt fort.

246 

247 Wenn Sie den Umschalter nicht sehen, bestätigen Sie, dass Sie macOS oder Windows mit einem Pro- oder Max-Plan verwenden, und aktualisieren und starten Sie die App neu.

248 </Step>

249 

250 <Step title="Gewähren Sie macOS-Berechtigungen">

251 Auf macOS müssen Sie zwei Systemberechtigungen gewähren, bevor der Umschalter wirksam wird:

252 

253 * **Barrierefreiheit**: ermöglicht Claude, zu klicken, zu tippen und zu scrollen

254 * **Bildschirmaufzeichnung**: ermöglicht Claude, zu sehen, was auf Ihrem Bildschirm ist

255 

256 Die Einstellungsseite zeigt den aktuellen Status jeder Berechtigung. Wenn eine verweigert wird, klicken Sie auf das Badge, um den relevanten Systemeinstellungsbereich zu öffnen.

257 </Step>

258</Steps>

259 

260### App-Berechtigungen

261 

262Wenn Claude eine App zum ersten Mal verwenden muss, wird eine Eingabeaufforderung in Ihrer Sitzung angezeigt. Klicken Sie auf **Für diese Sitzung zulassen** oder **Ablehnen**. Genehmigungen gelten für die aktuelle Sitzung oder 30 Minuten in [Dispatch-generierten Sitzungen](#sessions-from-dispatch).

263 

264Die Eingabeaufforderung zeigt auch, welche Kontrollebene Claude für diese App erhält. Diese Stufen sind nach App-Kategorie festgelegt und können nicht geändert werden:

265 

266| Stufe | Was Claude tun kann | Gilt für |

267| :--------------------- | :------------------------------------------------------------------------- | :-------------------------- |

268| Nur Ansicht | Die App in Screenshots sehen | Browser, Handelsplattformen |

269| Nur Klick | Klicken und scrollen, aber nicht tippen oder Tastenkombinationen verwenden | Terminals, IDEs |

270| Vollständige Kontrolle | Klicken, tippen, ziehen und Tastenkombinationen verwenden | Alles andere |

271 

272Apps mit großer Reichweite wie Terminals, Finder oder Datei-Explorer und Systemeinstellungen oder Einstellungen zeigen eine zusätzliche Warnung in der Eingabeaufforderung, damit Sie wissen, was das Genehmigen gewährt.

273 

274Sie können zwei Einstellungen in **Einstellungen > Allgemein** (unter **Desktop-App**) konfigurieren:

275 

276* **Abgelehnte Apps**: Fügen Sie Apps hier hinzu, um sie ohne Aufforderung abzulehnen. Claude kann eine abgelehnte App indirekt durch Aktionen in einer zulässigen App beeinflussen, kann aber nicht direkt mit der abgelehnen App interagieren.

277* **Apps anzeigen, wenn Claude fertig ist**: Während Claude arbeitet, werden Ihre anderen Fenster ausgeblendet, damit es nur mit der genehmigten App interagiert. Wenn Claude fertig ist, werden ausgeblendete Fenster wiederhergestellt, es sei denn, Sie deaktivieren diese Einstellung.

278 

279## Verwalten Sie Sitzungen

280 

281Jede Sitzung ist ein unabhängiges Gespräch mit eigenem Kontext und Änderungen. Sie können mehrere Sitzungen parallel ausführen, Arbeit in die Cloud senden oder Dispatch Sitzungen von Ihrem Telefon aus starten lassen.

282 

283### Arbeiten Sie parallel mit Sitzungen

284 

285Klicken Sie auf **+ Neue Sitzung** in der Seitenleiste, oder drücken Sie **Cmd+N** auf macOS oder **Ctrl+N** auf Windows, um an mehreren Aufgaben parallel zu arbeiten. Drücken Sie **Ctrl+Tab** und **Ctrl+Shift+Tab**, um durch Sitzungen in der Seitenleiste zu zyklisieren. Für Git-Repositories erhält jede Sitzung ihre eigene isolierte Kopie Ihres Projekts mit [Git Worktrees](/de/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees), sodass Änderungen in einer Sitzung andere Sitzungen nicht beeinflussen, bis Sie sie committen.

286 

287Worktrees werden standardmäßig in `<project-root>/.claude/worktrees/` gespeichert. Sie können dies in Einstellungen → Claude Code unter 'Worktree-Speicherort" in ein benutzerdefiniertes Verzeichnis ändern. Sie können auch ein Branch-Präfix festlegen, das jedem Worktree-Branch-Namen vorangestellt wird, was nützlich ist, um von Claude erstellte Branches organisiert zu halten. Um einen Worktree zu entfernen, wenn Sie fertig sind, fahren Sie mit der Maus über die Sitzung in der Seitenleiste und klicken Sie auf das Archiv-Symbol. Um Sitzungen automatisch zu archivieren, wenn ihr Pull Request zusammengeführt oder geschlossen wird, schalten Sie **Auto-Archivieren nach PR-Merge oder -Schließung** in Einstellungen → Claude Code ein. Auto-Archivieren gilt nur für lokale Sitzungen, die beendet wurden.

288 

289Um gitignorierte Dateien wie `.env` in neue Worktrees einzubeziehen, erstellen Sie eine [`.worktreeinclude`-Datei](/de/common-workflows#copy-gitignored-files-to-worktrees) in Ihrem Projektstammverzeichnis.

290 

291<Note>

292 Die Sitzungsisolation erfordert [Git](https://git-scm.com/downloads). Die meisten Macs enthalten Git standardmäßig. Führen Sie `git --version` im Terminal aus, um zu überprüfen. Unter Windows ist Git erforderlich, damit die Registerkarte „Code" funktioniert: [Laden Sie Git für Windows herunter](https://git-scm.com/downloads/win), installieren Sie es und starten Sie die App neu. Wenn Sie auf Git-Fehler stoßen, bitten Sie Claude im [Cowork-Tab](https://claude.com/product/cowork), Ihnen bei der Behebung Ihres Setups zu helfen.

293</Note>

294 

295Verwenden Sie die Steuerelemente oben in der Seitenleiste, um Sitzungen nach Status, Projekt oder Umgebung zu filtern, und um Sitzungen nach Projekt zu gruppieren. Um eine Sitzung umzubenennen, klicken Sie auf den Sitzungstitel in der Symbolleiste oben in der aktiven Sitzung. Um die Kontext-Nutzung zu überprüfen, siehe [Überprüfen Sie die Nutzung](#check-usage). Wenn der Kontext voll wird, fasst Claude das Gespräch automatisch zusammen und arbeitet weiter. Sie können auch `/compact` eingeben, um die Zusammenfassung früher auszulösen und Kontextraum freizugeben. Siehe [das Kontextfenster](/de/how-claude-code-works#the-context-window) für Details, wie die Komprimierung funktioniert.

296 

297### Fragen Sie eine Seitenfrage, ohne die Sitzung zu entgleisen

298 

299Ein Seitenchat ermöglicht es Ihnen, Claude eine Frage zu stellen, die den Kontext Ihrer Sitzung nutzt, aber nichts zum Hauptgespräch hinzufügt. Verwenden Sie ihn, wenn Sie ein Stück Code verstehen, eine Annahme überprüfen oder eine Idee erkunden möchten, ohne die Sitzung vom Kurs abzubringen.

300 

301Drücken Sie **Cmd+;** auf macOS oder **Ctrl+;** auf Windows, um einen Seitenchat zu öffnen, oder geben Sie `/btw` im Eingabefeld ein. Der Seitenchat kann alles im Hauptthread bis zu diesem Punkt lesen. Wenn Sie fertig sind, schließen Sie den Seitenchat und setzen Sie die Hauptsitzung dort fort, wo Sie aufgehört haben. Seitenchats sind in lokalen und SSH-Sitzungen verfügbar.

302 

303### Beobachten Sie Hintergrund-Aufgaben

304 

305Das Aufgaben-Pane zeigt die Hintergrundarbeit, die in der aktuellen Sitzung läuft: Subagents, Hintergrund-Shell-Befehle und Workflows. Öffnen Sie es aus dem Menü **Ansichten** oder ziehen Sie es in Ihr Layout.

306 

307Klicken Sie auf einen beliebigen Eintrag, um seine Ausgabe im Subagent-Pane zu sehen oder ihn zu stoppen. Um zu sehen, was andere Sitzungen tun, verwenden Sie die [Seitenleiste](#work-in-parallel-with-sessions).

308 

309### Führen Sie lange laufende Aufgaben remote aus

310 

311Für große Refaktorierungen, Test-Suites, Migrationen oder andere lange laufende Aufgaben wählen Sie **Remote** statt **Lokal**, wenn Sie eine Sitzung starten. Remote-Sitzungen laufen auf Anthropics Cloud-Infrastruktur und werden fortgesetzt, auch wenn Sie die App schließen oder Ihren Computer herunterfahren. Überprüfen Sie jederzeit den Fortschritt oder lenken Sie Claude in eine andere Richtung. Sie können Remote-Sitzungen auch von [claude.ai/code](https://claude.ai/code) oder der Claude iOS-App aus überwachen.

312 

313Remote-Sitzungen unterstützen auch mehrere Repositories. Nach Auswahl einer Cloud-Umgebung klicken Sie auf die Schaltfläche **+** neben dem Repo-Pill, um zusätzliche Repositories zur Sitzung hinzuzufügen. Jedes Repo erhält seinen eigenen Branch-Wahlschalter. Dies ist nützlich für Aufgaben, die mehrere Codebases umfassen, z. B. das Aktualisieren einer gemeinsamen Bibliothek und ihrer Consumer.

314 

315Siehe [Claude Code im Web](/de/claude-code-on-the-web) für mehr darüber, wie Remote-Sitzungen funktionieren.

316 

317### Fortsetzen auf einer anderen Oberfläche

318 

319Das Menü **Fortsetzen in**, das über das VS Code-Symbol unten rechts in der Sitzungs-Symbolleiste zugänglich ist, ermöglicht es Ihnen, Ihre Sitzung auf eine andere Oberfläche zu verschieben:

320 

321* **Claude Code im Web**: sendet Ihre lokale Sitzung, um remote weiter zu laufen. Desktop pusht Ihren Branch, generiert eine Zusammenfassung des Gesprächs und erstellt eine neue Remote-Sitzung mit dem vollständigen Kontext. Sie können dann wählen, die lokale Sitzung zu archivieren oder zu behalten. Dies erfordert einen sauberen Arbeitsbaum und ist nicht für SSH-Sitzungen verfügbar.

322* **Ihre IDE**: öffnet Ihr Projekt in einer unterstützten IDE im aktuellen Arbeitsverzeichnis.

323 

324### Sitzungen von Dispatch

325 

326[Dispatch](https://support.claude.com/en/articles/13947068) ist ein persistentes Gespräch mit Claude, das in der Registerkarte [Cowork](https://claude.com/product/cowork#dispatch-and-computer-use) lebt. Sie senden Dispatch eine Aufgabe, und es entscheidet, wie damit umzugehen ist.

327 

328Eine Aufgabe kann auf zwei Wegen als Code-Sitzung enden: Sie fragen direkt danach, z. B. „Öffnen Sie eine Claude Code-Sitzung und beheben Sie den Login-Fehler", oder Dispatch entscheidet, dass die Aufgabe Entwicklungsarbeit ist und startet eine von selbst. Aufgaben, die typischerweise zu Code führen, umfassen das Beheben von Fehlern, das Aktualisieren von Abhängigkeiten, das Ausführen von Tests oder das Öffnen von Pull Requests. Forschung, Dokumentbearbeitung und Tabellenkalkulationsarbeit bleiben in Cowork.

329 

330In jedem Fall wird die Code-Sitzung in der Seitenleiste der Registerkarte „Code" mit einem **Dispatch**-Badge angezeigt. Sie erhalten eine Push-Benachrichtigung auf Ihrem Telefon, wenn sie fertig ist oder Ihre Genehmigung benötigt.

331 

332Wenn Sie [Computernutzung](#let-claude-use-your-computer) aktiviert haben, können Dispatch-generierte Code-Sitzungen diese auch verwenden. App-Genehmigungen in diesen Sitzungen verfallen nach 30 Minuten und werden erneut angefordert, anstatt die gesamte Sitzung zu dauern wie bei regulären Code-Sitzungen.

333 

334Für Setup, Pairing und Dispatch-Einstellungen siehe den [Dispatch-Hilfeartikel](https://support.claude.com/en/articles/13947068). Dispatch erfordert einen Pro- oder Max-Plan und ist nicht für Team- oder Enterprise-Pläne verfügbar.

335 

336Dispatch ist eine von mehreren Möglichkeiten, mit Claude zu arbeiten, wenn Sie weg von Ihrem Terminal sind. Siehe [Plattformen und Integrationen](/de/platforms#work-when-you-are-away-from-your-terminal), um es mit Remote Control, Channels, Slack und geplanten Aufgaben zu vergleichen.

337 

338## Erweitern Sie Claude Code

339 

340Verbinden Sie externe Dienste, fügen Sie wiederverwendbare Workflows hinzu, passen Sie Claudes Verhalten an und konfigurieren Sie Vorschau-Server. Um Konnektoren, Skills und Plugins an einem Ort zu verwalten, klicken Sie auf **Anpassen** in der Seitenleiste.

341 

342### Verbinden Sie externe Tools

343 

344Für lokale und [SSH](#ssh-sessions)-Sitzungen klicken Sie auf die Schaltfläche **+** neben dem Eingabefeld und wählen Sie **Konnektoren**, um Integrationen wie Google Calendar, Slack, GitHub, Linear, Notion und mehr hinzuzufügen. Sie können Konnektoren vor oder während einer Sitzung hinzufügen. Die Schaltfläche **+** ist nicht in Remote-Sitzungen verfügbar, aber [Routinen](/de/routines) konfigurieren Konnektoren zum Zeitpunkt der Routine-Erstellung.

345 

346Um Konnektoren zu verwalten oder zu trennen, gehen Sie zu Einstellungen → Konnektoren in der Desktop-App oder wählen Sie **Konnektoren verwalten** aus dem Konnektoren-Menü im Eingabefeld.

347 

348Nach der Verbindung kann Claude Ihren Kalender lesen, Nachrichten senden, Probleme erstellen und direkt mit Ihren Tools interagieren. Sie können Claude fragen, welche Konnektoren in Ihrer Sitzung konfiguriert sind.

349 

350Konnektoren sind [MCP-Server](/de/mcp) mit einem grafischen Setup-Ablauf. Verwenden Sie sie für schnelle Integration mit unterstützten Diensten. Für Integrationen, die nicht in Konnektoren aufgelistet sind, fügen Sie MCP-Server manuell über [Einstellungsdateien](/de/mcp#installing-mcp-servers) hinzu. Sie können auch [benutzerdefinierte Konnektoren erstellen](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp).

351 

352### Verwenden Sie Skills

353 

354[Skills](/de/skills) erweitern, was Claude tun kann. Claude lädt sie automatisch, wenn relevant, oder Sie können eine direkt aufrufen: Geben Sie `/` im Eingabefeld ein oder klicken Sie auf die Schaltfläche **+** und wählen Sie **Slash-Befehle**, um zu sehen, was verfügbar ist. Dies umfasst [integrierte Befehle](/de/commands), Ihre [benutzerdefinierten Skills](/de/skills#create-your-first-skill), Projekt-Skills aus Ihrer Codebasis und Skills aus allen [installierten Plugins](/de/plugins). Wählen Sie einen aus und er wird im Eingabefeld hervorgehoben angezeigt. Geben Sie Ihre Aufgabe danach ein und senden Sie wie gewohnt.

355 

356### Installieren Sie Plugins

357 

358[Plugins](/de/plugins) sind wiederverwendbare Pakete, die Skills, Agents, hooks, MCP-Server und LSP-Konfigurationen zu Claude Code hinzufügen. Sie können Plugins aus der Desktop-App installieren, ohne das Terminal zu verwenden.

359 

360Für lokale und [SSH](#ssh-sessions)-Sitzungen klicken Sie auf die Schaltfläche **+** neben dem Eingabefeld und wählen Sie **Plugins**, um Ihre installierten Plugins und deren Skills zu sehen. Um ein Plugin hinzuzufügen, wählen Sie **Plugin hinzufügen** aus dem Untermenü, um den Plugin-Browser zu öffnen, der verfügbare Plugins aus Ihren konfigurierten [Marketplaces](/de/plugin-marketplaces) einschließlich des offiziellen Anthropic-Marketplace anzeigt. Wählen Sie **Plugins verwalten**, um Plugins zu aktivieren, zu deaktivieren oder zu deinstallieren.

361 

362Plugins können auf Ihr Benutzerkonto, ein bestimmtes Projekt oder nur lokal beschränkt sein. Wenn Ihre Organisation Plugins zentral verwaltet, sind diese Plugins in Desktop-Sitzungen auf die gleiche Weise verfügbar wie in der CLI. Plugins sind nicht für Remote-Sitzungen verfügbar. Für die vollständige Plugin-Referenz einschließlich der Erstellung eigener Plugins siehe [Plugins](/de/plugins).

363 

364### Konfigurieren Sie Vorschau-Server

365 

366Claude erkennt automatisch Ihr Dev-Server-Setup und speichert die Konfiguration in `.claude/launch.json` im Stammverzeichnis des Ordners, den Sie beim Starten der Sitzung ausgewählt haben. Die Vorschau verwendet diesen Ordner als Arbeitsverzeichnis. Wenn Sie also einen übergeordneten Ordner ausgewählt haben, werden Unterordner mit ihren eigenen Dev-Servern nicht automatisch erkannt. Um mit dem Server eines Unterordners zu arbeiten, starten Sie entweder eine Sitzung direkt in diesem Ordner oder fügen Sie eine Konfiguration manuell hinzu.

367 

368Um anzupassen, wie Ihr Server startet, z. B. um `yarn dev` statt `npm run dev` zu verwenden oder den Port zu ändern, bearbeiten Sie die Datei manuell oder klicken Sie auf **Konfiguration bearbeiten** im Dropdown „Vorschau", um sie in Ihrem Code-Editor zu öffnen. Die Datei unterstützt JSON mit Kommentaren.

369 

370```json theme={null}

371{

372 "version": "0.0.1",

373 "configurations": [

374 {

375 "name": "my-app",

376 "runtimeExecutable": "npm",

377 "runtimeArgs": ["run", "dev"],

378 "port": 3000

379 }

380 ]

381}

382```

383 

384Sie können mehrere Konfigurationen definieren, um verschiedene Server aus demselben Projekt auszuführen, z. B. ein Frontend und eine API. Siehe die [Beispiele](#examples) unten.

385 

386#### Automatische Überprüfung von Änderungen

387 

388Wenn `autoVerify` aktiviert ist, überprüft Claude automatisch Code-Änderungen nach dem Bearbeiten von Dateien. Es macht Screenshots, prüft auf Fehler und bestätigt, dass Änderungen funktionieren, bevor es seine Antwort abschließt.

389 

390Die automatische Überprüfung ist standardmäßig aktiviert. Deaktivieren Sie sie pro Projekt, indem Sie `"autoVerify": false` zu `.claude/launch.json` hinzufügen, oder schalten Sie sie aus dem Dropdown **Vorschau** um.

391 

392```json theme={null}

393{

394 "version": "0.0.1",

395 "autoVerify": false,

396 "configurations": [...]

397}

398```

399 

400Wenn deaktiviert, sind Vorschau-Tools immer noch verfügbar und Sie können Claude jederzeit bitten, zu überprüfen. Die automatische Überprüfung macht es automatisch nach jeder Bearbeitung.

401 

402#### Konfigurationsfelder

403 

404Jeder Eintrag im Array `configurations` akzeptiert die folgenden Felder:

405 

406| Feld | Typ | Beschreibung |

407| ------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

408| `name` | string | Ein eindeutiger Bezeichner für diesen Server |

409| `runtimeExecutable` | string | Der auszuführende Befehl, z. B. `npm`, `yarn` oder `node` |

410| `runtimeArgs` | string\[] | An `runtimeExecutable` übergebene Argumente, z. B. `["run", "dev"]` |

411| `port` | number | Der Port, auf dem Ihr Server lauscht. Standardmäßig 3000 |

412| `cwd` | string | Arbeitsverzeichnis relativ zu Ihrem Projektstammverzeichnis. Standardmäßig das Projektstammverzeichnis. Verwenden Sie `${workspaceFolder}`, um das Projektstammverzeichnis explizit zu referenzieren |

413| `env` | object | Zusätzliche Umgebungsvariablen als Schlüssel-Wert-Paare, z. B. `{ "NODE_ENV": "development" }`. Legen Sie hier keine Geheimnisse ab, da diese Datei in Ihr Repo committed wird. Um Geheimnisse an Ihren Dev-Server zu übergeben, legen Sie sie stattdessen im [lokalen Umgebungs-Editor](#local-sessions) fest. |

414| `autoPort` | boolean | Wie Port-Konflikte behandelt werden. Siehe unten |

415| `program` | string | Ein mit `node` auszuführendes Skript. Siehe [wann `program` vs `runtimeExecutable` verwendet werden](#when-to-use-program-vs-runtimeexecutable) |

416| `args` | string\[] | An `program` übergebene Argumente. Wird nur verwendet, wenn `program` gesetzt ist |

417 

418##### Wann `program` vs `runtimeExecutable` verwendet werden

419 

420Verwenden Sie `runtimeExecutable` mit `runtimeArgs`, um einen Dev-Server über einen Package Manager zu starten. Zum Beispiel `"runtimeExecutable": "npm"` mit `"runtimeArgs": ["run", "dev"]` führt `npm run dev` aus.

421 

422Verwenden Sie `program`, wenn Sie ein eigenständiges Skript haben, das Sie direkt mit `node` ausführen möchten. Zum Beispiel `"program": "server.js"` führt `node server.js` aus. Übergeben Sie zusätzliche Flags mit `args`.

423 

424#### Port-Konflikte

425 

426Das Feld `autoPort` kontrolliert, was passiert, wenn Ihr bevorzugter Port bereits verwendet wird:

427 

428* **`true`**: Claude findet und verwendet automatisch einen freien Port. Geeignet für die meisten Dev-Server.

429* **`false`**: Claude schlägt mit einem Fehler fehl. Verwenden Sie dies, wenn Ihr Server einen bestimmten Port verwenden muss, z. B. für OAuth-Callbacks oder CORS-Allowlists.

430* **Nicht gesetzt (Standard)**: Claude fragt, ob der Server diesen genauen Port benötigt, und speichert dann Ihre Antwort.

431 

432Wenn Claude einen anderen Port wählt, übergibt es den zugewiesenen Port an Ihren Server über die Umgebungsvariable `PORT`.

433 

434#### Beispiele

435 

436Diese Konfigurationen zeigen häufige Setups für verschiedene Projekttypen:

437 

438<Tabs>

439 <Tab title="Next.js">

440 Diese Konfiguration führt eine Next.js-App mit Yarn auf Port 3000 aus:

441 

442 ```json theme={null}

443 {

444 "version": "0.0.1",

445 "configurations": [

446 {

447 "name": "web",

448 "runtimeExecutable": "yarn",

449 "runtimeArgs": ["dev"],

450 "port": 3000

451 }

452 ]

453 }

454 ```

455 </Tab>

456 

457 <Tab title="Multiple servers">

458 Für ein Monorepo mit einem Frontend und einem API-Server definieren Sie mehrere Konfigurationen. Das Frontend verwendet `autoPort: true`, sodass es einen freien Port wählt, wenn 3000 belegt ist, während der API-Server Port 8080 genau benötigt:

459 

460 ```json theme={null}

461 {

462 "version": "0.0.1",

463 "configurations": [

464 {

465 "name": "frontend",

466 "runtimeExecutable": "npm",

467 "runtimeArgs": ["run", "dev"],

468 "cwd": "apps/web",

469 "port": 3000,

470 "autoPort": true

471 },

472 {

473 "name": "api",

474 "runtimeExecutable": "npm",

475 "runtimeArgs": ["run", "start"],

476 "cwd": "server",

477 "port": 8080,

478 "env": { "NODE_ENV": "development" },

479 "autoPort": false

480 }

481 ]

482 }

483 ```

484 </Tab>

485 

486 <Tab title="Node.js script">

487 Um ein Node.js-Skript direkt auszuführen, statt einen Package-Manager-Befehl zu verwenden, verwenden Sie das Feld `program`:

488 

489 ```json theme={null}

490 {

491 "version": "0.0.1",

492 "configurations": [

493 {

494 "name": "server",

495 "program": "server.js",

496 "args": ["--verbose"],

497 "port": 4000

498 }

499 ]

500 }

501 ```

502 </Tab>

503</Tabs>

504 

505## Umgebungskonfiguration

506 

507Die Umgebung, die Sie beim [Starten einer Sitzung](#start-a-session) wählen, bestimmt, wo Claude ausgeführt wird und wie Sie sich verbinden:

508 

509* **Lokal**: läuft auf Ihrem Computer mit direktem Zugriff auf Ihre Dateien

510* **Remote**: läuft auf Anthropics Cloud-Infrastruktur. Sitzungen werden fortgesetzt, auch wenn Sie die App schließen.

511* **SSH**: läuft auf einem Remote-Computer, mit dem Sie sich über SSH verbinden, z. B. Ihre eigenen Server, Cloud-VMs oder Dev-Container

512 

513### Lokale Sitzungen

514 

515Die Desktop-App erbt nicht immer Ihre vollständige Shell-Umgebung. Auf macOS liest die App beim Starten aus dem Dock oder Finder Ihr Shell-Profil, z. B. `~/.zshrc` oder `~/.bashrc`, um `PATH` und einen festen Satz von Claude Code-Variablen zu extrahieren, aber andere Variablen, die Sie dort exportieren, werden nicht übernommen. Unter Windows erbt die App Benutzer- und Systemumgebungsvariablen, liest aber keine PowerShell-Profile.

516 

517Um Umgebungsvariablen für lokale Sitzungen und Dev-Server auf jeder Plattform festzulegen, öffnen Sie das Umgebungs-Dropdown im Eingabefeld, fahren Sie mit der Maus über **Lokal** und klicken Sie auf das Zahnrad-Symbol, um den lokalen Umgebungs-Editor zu öffnen. Variablen, die Sie hier speichern, werden verschlüsselt auf Ihrem Computer gespeichert und gelten für jede lokale Sitzung und jeden Vorschau-Server, den Sie starten. Sie können auch Variablen zum Schlüssel `env` in Ihrer Datei `~/.claude/settings.json` hinzufügen, obwohl diese nur Claude-Sitzungen erreichen und nicht Dev-Server. Siehe [Umgebungsvariablen](/de/env-vars) für die vollständige Liste der unterstützten Variablen.

518 

519[Erweitertes Denken](/de/common-workflows#use-extended-thinking-thinking-mode) ist standardmäßig aktiviert, was die Leistung bei komplexen Denkaufgaben verbessert, aber zusätzliche Token verwendet. Um das Denken vollständig zu deaktivieren, setzen Sie `MAX_THINKING_TOKENS` auf `0` im lokalen Umgebungs-Editor. Bei Modellen mit [adaptiver Argumentation](/de/model-config#adjust-effort-level) wird jeder andere `MAX_THINKING_TOKENS`-Wert ignoriert, da adaptive Argumentation die Denktiefe steuert. Bei Opus 4.6 und Sonnet 4.6 setzen Sie `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` auf `1`, um ein festes Denk-Budget zu verwenden; Opus 4.7 verwendet immer adaptive Argumentation und hat keinen Modus mit festem Budget.

520 

521### Remote-Sitzungen

522 

523Remote-Sitzungen werden im Hintergrund fortgesetzt, auch wenn Sie die App schließen. Die Nutzung wird auf Ihre [Abonnementplanlimits](/de/costs) angerechnet, ohne separate Compute-Gebühren.

524 

525Sie können benutzerdefinierte Cloud-Umgebungen mit verschiedenen Netzwerkzugriffsstufen und Umgebungsvariablen erstellen. Wählen Sie das Umgebungs-Dropdown beim Starten einer Remote-Sitzung und wählen Sie **Umgebung hinzufügen**. Siehe [Cloud-Umgebung](/de/claude-code-on-the-web#the-cloud-environment) für Details zur Konfiguration von Netzwerkzugriff und Umgebungsvariablen.

526 

527### SSH-Sitzungen

528 

529SSH-Sitzungen ermöglichen es Ihnen, Claude Code auf einem Remote-Computer auszuführen, während Sie die Desktop-App als Ihre Schnittstelle verwenden. Dies ist nützlich für die Arbeit mit Codebases, die auf Cloud-VMs, Dev-Containern oder Servern mit spezifischer Hardware oder Abhängigkeiten leben.

530 

531Um eine SSH-Verbindung hinzuzufügen, klicken Sie auf das Umgebungs-Dropdown vor dem Starten einer Sitzung und wählen Sie **+ SSH-Verbindung hinzufügen**. Der Dialog fragt nach:

532 

533* **Name**: ein freundlicher Bezeichner für diese Verbindung

534* **SSH-Host**: `user@hostname` oder ein in `~/.ssh/config` definierter Host

535* **SSH-Port**: Standard ist 22, wenn leer gelassen, oder verwendet den Port aus Ihrer SSH-Konfiguration

536* **Identity File**: Pfad zu Ihrem privaten Schlüssel, z. B. `~/.ssh/id_rsa`. Lassen Sie leer, um den Standardschlüssel oder Ihre SSH-Konfiguration zu verwenden.

537 

538Nach dem Hinzufügen wird die Verbindung im Umgebungs-Dropdown angezeigt. Wählen Sie sie aus, um eine Sitzung auf diesem Computer zu starten. Claude läuft auf dem Remote-Computer mit Zugriff auf seine Dateien und Tools.

539 

540Der Remote-Computer muss Linux oder macOS ausführen. Die Desktop-App installiert Claude Code auf dem Remote-Computer automatisch beim ersten Verbindungsaufbau. Nach der Verbindung unterstützen SSH-Sitzungen Berechtigungsmodi, Konnektoren, Plugins und MCP-Server.

541 

542#### SSH-Verbindungen für Ihr Team vorkonfigurieren

543 

544Administratoren können SSH-Verbindungen an Teammitglieder verteilen, indem sie `sshConfigs` zu einer [verwalteten Einstellungsdatei](/de/settings#settings-precedence) hinzufügen. Auf diese Weise definierte Verbindungen werden in der Umgebungs-Dropdown-Liste jedes Benutzers automatisch angezeigt und sind als verwaltet gekennzeichnet, sodass Benutzer sie auswählen, aber nicht bearbeiten oder löschen können.

545 

546Das folgende Beispiel konfiguriert eine einzelne Verbindung vor, die sich in `~/projects` auf dem Remote-Host öffnet:

547 

548```json theme={null}

549{

550 "sshConfigs": [

551 {

552 "id": "shared-dev-vm",

553 "name": "Shared Dev VM",

554 "sshHost": "user@dev.example.com",

555 "sshPort": 22,

556 "sshIdentityFile": "~/.ssh/id_ed25519",

557 "startDirectory": "~/projects"

558 }

559 ]

560}

561```

562 

563Jeder Eintrag erfordert `id`, `name` und `sshHost`. Die Felder `sshPort`, `sshIdentityFile` und `startDirectory` sind optional. Benutzer können auch `sshConfigs` zu ihrer eigenen `~/.claude/settings.json` hinzufügen, wo Verbindungen, die über den Dialog hinzugefügt werden, gespeichert sind.

564 

565## Unternehmenskonfiguration

566 

567Organisationen in Team- oder Enterprise-Plänen können das Verhalten der Desktop-App durch Admin-Konsolen-Steuerelemente, verwaltete Einstellungsdateien und Geräteverwaltungsrichtlinien verwalten.

568 

569### Admin-Konsolen-Steuerelemente

570 

571Diese Einstellungen werden über die [Admin-Einstellungskonsole](https://claude.ai/admin-settings/claude-code) konfiguriert:

572 

573* **Code in der Desktop-App**: Kontrollieren Sie, ob Benutzer in Ihrer Organisation auf Claude Code in der Desktop-App zugreifen können

574* **Code im Web**: Aktivieren oder deaktivieren Sie [Web-Sitzungen](/de/claude-code-on-the-web) für Ihre Organisation

575* **Remote Control**: Aktivieren oder deaktivieren Sie [Remote Control](/de/remote-control) für Ihre Organisation

576* **Bypass-Berechtigungsmodus deaktivieren**: Verhindern Sie, dass Benutzer in Ihrer Organisation den Bypass-Berechtigungsmodus aktivieren

577 

578### Verwaltete Einstellungen

579 

580Verwaltete Einstellungen überschreiben Projekt- und Benutzereinstellungen und gelten, wenn Desktop CLI-Sitzungen startet. Sie können diese Schlüssel in der [verwalteten Einstellungsdatei](/de/settings#settings-precedence) Ihrer Organisation oder remote über die Admin-Konsole festlegen.

581 

582| Schlüssel | Beschreibung |

583| ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

584| `permissions.disableBypassPermissionsMode` | auf `"disable"` setzen, um Benutzer daran zu hindern, den Bypass-Berechtigungsmodus zu aktivieren. |

585| `disableAutoMode` | auf `"disable"` setzen, um Benutzer daran zu hindern, den [Auto](/de/permission-modes#eliminate-prompts-with-auto-mode)-Modus zu aktivieren. Entfernt Auto aus dem Moduswahlschalter. Auch unter `permissions` akzeptiert. |

586| `autoMode` | passen Sie an, was der Auto-Modus-Klassifizierer über Ihre Organisation vertraut und blockiert. Siehe [Auto-Modus konfigurieren](/de/auto-mode-config). |

587| `sshConfigs` | vorkonfigurieren Sie [SSH-Verbindungen](#pre-configure-ssh-connections-for-your-team), die in der Umgebungs-Dropdown angezeigt werden. Benutzer können verwaltete Verbindungen nicht bearbeiten oder löschen. |

588 

589Eine verwaltete Einstellungsdatei, die auf jedem Computer auf der Festplatte bereitgestellt wird, gilt für Desktop-Sitzungen. Verwaltete Einstellungen, die remote über die Admin-Konsole hochgeladen werden, erreichen derzeit nur CLI- und IDE-Sitzungen. Für Desktop-Bereitstellungen verteilen Sie die Datei daher über MDM oder verwenden Sie die [Admin-Konsolen-Steuerelemente](#admin-console-controls) oben.

590 

591`permissions.disableBypassPermissionsMode` und `disableAutoMode` funktionieren auch in Benutzer- und Projekteinstellungen, aber das Platzieren in verwalteten Einstellungen verhindert, dass Benutzer sie überschreiben. `autoMode` wird aus Benutzereinstellungen, `.claude/settings.local.json` und verwalteten Einstellungen gelesen, aber nicht aus der eingecheckten `.claude/settings.json`: ein geklontes Repo kann seine eigenen Klassifiziererregeln nicht injizieren. Für die vollständige Liste der verwalteten Einstellungen einschließlich `allowManagedPermissionRulesOnly` und `allowManagedHooksOnly` siehe [verwaltete Einstellungen](/de/permissions#managed-only-settings).

592 

593### Geräteverwaltungsrichtlinien

594 

595IT-Teams können die Desktop-App über MDM auf macOS oder Gruppenrichtlinie unter Windows verwalten. Verfügbare Richtlinien umfassen das Aktivieren oder Deaktivieren der Claude-Code-Funktion, das Steuern von Auto-Updates und das Festlegen einer benutzerdefinierten Bereitstellungs-URL.

596 

597* **macOS**: Konfigurieren Sie über die Präferenzdomäne `com.anthropic.Claude` mit Tools wie Jamf oder Kandji

598* **Windows**: Konfigurieren Sie über die Registrierung unter `SOFTWARE\Policies\Claude`

599 

600### Authentifizierung und SSO

601 

602Enterprise-Organisationen können SSO für alle Benutzer verlangen. Siehe [Authentifizierung](/de/authentication) für Plan-Level-Details und [Einrichten von SSO](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso) für SAML- und OIDC-Konfiguration.

603 

604### Datenbehandlung

605 

606Claude Code verarbeitet Ihren Code lokal in lokalen Sitzungen oder auf Anthropics Cloud-Infrastruktur in Remote-Sitzungen. Gespräche und Code-Kontext werden an Anthropics API zur Verarbeitung gesendet. Siehe [Datenbehandlung](/de/data-usage) für Details zu Datenspeicherung, Datenschutz und Compliance.

607 

608### Bereitstellung

609 

610Desktop kann über Enterprise-Bereitstellungstools verteilt werden:

611 

612* **macOS**: Verteilen Sie über MDM wie Jamf oder Kandji mit dem `.dmg`-Installer

613* **Windows**: Stellen Sie über MSIX-Paket oder `.exe`-Installer bereit. Siehe [Claude Desktop für Windows bereitstellen](https://support.claude.com/en/articles/12622703-deploy-claude-desktop-for-windows) für Enterprise-Bereitstellungsoptionen einschließlich stiller Installation

614 

615Für Netzwerkkonfiguration wie Proxy-Einstellungen, Firewall-Allowlisting und LLM-Gateways siehe [Netzwerkkonfiguration](/de/network-config).

616 

617Für die vollständige Enterprise-Konfigurationsreferenz siehe das [Enterprise-Konfigurationshandbuch](https://support.claude.com/en/articles/12622667-enterprise-configuration).

618 

619## Kommen Sie von der CLI?

620 

621Wenn Sie bereits die Claude Code CLI verwenden, führt Desktop dieselbe zugrunde liegende Engine mit einer grafischen Benutzeroberfläche aus. Sie können beide gleichzeitig auf demselben Computer ausführen, sogar auf demselben Projekt. Jede behält separate Sitzungsverlauf, aber sie teilen Konfiguration und Projektgedächtnis über CLAUDE.md-Dateien.

622 

623Um eine CLI-Sitzung in Desktop zu verschieben, führen Sie `/desktop` im Terminal aus. Claude speichert Ihre Sitzung und öffnet sie in der Desktop-App, dann beendet die CLI. Dieser Befehl ist nur auf macOS und Windows verfügbar.

624 

625<Tip>

626 Wann Desktop vs CLI verwendet werden: Verwenden Sie Desktop, wenn Sie parallele Sitzungen in einem Fenster verwalten, Panes nebeneinander anordnen oder Änderungen visuell überprüfen möchten. Verwenden Sie die CLI, wenn Sie Scripting, Automatisierung oder einen Terminal-Workflow bevorzugen.

627</Tip>

628 

629### CLI-Flag-Äquivalente

630 

631Diese Tabelle zeigt das Desktop-App-Äquivalent für häufige CLI-Flags. Flags, die nicht aufgelistet sind, haben kein Desktop-Äquivalent, da sie für Scripting oder Automatisierung konzipiert sind.

632 

633| CLI | Desktop-Äquivalent |

634| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

635| `--model sonnet` | Modell-Dropdown neben der Schaltfläche „Senden" |

636| `--resume`, `--continue` | Klicken Sie auf eine Sitzung in der Seitenleiste |

637| `--permission-mode` | Moduswahlschalter neben der Schaltfläche „Senden" |

638| `--dangerously-skip-permissions` | Bypass-Berechtigungsmodus. Aktivieren Sie in Einstellungen → Claude Code → „Bypass-Berechtigungsmodus zulassen". Enterprise-Administratoren können diese Einstellung deaktivieren. |

639| `--add-dir` | Fügen Sie mehrere Repos mit der Schaltfläche **+** in Remote-Sitzungen hinzu |

640| `--allowedTools`, `--disallowedTools` | Kein Pro-Sitzungs-Äquivalent. Berechtigungsregeln in [Einstellungsdateien](/de/settings) gelten weiterhin. |

641| `--verbose` | [Ausführliche Ansichtsmodus](#switch-view-modes) im Dropdown „Transkript-Ansicht" |

642| `--print`, `--output-format` | Nicht verfügbar. Desktop ist nur interaktiv. |

643| `ANTHROPIC_MODEL` Umgebungsvariable | Modell-Dropdown neben der Schaltfläche „Senden" |

644| `MAX_THINKING_TOKENS` Umgebungsvariable | Im lokalen Umgebungs-Editor festlegen. Siehe [Umgebungskonfiguration](#environment-configuration). |

645 

646### Gemeinsame Konfiguration

647 

648Desktop und CLI lesen dieselben Konfigurationsdateien, daher wird Ihr Setup übertragen:

649 

650* **[CLAUDE.md](/de/memory)** und `CLAUDE.local.md`-Dateien in Ihrem Projekt werden von beiden verwendet

651* **[MCP-Server](/de/mcp)**, die in `~/.claude.json` oder `.mcp.json` konfiguriert sind, funktionieren in beiden

652* **[Hooks](/de/hooks)** und **[Skills](/de/skills)**, die in Einstellungen definiert sind, gelten für beide

653* **[Einstellungen](/de/settings)** in `~/.claude.json` und `~/.claude/settings.json` werden geteilt. Berechtigungsregeln, erlaubte Tools und andere Einstellungen in `settings.json` gelten für Desktop-Sitzungen.

654* **Modelle**: Sonnet, Opus und Haiku sind in beiden verfügbar. Wählen Sie in Desktop das Modell aus dem Dropdown neben der Schaltfläche „Senden". Sie können das Modell während der Sitzung ändern.

655 

656<Note>

657 **MCP-Server: Desktop-Chat-App vs Claude Code**: MCP-Server, die für die Claude Desktop-Chat-App in `claude_desktop_config.json` konfiguriert sind, sind separat von Claude Code und werden nicht auf der Registerkarte „Code" angezeigt. Um MCP-Server in Claude Code zu verwenden, konfigurieren Sie sie in `~/.claude.json` oder der `.mcp.json`-Datei Ihres Projekts. Siehe [MCP-Konfiguration](/de/mcp#installing-mcp-servers) für Details.

658</Note>

659 

660### Funktionsvergleich

661 

662Diese Tabelle vergleicht Kernfunktionen zwischen CLI und Desktop. Für eine vollständige Liste der CLI-Flags siehe die [CLI-Referenz](/de/cli-reference).

663 

664| Funktion | CLI | Desktop |

665| ------------------------------------------------------ | --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

666| Berechtigungsmodi | Alle Modi einschließlich `dontAsk` | Berechtigungen erfragen, Bearbeitungen automatisch akzeptieren, Plan Mode, Auto und Bypass-Berechtigungen über Einstellungen |

667| `--dangerously-skip-permissions` | CLI-Flag | Bypass-Berechtigungsmodus. Aktivieren Sie in Einstellungen → Claude Code → „Bypass-Berechtigungsmodus zulassen" |

668| [Drittanbieter-Provider](/de/third-party-integrations) | Bedrock, Vertex, Foundry | Anthropics API standardmäßig. Enterprise-Bereitstellungen können Vertex AI und Gateway-Provider konfigurieren. Siehe das [Enterprise-Konfigurationshandbuch](https://support.claude.com/en/articles/12622667-enterprise-configuration). |

669| [MCP-Server](/de/mcp) | In Einstellungsdateien konfigurieren | Konnektoren-UI für lokale und SSH-Sitzungen oder Einstellungsdateien |

670| [Plugins](/de/plugins) | `/plugin`-Befehl | Plugin-Manager-UI |

671| @mention-Dateien | Textbasiert | Mit Autovervollständigung; lokale und SSH-Sitzungen nur |

672| Dateianhänge | Nicht verfügbar | Bilder, PDFs |

673| Sitzungsisolation | [`--worktree`](/de/cli-reference)-Flag | Automatische Worktrees |

674| Mehrere Sitzungen | Separate Terminals | Seitenleisten-Tabs |

675| Wiederkehrende Aufgaben | Cron-Jobs, CI-Pipelines | [Geplante Aufgaben](/de/desktop-scheduled-tasks) |

676| Computernutzung | [Aktivieren über `/mcp`](/de/computer-use) auf macOS | [App- und Bildschirmsteuerung](#let-claude-use-your-computer) auf macOS und Windows |

677| Dispatch-Integration | Nicht verfügbar | [Dispatch-Sitzungen](#sessions-from-dispatch) in der Seitenleiste |

678| Scripting und Automatisierung | [`--print`](/de/cli-reference), [Agent SDK](/de/headless) | Nicht verfügbar |

679 

680### Was ist nicht in Desktop verfügbar

681 

682Die folgenden Funktionen sind nur in der CLI oder VS Code-Erweiterung verfügbar:

683 

684* **Drittanbieter-Provider**: Desktop verbindet sich mit Anthropics API standardmäßig. Enterprise-Bereitstellungen können Vertex AI und Gateway-Provider über [verwaltete Einstellungen](https://support.claude.com/en/articles/12622667-enterprise-configuration) konfigurieren. Für Bedrock oder Foundry verwenden Sie die [CLI](/de/quickstart).

685* **Linux**: Die Desktop-App ist nur auf macOS und Windows verfügbar. Verwenden Sie unter Linux die [CLI](/de/quickstart).

686* **Inline-Code-Vorschläge**: Desktop bietet keine Autovervollständigungs-ähnlichen Vorschläge. Es funktioniert durch Gesprächseingaben und explizite Code-Änderungen.

687* **Agent-Teams**: Multi-Agent-Orchestrierung ist über die [CLI](/de/agent-teams) und [Agent SDK](/de/headless) verfügbar, nicht in Desktop.

688 

689## Fehlerbehebung

690 

691Die folgenden Abschnitte behandeln Probleme, die spezifisch für die Desktop-App sind. Für Runtime-API-Fehler, die im Chat angezeigt werden, wie `API Error: 500`, `529 Overloaded`, `429` oder `Prompt is too long`, siehe die [Fehlerreferenz](/de/errors). Diese Fehler und ihre Lösungen sind gleich über CLI, Desktop und Web.

692 

693### Überprüfen Sie Ihre Version

694 

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

696 

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

698* **Windows**: Klicken Sie auf **Hilfe** und dann auf **Über**

699 

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

701 

702### 403 oder Authentifizierungsfehler auf der Registerkarte „Code"

703 

704Wenn Sie `Error 403: Forbidden` oder andere Authentifizierungsfehler bei der Verwendung der Registerkarte „Code" sehen:

705 

7061. Melden Sie sich aus dem App-Menü ab und wieder an. Dies ist die häufigste Lösung.

7072. Überprüfen Sie, ob Sie ein aktives bezahltes Abonnement haben: Pro, Max, Team oder Enterprise.

7083. Wenn die CLI funktioniert, aber Desktop nicht, beenden Sie die Desktop-App vollständig, nicht nur das Fenster schließen, und öffnen Sie sie dann erneut und melden Sie sich an.

7094. Überprüfen Sie Ihre Internetverbindung und Proxy-Einstellungen.

710 

711### Leerer oder hängender Bildschirm beim Start

712 

713Wenn die App öffnet, aber einen leeren oder nicht reagierenden Bildschirm anzeigt:

714 

7151. Starten Sie die App neu.

7162. Überprüfen Sie auf ausstehende Updates. Die App wird beim Start automatisch aktualisiert.

7173. Überprüfen Sie unter Windows den Event Viewer auf Absturzprotokolle unter **Windows Logs → Application**.

718 

719### „Fehler beim Laden der Sitzung"

720 

721Wenn Sie `Failed to load session` sehen, existiert der ausgewählte Ordner möglicherweise nicht mehr, ein Git-Repository benötigt möglicherweise Git LFS, das nicht installiert ist, oder Dateiberechtigungen verhindern möglicherweise den Zugriff. Versuchen Sie, einen anderen Ordner auszuwählen oder die App neu zu starten.

722 

723### Sitzung findet installierte Tools nicht

724 

725Wenn Claude Tools wie `npm`, `node` oder andere CLI-Befehle nicht finden kann, überprüfen Sie, dass die Tools in Ihrem regulären Terminal funktionieren, überprüfen Sie, dass Ihr Shell-Profil PATH richtig einrichtet, und starten Sie die Desktop-App neu, um Umgebungsvariablen neu zu laden.

726 

727### Git- und Git LFS-Fehler

728 

729Unter Windows ist Git erforderlich, damit die Registerkarte „Code" lokale Sitzungen startet. Wenn Sie „Git is required" sehen, installieren Sie [Git für Windows](https://git-scm.com/downloads/win) und starten Sie die App neu.

730 

731Wenn Sie „Git LFS is required by this repository but is not installed" sehen, installieren Sie Git LFS von [git-lfs.com](https://git-lfs.com/), führen Sie `git lfs install` aus und starten Sie die App neu.

732 

733### MCP-Server funktionieren nicht unter Windows

734 

735Wenn MCP-Server-Umschalter nicht reagieren oder Server unter Windows keine Verbindung herstellen, überprüfen Sie, dass der Server in Ihren Einstellungen richtig konfiguriert ist, starten Sie die App neu, überprüfen Sie, dass der Server-Prozess im Task Manager läuft, und überprüfen Sie Server-Protokolle auf Verbindungsfehler.

736 

737### App wird nicht beendet

738 

739* **macOS**: drücken Sie Cmd+Q. Wenn die App nicht reagiert, verwenden Sie Force Quit mit Cmd+Option+Esc, wählen Sie Claude und klicken Sie auf Force Quit.

740* **Windows**: verwenden Sie Task Manager mit Strg+Umschalt+Esc, um den Claude-Prozess zu beenden.

741 

742### Windows-spezifische Probleme

743 

744* **PATH nicht aktualisiert nach Installation**: Öffnen Sie ein neues Terminal-Fenster. PATH-Updates gelten nur für neue Terminal-Sitzungen.

745* **Fehler bei gleichzeitiger Installation**: Wenn Sie einen Fehler über eine andere Installation sehen, die läuft, aber es gibt keine, versuchen Sie, das Installationsprogramm als Administrator auszuführen.

746 

747### „Branch existiert noch nicht" beim Öffnen in CLI

748 

749Remote-Sitzungen können Branches erstellen, die auf Ihrem lokalen Computer nicht existieren. Klicken Sie auf den Branch-Namen in der Sitzungs-Symbolleiste, um ihn zu kopieren, und rufen Sie ihn dann lokal ab:

750 

751```bash theme={null}

752git fetch origin <branch-name>

753git checkout <branch-name>

754```

755 

756### Immer noch stecken?

757 

758* Suchen Sie oder melden Sie einen Fehler auf [GitHub Issues](https://github.com/anthropics/claude-code/issues)

759* Besuchen Sie das [Claude Support Center](https://support.claude.com/)

760 

761Wenn Sie einen Fehler melden, geben Sie Ihre Desktop-App-Version, Ihr Betriebssystem, die genaue Fehlermeldung und relevante Protokolle an. Überprüfen Sie auf macOS Console.app. Überprüfen Sie unter Windows Event Viewer → Windows Logs → Application.

desktop-quickstart.md +129 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Erste Schritte mit der Desktop-App

6 

7> Installieren Sie Claude Code auf dem Desktop und starten Sie Ihre erste Coding-Sitzung

8 

9Die Desktop-App bietet Ihnen Claude Code mit einer grafischen Benutzeroberfläche, die für die Ausführung mehrerer Sitzungen nebeneinander konzipiert ist: eine Seitenleiste zur Verwaltung paralleler Arbeit, ein Drag-and-Drop-Layout mit integriertem Terminal und Datei-Editor, visuelle Diff-Überprüfung, Live-App-Vorschau, GitHub-PR-Überwachung mit automatischem Merge und geplante Aufgaben. Kein Terminal erforderlich.

10 

11<CardGroup cols={2}>

12 <Card title="Download for macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">

13 Universal build for Intel and Apple Silicon

14 </Card>

15 

16 <Card title="Download for Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">

17 For x64 processors

18 </Card>

19</CardGroup>

20 

21For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). The desktop app is not available on Linux; use the [CLI](/en/quickstart) instead.

22 

23<Note>

24 Claude Code erfordert ein [Pro-, Max-, Team- oder Enterprise-Abonnement](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=desktop_quickstart_pricing).

25</Note>

26 

27Diese Seite führt Sie durch die Installation der App und den Start Ihrer ersten Sitzung. Wenn Sie bereits eingerichtet sind, siehe [Claude Code Desktop verwenden](/de/desktop) für die vollständige Referenz.

28 

29Die Desktop-App hat drei Registerkarten:

30 

31* **Chat**: Allgemeine Konversation ohne Dateizugriff, ähnlich wie claude.ai.

32* **Cowork**: Ein autonomer Hintergrund-Agent, der an Aufgaben in einer Cloud-VM mit eigener Umgebung arbeitet. Er kann unabhängig arbeiten, während Sie andere Dinge tun.

33* **Code**: Ein interaktiver Coding-Assistent mit direktem Zugriff auf Ihre lokalen Dateien. Sie überprüfen und genehmigen jede Änderung in Echtzeit.

34 

35Chat und Cowork werden in den [Claude Desktop-Supportartikeln](https://support.claude.com/en/collections/16163169-claude-desktop) behandelt. Diese Seite konzentriert sich auf die Registerkarte **Code**.

36 

37## Installieren

38 

39<Steps>

40 <Step title="Installieren und anmelden">

41 Laden Sie das Installationsprogramm für Ihre Plattform über die obigen Links herunter und führen Sie es aus. Starten Sie Claude aus Ihrem Anwendungsordner auf macOS oder dem Startmenü unter Windows und melden Sie sich mit Ihrem Anthropic-Konto an.

42 </Step>

43 

44 <Step title="Öffnen Sie die Registerkarte Code">

45 Klicken Sie auf die Registerkarte **Code** oben in der Mitte. Wenn Sie beim Klicken auf „Code" aufgefordert werden, ein Upgrade durchzuführen, müssen Sie zunächst [ein bezahltes Abonnement abschließen](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=desktop_quickstart_upgrade). Wenn Sie aufgefordert werden, sich online anzumelden, schließen Sie die Anmeldung ab und starten Sie die App neu. Wenn Sie einen 403-Fehler sehen, siehe [Authentifizierungsfehlersuche](/de/desktop#403-or-authentication-errors-in-the-code-tab).

46 </Step>

47</Steps>

48 

49Die Desktop-App enthält Claude Code. Sie müssen Node.js oder die CLI nicht separat installieren. Um `claude` vom Terminal aus zu verwenden, installieren Sie die CLI separat. Siehe [Erste Schritte mit der CLI](/de/quickstart).

50 

51## Starten Sie Ihre erste Sitzung

52 

53Wählen Sie mit der geöffneten Registerkarte „Code" ein Projekt aus und geben Sie Claude etwas zu tun.

54 

55<Steps>

56 <Step title="Wählen Sie eine Umgebung und einen Ordner">

57 Wählen Sie **Lokal**, um Claude auf Ihrem Computer mit Ihren Dateien direkt auszuführen. Klicken Sie auf **Ordner auswählen** und wählen Sie Ihr Projektverzeichnis.

58 

59 <Tip>

60 Beginnen Sie mit einem kleinen Projekt, das Sie gut kennen. Es ist die schnellste Möglichkeit zu sehen, was Claude Code kann. Unter Windows muss [Git](https://git-scm.com/downloads/win) für lokale Sitzungen installiert sein. Die meisten Macs enthalten Git standardmäßig.

61 </Tip>

62 

63 Sie können auch auswählen:

64 

65 * **Remote**: Führen Sie Sitzungen auf der Cloud-Infrastruktur von Anthropic aus, die auch dann fortgesetzt werden, wenn Sie die App schließen. Remote-Sitzungen verwenden die gleiche Infrastruktur wie [Claude Code im Web](/de/claude-code-on-the-web).

66 * **SSH**: Verbinden Sie sich über SSH mit einem Remote-Computer (Ihre eigenen Server, Cloud-VMs oder Dev-Container). Claude Code muss auf dem Remote-Computer installiert sein.

67 </Step>

68 

69 <Step title="Wählen Sie ein Modell">

70 Wählen Sie ein Modell aus der Dropdown-Liste neben der Schaltfläche „Senden". Siehe [Modelle](/de/model-config#available-models) für einen Vergleich von Opus, Sonnet und Haiku. Sie können das Modell später aus der gleichen Dropdown-Liste ändern.

71 </Step>

72 

73 <Step title="Sagen Sie Claude, was zu tun ist">

74 Geben Sie ein, was Claude tun soll:

75 

76 * `Find a TODO comment and fix it`

77 * `Add tests for the main function`

78 * `Create a CLAUDE.md with instructions for this codebase`

79 

80 Eine [Sitzung](/de/desktop#work-in-parallel-with-sessions) ist eine Konversation mit Claude über Ihren Code. Jede Sitzung verfolgt ihren eigenen Kontext und ihre Änderungen, sodass Sie an mehreren Aufgaben arbeiten können, ohne dass sie sich gegenseitig beeinflussen.

81 </Step>

82 

83 <Step title="Überprüfen und akzeptieren Sie Änderungen">

84 Standardmäßig startet die Registerkarte „Code" im [Modus „Berechtigungen erfragen"](/de/desktop#choose-a-permission-mode), in dem Claude Änderungen vorschlägt und auf Ihre Genehmigung wartet, bevor er sie anwendet. Sie sehen:

85 

86 1. Eine [Diff-Ansicht](/de/desktop#review-changes-with-diff-view), die genau zeigt, was sich in jeder Datei ändern wird

87 2. Schaltflächen „Akzeptieren"/„Ablehnen", um jede Änderung zu genehmigen oder abzulehnen

88 3. Echtzeit-Updates, während Claude Ihre Anfrage bearbeitet

89 

90 Wenn Sie eine Änderung ablehnen, fragt Claude, wie Sie anders vorgehen möchten. Ihre Dateien werden erst geändert, wenn Sie sie akzeptieren.

91 </Step>

92</Steps>

93 

94## Was nun?

95 

96Sie haben Ihre erste Bearbeitung vorgenommen. Für die vollständige Referenz zu allem, was Desktop kann, siehe [Claude Code Desktop verwenden](/de/desktop). Hier sind einige Dinge, die Sie als Nächstes versuchen können.

97 

98**Unterbrechen und lenken.** Sie können Claude jederzeit unterbrechen. Wenn es den falschen Weg geht, klicken Sie auf die Stoppschaltfläche oder geben Sie Ihre Korrektur ein und drücken Sie **Eingabe**. Claude stoppt, was es tut, und passt sich basierend auf Ihrer Eingabe an. Sie müssen nicht warten, bis es fertig ist, oder von vorne anfangen.

99 

100**Geben Sie Claude mehr Kontext.** Geben Sie `@filename` im Eingabefeld ein, um eine bestimmte Datei in die Konversation zu ziehen, fügen Sie Bilder und PDFs mit der Schaltfläche „Anhang" an, oder ziehen Sie Dateien direkt in das Eingabefeld. Je mehr Kontext Claude hat, desto besser sind die Ergebnisse. Siehe [Dateien und Kontext zu Eingaben hinzufügen](/de/desktop#add-files-and-context-to-prompts).

101 

102**Verwenden Sie Skills für wiederholbare Aufgaben.** Geben Sie `/` ein oder klicken Sie auf **+** → **Slash commands**, um [integrierte Befehle](/de/commands), [benutzerdefinierte Skills](/de/skills) und Plugin-Skills zu durchsuchen. Skills sind wiederverwendbare Eingaben, die Sie aufrufen können, wenn Sie sie benötigen, wie Code-Review-Checklisten oder Bereitstellungsschritte.

103 

104**Überprüfen Sie Änderungen vor dem Commit.** Nachdem Claude Dateien bearbeitet hat, wird ein `+12 -1`-Indikator angezeigt. Klicken Sie darauf, um die [Diff-Ansicht](/de/desktop#review-changes-with-diff-view) zu öffnen, überprüfen Sie Änderungen Datei für Datei und kommentieren Sie bestimmte Zeilen. Claude liest Ihre Kommentare und überarbeitet. Klicken Sie auf **Code überprüfen**, um Claude die Diffs selbst auswerten zu lassen und Inline-Vorschläge zu hinterlassen.

105 

106**Passen Sie an, wie viel Kontrolle Sie haben.** Ihr [Berechtigungsmodus](/de/desktop#choose-a-permission-mode) steuert das Gleichgewicht. „Berechtigungen erfragen" (Standard) erfordert Genehmigung vor jeder Bearbeitung. „Auto-Akzeptanz" akzeptiert Dateibearbeitungen automatisch für schnellere Iteration. Der Plan Mode lässt Claude einen Ansatz planen, ohne Dateien zu berühren, was vor einem großen Refactoring nützlich ist.

107 

108**Fügen Sie Plugins für mehr Funktionen hinzu.** Klicken Sie auf die Schaltfläche **+** neben dem Eingabefeld und wählen Sie **Plugins**, um [Plugins](/de/desktop#install-plugins) zu durchsuchen und zu installieren, die Skills, Agents, MCP servers und mehr hinzufügen.

109 

110**Arrangieren Sie Ihren Arbeitsbereich.** Ziehen Sie die Chat-, Diff-, Terminal-, Datei- und Vorschau-Bereiche in das Layout, das Sie möchten. Öffnen Sie das Terminal mit **Strg+\`**, um Befehle neben Ihrer Sitzung auszuführen, oder klicken Sie auf einen Dateipfad, um ihn im Datei-Bereich zu öffnen. Siehe [Arrangieren Sie Ihren Arbeitsbereich](/de/desktop#arrange-your-workspace).

111 

112**Zeigen Sie eine Vorschau Ihrer App an.** Klicken Sie auf das Dropdown-Menü **Vorschau**, um Ihren Dev-Server direkt im Desktop auszuführen. Claude kann die laufende App anzeigen, Endpunkte testen, Protokolle überprüfen und auf das, was es sieht, iterieren. Siehe [Zeigen Sie eine Vorschau Ihrer App an](/de/desktop#preview-your-app).

113 

114**Verfolgen Sie Ihren Pull Request.** Nachdem Sie einen PR geöffnet haben, überwacht Claude Code die CI-Prüfungsergebnisse und kann Fehler automatisch beheben oder den PR zusammenführen, sobald alle Prüfungen bestanden sind. Siehe [Überwachen Sie den Pull-Request-Status](/de/desktop#monitor-pull-request-status).

115 

116**Setzen Sie Claude auf einen Zeitplan.** Richten Sie [geplante Aufgaben](/de/desktop-scheduled-tasks) ein, um Claude automatisch regelmäßig auszuführen: eine tägliche Code-Überprüfung jeden Morgen, eine wöchentliche Abhängigkeitsprüfung oder eine Zusammenfassung, die von Ihren verbundenen Tools abruft.

117 

118**Skalieren Sie auf, wenn Sie bereit sind.** Öffnen Sie [parallele Sitzungen](/de/desktop#work-in-parallel-with-sessions) aus der Seitenleiste, um an mehreren Aufgaben gleichzeitig zu arbeiten, jede in ihrem eigenen Git worktree, und öffnen Sie den [Aufgaben-Bereich](/de/desktop#watch-background-tasks), um die Subagents und Hintergrund-Befehle zu beobachten, die eine Sitzung ausführt. Öffnen Sie einen [Side Chat](/de/desktop#ask-a-side-question-without-derailing-the-session), um eine Frage zu stellen, ohne den Hauptthread zu unterbrechen. Senden Sie [langfristige Arbeit in die Cloud](/de/desktop#run-long-running-tasks-remotely), damit sie auch dann fortgesetzt wird, wenn Sie die App schließen, oder [setzen Sie eine Sitzung im Web oder in Ihrer IDE fort](/de/desktop#continue-in-another-surface), wenn eine Aufgabe länger als erwartet dauert. [Verbinden Sie externe Tools](/de/desktop#extend-claude-code) wie GitHub, Slack und Linear, um Ihren Workflow zusammenzubringen.

119 

120## Kommen Sie von der CLI?

121 

122Desktop führt die gleiche Engine wie die CLI mit einer grafischen Benutzeroberfläche aus. Sie können beide gleichzeitig auf dem gleichen Projekt ausführen, und sie teilen die Konfiguration (CLAUDE.md-Dateien, MCP servers, hooks, Skills und Einstellungen). Für einen vollständigen Vergleich von Funktionen, Flag-Äquivalenten und was in Desktop nicht verfügbar ist, siehe [CLI-Vergleich](/de/desktop#coming-from-the-cli).

123 

124## Was kommt als Nächstes

125 

126* [Claude Code Desktop verwenden](/de/desktop): Berechtigungsmodi, parallele Sitzungen, Diff-Ansicht, Konnektoren und Enterprise-Konfiguration

127* [Fehlerbehebung](/de/desktop#troubleshooting): Lösungen für häufige Fehler und Setup-Probleme

128* [Best Practices](/de/best-practices): Tipps zum Schreiben effektiver Eingaben und zum Herausholen des Besten aus Claude Code

129* [Häufige Workflows](/de/common-workflows): Tutorials zum Debuggen, Refactoring, Testen und mehr

devcontainer.md +194 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Entwicklungscontainer

6 

7> Führen Sie Claude Code in einem Entwicklungscontainer aus, um konsistente, isolierte Umgebungen für Ihr Team zu schaffen.

8 

9Ein [Entwicklungscontainer](https://containers.dev/), oder Dev Container, ermöglicht es Ihnen, eine identische, isolierte Umgebung zu definieren, die jeder Ingenieur in Ihrem Team ausführen kann. Mit Claude Code, das in diesem Container installiert ist, werden die Befehle, die Claude ausführt, darin ausgeführt, anstatt auf dem Host-Rechner, während Änderungen an Ihren Projektdateien in Ihrem lokalen Repository angezeigt werden, während Sie arbeiten.

10 

11Diese Seite behandelt [die Installation von Claude Code in einem Entwicklungscontainer](#add-claude-code-to-your-dev-container) und die folgenden Konfigurationsthemen. Jedes Thema ist eigenständig, daher springen Sie zu denjenigen, die dem entsprechen, was Sie einrichten müssen:

12 

13* [Authentifizierung und Einstellungen über Neuerstellungen hinweg beibehalten](#persist-authentication-and-settings-across-rebuilds)

14* [Organisationsrichtlinie durchsetzen](#enforce-organization-policy)

15* [Netzwerk-Egress einschränken](#restrict-network-egress)

16* [Ohne Berechtigungsaufforderungen ausführen](#run-without-permission-prompts)

17 

18<Warning>

19 Obwohl der Entwicklungscontainer erhebliche Schutzmaßnahmen bietet, ist kein System vollständig immun gegen alle Angriffe.

20 Bei Ausführung mit `--dangerously-skip-permissions` verhindern Entwicklungscontainer nicht, dass ein bösartiges Projekt alles exfiltriert, das im Container zugänglich ist, einschließlich der Claude Code-Anmeldedaten, die in [`~/.claude`](/de/claude-directory) gespeichert sind.

21 Verwenden Sie Entwicklungscontainer nur bei der Entwicklung mit vertrauenswürdigen Repositories, und überwachen Sie die Aktivitäten von Claude.

22 Vermeiden Sie das Einbinden von Host-Geheimnissen wie `~/.ssh` oder Cloud-Anmeldedatendateien in den Container; bevorzugen Sie Repository-bezogene oder kurzlebige Token.

23</Warning>

24 

25<Accordion title="Wie Entwicklungscontainer mit Ihrem Editor funktionieren">

26 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=9017b1d16a446c6cc37ba562f35b9aae" className="dark:hidden" alt="Diagramm, das einen Editor auf dem Host zeigt, der sich mit einem Docker-Entwicklungscontainer verbindet. Claude Code, das Terminal und Build-Tools werden im Container ausgeführt. Das Host-Repository wird als Arbeitsbereich in den Container eingebunden." width="640" height="300" data-path="images/devcontainer-architecture.svg" />

27 

28 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture-dark.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=ef00c8e25b1ea7a3a152895f1488831b" className="hidden dark:block" alt="Diagramm, das einen Editor auf dem Host zeigt, der sich mit einem Docker-Entwicklungscontainer verbindet. Claude Code, das Terminal und Build-Tools werden im Container ausgeführt. Das Host-Repository wird als Arbeitsbereich in den Container eingebunden." width="640" height="300" data-path="images/devcontainer-architecture-dark.svg" />

29 

30 Ein Entwicklungscontainer wird als Docker-Container ausgeführt, entweder auf Ihrem Rechner oder auf einem Cloud-Host wie GitHub Codespaces. Ein Editor, der die Dev Containers-Spezifikation unterstützt, wie VS Code, GitHub Codespaces, eine JetBrains IDE oder Cursor, verbindet sich mit diesem Container: Sie durchsuchen und bearbeiten Dateien im Editor wie gewohnt, aber das integrierte Terminal, die Sprachserver und Build-Tools werden alle im Container ausgeführt, anstatt auf Ihrem Host. Editoren ohne Dev Container-Unterstützung, wie einfaches Vim, sind nicht Teil dieses Workflows.

31 

32 Claude Code wird im Container ausgeführt, daher sieht es die gleichen Dateien, Abhängigkeiten und Tools wie der Rest Ihres Projekt-Toolchains. In VS Code können Sie entweder das [Claude Code-Erweiterungspanel](/de/vs-code) verwenden oder `claude` im integrierten Terminal ausführen; beide werden im Container ausgeführt und teilen die gleiche `~/.claude`-Konfiguration.

33</Accordion>

34 

35## Claude Code zu Ihrem Entwicklungscontainer hinzufügen

36 

37Claude Code wird in jeden Entwicklungscontainer durch die [Claude Code Dev Container Feature](https://github.com/anthropics/devcontainer-features/tree/main/src/claude-code) installiert.

38 

39Die Einstellungen funktionieren mit jedem Tool, das die Dev Containers-Spezifikation unterstützt, wie VS Code, GitHub Codespaces oder JetBrains IDEs. Die folgenden Schritte verwenden VS Code als Beispiel.

40 

41Wenn Sie den Container in VS Code oder Codespaces öffnen, fügt die Feature auch die Claude Code VS Code-Erweiterung hinzu; andere Editoren ignorieren diesen Teil.

42 

43<Tip>

44 Neu bei Entwicklungscontainern? Das [VS Code Dev Containers-Tutorial](https://code.visualstudio.com/docs/devcontainers/tutorial) führt Sie durch die Installation von Docker, der Erweiterung und dem Öffnen Ihres ersten Containers. Für ein vollständigeres gehärtetes Beispiel mit einer Firewall und persistenten Volumes siehe [Probieren Sie den Referenz-Container aus](#try-the-reference-container).

45</Tip>

46 

47<Steps>

48 <Step title="Erstellen oder aktualisieren Sie devcontainer.json">

49 Speichern Sie das Folgende als `.devcontainer/devcontainer.json` in Ihrem Repository, oder fügen Sie den `features`-Block zu Ihrer vorhandenen Datei hinzu.

50 

51 Das Versions-Tag am Ende, wie `:1.0`, fixiert das Installationsskript der Feature, nicht die Claude Code-Version. Die Feature installiert die neueste Claude Code-Version, und Claude Code aktualisiert sich standardmäßig selbst im Container.

52 

53 Um die CLI-Version zu fixieren oder die automatische Aktualisierung zu deaktivieren, siehe [Organisationsrichtlinie durchsetzen](#enforce-organization-policy).

54 

55 ```json .devcontainer/devcontainer.json theme={null}

56 {

57 "image": "mcr.microsoft.com/devcontainers/base:ubuntu",

58 "features": {

59 "ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}

60 }

61 }

62 ```

63 

64 Ersetzen Sie die `image`-Zeile durch das Basis-Image Ihres Projekts, oder entfernen Sie sie, wenn Ihre vorhandene Datei ein Dockerfile verwendet.

65 </Step>

66 

67 <Step title="Erstellen Sie den Container neu">

68 Öffnen Sie die VS Code-Befehlspalette mit `Cmd+Shift+P` auf Mac oder `Ctrl+Shift+P` auf Windows und Linux, und führen Sie **Dev Containers: Rebuild Container** aus.

69 

70 Für andere Tools folgen Sie der Neuerstellungsaktion dieses Tools: siehe [Neuerstellung in GitHub Codespaces](https://docs.github.com/en/codespaces/developing-in-a-codespace/rebuilding-the-container-in-a-codespace), die [Dev Containers CLI](https://github.com/devcontainers/cli), oder die Dev Container-Dokumentation Ihrer IDE.

71 </Step>

72 

73 <Step title="Melden Sie sich bei Claude Code an">

74 Öffnen Sie ein Terminal im neu erstellten Container und führen Sie `claude` aus, dann folgen Sie der Authentifizierungsaufforderung.

75 </Step>

76</Steps>

77 

78Was Sie bei der Authentifizierungsaufforderung sehen, hängt von Ihrem Anbieter ab:

79 

80* **Anthropic**: Melden Sie sich über einen Browser mit Ihrem Claude- oder Anthropic Console-Konto an

81* **[Amazon Bedrock, Google Vertex AI oder Microsoft Foundry](/de/third-party-integrations)**: Claude Code verwendet Ihre Cloud-Anbieter-Anmeldedaten, ohne Browser-Aufforderung

82 

83Für Cloud-Anbieter übergeben Sie Anmeldedaten an den Container als Umgebungsvariablen über `containerEnv`, ein Codespaces-Geheimnis oder die Workload-Identität Ihrer Cloud, anstatt Anmeldedatendateien vom Host einzubinden. Siehe [Amazon Bedrock](/de/amazon-bedrock), [Google Vertex AI](/de/google-vertex-ai) oder [Microsoft Foundry](/de/microsoft-foundry) für die Anmeldedatenkette, die Claude Code liest.

84 

85Siehe [Wählen Sie Ihren API-Anbieter](/de/admin-setup#choose-your-api-provider), um zu entscheiden, welcher Weg zu Ihrer Organisation passt.

86 

87<Note>

88 Wenn die Browser-Anmeldung abgeschlossen ist, aber der Rückruf den Container nie erreicht, kopieren Sie den im Browser angezeigten Code und fügen Sie ihn bei der Aufforderung `Paste code here if prompted` im Terminal ein. Dies kann vorkommen, wenn die Port-Weiterleitung des Editors den localhost-Rückruf nicht leitet.

89</Note>

90 

91## Authentifizierung und Einstellungen über Neuerstellungen hinweg beibehalten

92 

93Standardmäßig wird das Home-Verzeichnis des Containers bei einer Neuerstellung verworfen, daher müssen sich Ingenieure jedes Mal erneut anmelden. Claude Code speichert sein Authentifizierungs-Token, Benutzereinstellungen und Sitzungsverlauf unter [`~/.claude`](/de/claude-directory). Binden Sie ein benanntes Volume an diesem Pfad ein, um diesen Status über Neuerstellungen hinweg zu bewahren.

94 

95Das folgende Beispiel bindet ein Volume im Home-Verzeichnis des `node`-Benutzers ein:

96 

97```json devcontainer.json theme={null}

98"mounts": [

99 "source=claude-code-config,target=/home/node/.claude,type=volume"

100]

101```

102 

103Ersetzen Sie `/home/node` durch das Home-Verzeichnis des `remoteUser` Ihres Containers. Wenn Sie das Volume an einem anderen Ort als `~/.claude` einbinden, setzen Sie [`CLAUDE_CONFIG_DIR`](/de/env-vars) auf den Mount-Pfad, damit Claude Code dort liest und schreibt.

104 

105Um den Status pro Projekt zu isolieren, anstatt ein Volume über alle Repositories hinweg zu teilen, fügen Sie die Variable `${devcontainerId}` in den Quellnamen ein. Die [Referenzkonfiguration](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json) verwendet `source=claude-code-config-${devcontainerId}` zu diesem Zweck.

106 

107In GitHub Codespaces bleibt `~/.claude` über das Stoppen und Starten eines Codespace erhalten, wird aber immer noch gelöscht, wenn Sie den Container neu erstellen, daher gilt die obige Volume-Einbindung auch dort. Um die Authentifizierung über Codespaces hinweg zu tragen, speichern Sie `ANTHROPIC_API_KEY` oder ein `CLAUDE_CODE_OAUTH_TOKEN` von [`claude setup-token`](/de/authentication#generate-a-long-lived-token) als [Codespaces-Geheimnis](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces); Codespaces macht Geheimnisse automatisch als Umgebungsvariablen im Container verfügbar.

108 

109## Organisationsrichtlinie durchsetzen

110 

111Ein Entwicklungscontainer ist ein bequemer Ort, um Organisationsrichtlinie anzuwenden, da das gleiche Image und die gleiche Konfiguration auf jedem Rechner eines Ingenieurs ausgeführt werden.

112 

113Claude Code liest `/etc/claude-code/managed-settings.json` auf Linux und wendet es mit der höchsten Priorität in der [Einstellungshierarchie](/de/settings#how-scopes-interact) an, daher überschreiben Werte dort alles, das ein Ingenieur in `~/.claude` oder dem `.claude/`-Verzeichnis des Projekts setzt. Kopieren Sie die Datei von Ihrem Dockerfile an den richtigen Ort:

114 

115```dockerfile Dockerfile theme={null}

116RUN mkdir -p /etc/claude-code

117COPY managed-settings.json /etc/claude-code/managed-settings.json

118```

119 

120Da das Dockerfile im Repository lebt, kann jeder mit Schreibzugriff diesen Schritt ändern oder entfernen. Für Richtlinien, die Ingenieure nicht umgehen können, indem sie Repository-Dateien bearbeiten, liefern Sie verwaltete Einstellungen über [server-verwaltete Einstellungen](/de/server-managed-settings) oder Ihr MDM statt. Siehe [verwaltete Einstellungsdateien](/de/settings#settings-files) für die verfügbaren Schlüssel und die anderen Lieferwege.

121 

122Um [Umgebungsvariablen](/de/env-vars) zu setzen, die für jede Claude Code-Sitzung im Container gelten, fügen Sie sie zu `containerEnv` in Ihrer `devcontainer.json` hinzu. Das folgende Beispiel deaktiviert Telemetrie und Fehlerberichterstattung und verhindert, dass Claude Code sich nach der Installation automatisch aktualisiert:

123 

124```json devcontainer.json theme={null}

125"containerEnv": {

126 "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",

127 "DISABLE_AUTOUPDATER": "1"

128}

129```

130 

131Die Dev Container Feature installiert immer die neueste Claude Code-Version. Um eine bestimmte Claude Code-Version für reproduzierbare Builds zu fixieren, installieren Sie sie von Ihrem Dockerfile mit `npm install -g @anthropic-ai/claude-code@X.Y.Z`, anstatt die Feature zu verwenden, und setzen Sie `DISABLE_AUTOUPDATER` wie oben gezeigt.

132 

133Für die vollständige Liste der Richtlinienkontrollen, einschließlich Berechtigungsregeln, Tool-Einschränkungen und MCP-Server-Allowlists, siehe [Richten Sie Claude Code für Ihre Organisation ein](/de/admin-setup).

134 

135Um [MCP-Server](/de/mcp) im Container verfügbar zu machen, definieren Sie sie im [Projekt-Scope](/de/mcp#mcp-installation-scopes) in einer `.mcp.json`-Datei im Repository-Root, damit sie zusammen mit Ihrer Dev Container-Konfiguration eingecheckt werden. Installieren Sie alle Binärdateien, von denen lokale Stdio-Server abhängen, in Ihrem Dockerfile, und fügen Sie Remote-Server-Domains zu Ihrer Netzwerk-Allowlist hinzu.

136 

137## Netzwerk-Egress einschränken

138 

139Sie können den ausgehenden Datenverkehr des Containers auf nur die Domains beschränken, die Claude Code benötigt. Siehe [Netzwerkzugriffsanforderungen](/de/network-config#network-access-requirements) für die Inferenz- und Authentifizierungsdomains, und [Telemetrie-Dienste](/de/data-usage#telemetry-services) für die optionalen Telemetrie- und Fehlerberichterstattungsverbindungen und wie man sie deaktiviert.

140 

141Der Referenz-Container enthält ein [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh)-Skript, das den gesamten ausgehenden Datenverkehr außer den Domains blockiert, die Claude Code und Ihre Entwicklungstools benötigen. Das Ausführen einer Firewall in einem Container erfordert zusätzliche Berechtigungen, daher fügt die Referenz die `NET_ADMIN`- und `NET_RAW`-Fähigkeiten über `runArgs` hinzu. Das Firewall-Skript und diese Fähigkeiten sind nicht erforderlich für Claude Code selbst: Sie können sie weglassen und sich stattdessen auf Ihre eigenen Netzwerkkontrollen verlassen.

142 

143## Ohne Berechtigungsaufforderungen ausführen

144 

145Da der Container Claude Code als Nicht-Root-Benutzer ausführt und die Befehlsausführung auf den Container beschränkt, können Sie `--dangerously-skip-permissions` für unbeaufsichtigte Operationen übergeben. Die CLI lehnt dieses Flag ab, wenn es als Root gestartet wird, daher bestätigen Sie, dass `remoteUser` auf ein Nicht-Root-Konto gesetzt ist.

146 

147Das Überspringen von Berechtigungsaufforderungen entfernt Ihre Gelegenheit, Tool-Aufrufe zu überprüfen, bevor sie ausgeführt werden. Claude kann immer noch jede Datei im eingebundenen Arbeitsbereich ändern, die direkt auf Ihrem Host angezeigt wird, und alles erreichen, das die Netzwerkrichtlinie des Containers erlaubt. Kombinieren Sie dieses Flag mit den [Netzwerk-Egress-Einschränkungen](#restrict-network-egress) oben, um zu begrenzen, was eine umgangene Sitzung erreichen kann.

148 

149Wenn Sie weniger Aufforderungen ohne Deaktivierung von Sicherheitsprüfungen möchten, erwägen Sie stattdessen [Auto-Modus](/de/permission-modes#eliminate-prompts-with-auto-mode), der einen Klassifizierer hat, der Aktionen überprüft, bevor sie ausgeführt werden. Um zu verhindern, dass Ingenieure `--dangerously-skip-permissions` überhaupt verwenden, setzen Sie `permissions.disableBypassPermissionsMode` auf `"disable"` in [verwalteten Einstellungen](/de/settings#permission-settings).

150 

151## Probieren Sie den Referenz-Container aus

152 

153Das [`anthropics/claude-code`](https://github.com/anthropics/claude-code/tree/main/.devcontainer)-Repository enthält einen Beispiel-Entwicklungscontainer, der die CLI, die Egress-Firewall, persistente Volumes und eine Zsh-basierte Shell kombiniert. Es wird als funktionierendes Beispiel bereitgestellt, anstatt als verwaltetes Basis-Image; verwenden Sie es, um zu sehen, wie die Teile zusammenpassen, bevor Sie sie auf Ihre eigene Konfiguration anwenden.

154 

155<Steps>

156 <Step title="Installieren Sie Voraussetzungen">

157 Installieren Sie VS Code und die [Dev Containers-Erweiterung](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers).

158 </Step>

159 

160 <Step title="Klonen Sie die Referenz">

161 Klonen Sie das [Claude Code-Repository](https://github.com/anthropics/claude-code) und öffnen Sie es in VS Code.

162 </Step>

163 

164 <Step title="Im Container erneut öffnen">

165 Wenn Sie dazu aufgefordert werden, klicken Sie auf **Im Container erneut öffnen**, oder führen Sie **Dev Containers: Im Container erneut öffnen** aus der Befehlspalette aus.

166 </Step>

167 

168 <Step title="Starten Sie Claude Code">

169 Sobald der Container fertig ist, öffnen Sie ein Terminal mit `` Ctrl+` `` und führen Sie `claude` aus, um sich anzumelden und Ihre erste Sitzung zu starten.

170 </Step>

171</Steps>

172 

173Um diese Konfiguration mit Ihrem eigenen Projekt zu verwenden, kopieren Sie das `.devcontainer/`-Verzeichnis in Ihr Repository und passen Sie das Dockerfile für Ihren Toolchain an, oder kehren Sie zu [Claude Code zu Ihrem Entwicklungscontainer hinzufügen](#add-claude-code-to-your-dev-container) zurück, um nur die Feature zu einer Einrichtung hinzuzufügen, die Sie bereits haben.

174 

175Die Referenzkonfiguration besteht aus drei Dateien. Keine davon sind erforderlich, wenn Sie Claude Code über die Feature zu Ihrem eigenen Entwicklungscontainer hinzufügen, aber sie zeigen eine Möglichkeit, die Teile zu kombinieren.

176 

177| Datei | Zweck |

178| ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |

179| [`devcontainer.json`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json) | Volume-Mounts, `runArgs`-Fähigkeiten, VS Code-Erweiterungen und `containerEnv` |

180| [`Dockerfile`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/Dockerfile) | Basis-Image, Entwicklungstools und die Claude Code-Installation |

181| [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh) | Blockiert den gesamten ausgehenden Netzwerkverkehr außer den zulässigen Domains |

182 

183## Nächste Schritte

184 

185Sobald Claude Code in Ihrem Entwicklungscontainer ausgeführt wird, behandeln die folgenden Seiten den Rest eines Organisations-Rollouts: Auswahl eines Authentifizierungswegs, Lieferung verwalteter Richtlinien außerhalb des Repositories, Überwachung der Nutzung und Verständnis dessen, was Claude Code speichert und sendet.

186 

187* [Richten Sie Claude Code für Ihre Organisation ein](/de/admin-setup): Wählen Sie einen Authentifizierungsanbieter, entscheiden Sie, wie Richtlinien Geräte erreichen, und planen Sie den Rollout

188* [Server-verwaltete Einstellungen](/de/server-managed-settings): Liefern Sie verwaltete Richtlinien aus der Claude.ai-Admin-Konsole, damit Ingenieure sie nicht umgehen können, indem sie Repository-Dateien bearbeiten

189* [Überwachen Sie die Nutzung und überprüfen Sie die Aktivität](/de/monitoring-usage): Exportieren Sie OpenTelemetry-Metriken und überprüfen Sie, was Ihr Team ausführt

190* [Netzwerkzugriffsanforderungen](/de/network-config#network-access-requirements): Die vollständige Domain-Allowlist für Proxys und Firewalls

191* [Telemetrie-Dienste und Opt-out](/de/data-usage#telemetry-services): Was Claude Code standardmäßig sendet und die Umgebungsvariablen, die es deaktivieren

192* [Erkunden Sie das `.claude`-Verzeichnis](/de/claude-directory): Was die Volume-Einbindung enthält, einschließlich Anmeldedaten, Einstellungen und Sitzungsverlauf

193* [Sicherheitsmodell](/de/security): Wie Claude Codes Berechtigungssystem, Sandboxing und Prompt-Injection-Schutz zusammenpassen

194* [Berechtigungsmodi](/de/permission-modes): Die vollständige Spanne von Plan-Modus bis Auto-Modus bis Bypass, und wann man jeden verwendet

discover-plugins.md +427 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Entdecken und installieren Sie vorgefertigte Plugins über Marktplätze

6 

7> Finden und installieren Sie Plugins aus Marktplätzen, um Claude Code mit neuen Befehlen, Agenten und Funktionen zu erweitern.

8 

9Plugins erweitern Claude Code mit skills, agents, hooks und MCP servers. Plugin-Marktplätze sind Kataloge, die Ihnen helfen, diese Erweiterungen zu entdecken und zu installieren, ohne sie selbst zu erstellen.

10 

11Möchten Sie Ihren eigenen Marktplatz erstellen und verteilen? Siehe [Erstellen und verteilen Sie einen Plugin-Marktplatz](/de/plugin-marketplaces).

12 

13## Wie Marktplätze funktionieren

14 

15Ein Marktplatz ist ein Katalog von Plugins, die jemand anderes erstellt und geteilt hat. Die Verwendung eines Marktplatzes ist ein zweistufiger Prozess:

16 

17<Steps>

18 <Step title="Fügen Sie den Marktplatz hinzu">

19 Dies registriert den Katalog bei Claude Code, damit Sie durchsuchen können, was verfügbar ist. Es werden noch keine Plugins installiert.

20 </Step>

21 

22 <Step title="Installieren Sie einzelne Plugins">

23 Durchsuchen Sie den Katalog und installieren Sie die Plugins, die Sie möchten.

24 </Step>

25</Steps>

26 

27Stellen Sie sich das vor wie das Hinzufügen eines App-Stores: Das Hinzufügen des Stores gibt Ihnen Zugriff zum Durchsuchen seiner Sammlung, aber Sie wählen immer noch aus, welche Apps Sie einzeln herunterladen möchten.

28 

29## Offizieller Anthropic-Marktplatz

30 

31Der offizielle Anthropic-Marktplatz (`claude-plugins-official`) ist automatisch verfügbar, wenn Sie Claude Code starten. Führen Sie `/plugin` aus und gehen Sie zur Registerkarte **Discover**, um zu sehen, was verfügbar ist, oder sehen Sie sich den Katalog unter [claude.com/plugins](https://claude.com/plugins) an.

32 

33Um ein Plugin aus dem offiziellen Marktplatz zu installieren, verwenden Sie `/plugin install <name>@claude-plugins-official`. Um beispielsweise die GitHub-Integration zu installieren:

34 

35```shell theme={null}

36/plugin install github@claude-plugins-official

37```

38 

39<Note>

40 Der offizielle Marktplatz wird von Anthropic gepflegt. Um ein Plugin beim offiziellen Marktplatz einzureichen, verwenden Sie eines der In-App-Einreichungsformulare:

41 

42 * **Claude.ai**: [claude.ai/settings/plugins/submit](https://claude.ai/settings/plugins/submit)

43 * **Console**: [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)

44 

45 Um Plugins unabhängig zu verteilen, [erstellen Sie Ihren eigenen Marktplatz](/de/plugin-marketplaces) und teilen Sie ihn mit Benutzern.

46</Note>

47 

48Der offizielle Marktplatz umfasst mehrere Plugin-Kategorien:

49 

50### Code-Intelligenz

51 

52Code-Intelligenz-Plugins aktivieren das integrierte LSP-Tool von Claude Code und geben Claude die Möglichkeit, zu Definitionen zu springen, Referenzen zu finden und Typfehler unmittelbar nach Änderungen zu sehen. Diese Plugins konfigurieren [Language Server Protocol](https://microsoft.github.io/language-server-protocol/)-Verbindungen, die gleiche Technologie, die die Code-Intelligenz von VS Code antreibt.

53 

54Diese Plugins erfordern, dass die Language-Server-Binärdatei auf Ihrem System installiert ist. Wenn Sie bereits einen Language Server installiert haben, kann Claude Sie möglicherweise auffordern, das entsprechende Plugin zu installieren, wenn Sie ein Projekt öffnen.

55 

56| Sprache | Plugin | Erforderliche Binärdatei |

57| :--------- | :------------------ | :--------------------------- |

58| C/C++ | `clangd-lsp` | `clangd` |

59| C# | `csharp-lsp` | `csharp-ls` |

60| Go | `gopls-lsp` | `gopls` |

61| Java | `jdtls-lsp` | `jdtls` |

62| Kotlin | `kotlin-lsp` | `kotlin-language-server` |

63| Lua | `lua-lsp` | `lua-language-server` |

64| PHP | `php-lsp` | `intelephense` |

65| Python | `pyright-lsp` | `pyright-langserver` |

66| Rust | `rust-analyzer-lsp` | `rust-analyzer` |

67| Swift | `swift-lsp` | `sourcekit-lsp` |

68| TypeScript | `typescript-lsp` | `typescript-language-server` |

69 

70Sie können auch [Ihr eigenes LSP-Plugin erstellen](/de/plugins-reference#lsp-servers) für andere Sprachen.

71 

72<Note>

73 Wenn Sie nach der Installation eines Plugins `Executable not found in $PATH` in der Registerkarte `/plugin` Errors sehen, installieren Sie die erforderliche Binärdatei aus der obigen Tabelle.

74</Note>

75 

76#### Was Claude von Code-Intelligenz-Plugins gewinnt

77 

78Sobald ein Code-Intelligenz-Plugin installiert ist und seine Language-Server-Binärdatei verfügbar ist, gewinnt Claude zwei Funktionen:

79 

80* **Automatische Diagnose**: Nach jeder Dateiänderung, die Claude vornimmt, analysiert der Language Server die Änderungen und meldet Fehler und Warnungen automatisch zurück. Claude sieht Typfehler, fehlende Importe und Syntaxprobleme, ohne einen Compiler oder Linter ausführen zu müssen. Wenn Claude einen Fehler einführt, bemerkt es das Problem und behebt es in derselben Runde. Dies erfordert keine Konfiguration über die Installation des Plugins hinaus. Sie können Diagnosen inline anzeigen, indem Sie **Strg+O** drücken, wenn der Indikator „Diagnosen gefunden" angezeigt wird.

81* **Code-Navigation**: Claude kann den Language Server verwenden, um zu Definitionen zu springen, Referenzen zu finden, Typinformationen beim Hover zu erhalten, Symbole aufzulisten, Implementierungen zu finden und Call-Hierarchien zu verfolgen. Diese Operationen geben Claude eine präzisere Navigation als grep-basierte Suche, obwohl die Verfügbarkeit je nach Sprache und Umgebung variieren kann.

82 

83Wenn Sie auf Probleme stoßen, siehe [Code-Intelligenz-Fehlerbehebung](#code-intelligence-issues).

84 

85### Externe Integrationen

86 

87Diese Plugins bündeln vorkonfigurierte [MCP servers](/de/mcp), damit Sie Claude mit externen Diensten verbinden können, ohne manuelle Einrichtung:

88 

89* **Quellcodeverwaltung**: `github`, `gitlab`

90* **Projektmanagement**: `atlassian` (Jira/Confluence), `asana`, `linear`, `notion`

91* **Design**: `figma`

92* **Infrastruktur**: `vercel`, `firebase`, `supabase`

93* **Kommunikation**: `slack`

94* **Überwachung**: `sentry`

95 

96### Entwicklungs-Workflows

97 

98Plugins, die Befehle und Agenten für häufige Entwicklungsaufgaben hinzufügen:

99 

100* **commit-commands**: Git-Commit-Workflows einschließlich Commit, Push und PR-Erstellung

101* **pr-review-toolkit**: Spezialisierte Agenten für die Überprüfung von Pull Requests

102* **agent-sdk-dev**: Tools zum Erstellen mit dem Claude Agent SDK

103* **plugin-dev**: Toolkit zum Erstellen Ihrer eigenen Plugins

104 

105### Ausgabestile

106 

107Passen Sie an, wie Claude antwortet:

108 

109* **explanatory-output-style**: Pädagogische Einblicke in Implementierungsentscheidungen

110* **learning-output-style**: Interaktiver Lernmodus zum Aufbau von Fähigkeiten

111 

112## Probieren Sie es aus: Fügen Sie den Demo-Marktplatz hinzu

113 

114Anthropic verwaltet auch einen [Demo-Plugins-Marktplatz](https://github.com/anthropics/claude-code/tree/main/plugins) (`claude-code-plugins`) mit Beispiel-Plugins, die zeigen, was mit dem Plugin-System möglich ist. Im Gegensatz zum offiziellen Marktplatz müssen Sie diesen manuell hinzufügen.

115 

116<Steps>

117 <Step title="Fügen Sie den Marktplatz hinzu">

118 Führen Sie in Claude Code den Befehl `plugin marketplace add` für den Marktplatz `anthropics/claude-code` aus:

119 

120 ```shell theme={null}

121 /plugin marketplace add anthropics/claude-code

122 ```

123 

124 Dies lädt den Marktplatz-Katalog herunter und macht seine Plugins für Sie verfügbar.

125 </Step>

126 

127 <Step title="Durchsuchen Sie verfügbare Plugins">

128 Führen Sie `/plugin` aus, um den Plugin-Manager zu öffnen. Dies öffnet eine Schnittstelle mit Registerkarten mit vier Registerkarten, die Sie mit **Tab** durchlaufen können (oder **Shift+Tab**, um rückwärts zu gehen):

129 

130 * **Discover**: Durchsuchen Sie verfügbare Plugins aus allen Ihren Marktplätzen

131 * **Installed**: Zeigen Sie Ihre installierten Plugins an und verwalten Sie sie

132 * **Marketplaces**: Fügen Sie Marktplätze hinzu, entfernen Sie sie oder aktualisieren Sie sie

133 * **Errors**: Zeigen Sie alle Plugin-Ladefehler an

134 

135 Gehen Sie zur Registerkarte **Discover**, um Plugins aus dem Marktplatz zu sehen, den Sie gerade hinzugefügt haben.

136 </Step>

137 

138 <Step title="Installieren Sie ein Plugin">

139 Wählen Sie ein Plugin aus, um seine Details anzuzeigen, und wählen Sie dann einen Installationsbereich:

140 

141 * **User scope**: Installieren Sie für sich selbst in allen Projekten

142 * **Project scope**: Installieren Sie für alle Mitarbeiter in diesem Repository

143 * **Local scope**: Installieren Sie für sich selbst nur in diesem Repository

144 

145 Wählen Sie beispielsweise **commit-commands** (ein Plugin, das Git-Workflow-Befehle hinzufügt) und installieren Sie es in Ihrem Benutzerbereich.

146 

147 Sie können auch direkt über die Befehlszeile installieren:

148 

149 ```shell theme={null}

150 /plugin install commit-commands@anthropics-claude-code

151 ```

152 

153 Siehe [Konfigurationsbereiche](/de/settings#configuration-scopes), um mehr über Bereiche zu erfahren.

154 </Step>

155 

156 <Step title="Verwenden Sie Ihr neues Plugin">

157 Nach der Installation führen Sie `/reload-plugins` aus, um das Plugin zu aktivieren. Plugin-Befehle werden nach dem Plugin-Namen benannt, daher bietet **commit-commands** Befehle wie `/commit-commands:commit`.

158 

159 Probieren Sie es aus, indem Sie eine Änderung an einer Datei vornehmen und ausführen:

160 

161 ```shell theme={null}

162 /commit-commands:commit

163 ```

164 

165 Dies stellt Ihre Änderungen bereit, generiert eine Commit-Nachricht und erstellt den Commit.

166 

167 Jedes Plugin funktioniert anders. Überprüfen Sie die Beschreibung des Plugins in der Registerkarte **Discover** oder auf seiner Homepage, um zu erfahren, welche Befehle und Funktionen es bietet.

168 </Step>

169</Steps>

170 

171Der Rest dieses Leitfadens behandelt alle Möglichkeiten, wie Sie Marktplätze hinzufügen, Plugins installieren und Ihre Konfiguration verwalten können.

172 

173## Marktplätze hinzufügen

174 

175Verwenden Sie den Befehl `/plugin marketplace add`, um Marktplätze aus verschiedenen Quellen hinzuzufügen.

176 

177<Tip>

178 **Verknüpfungen**: Sie können `/plugin market` anstelle von `/plugin marketplace` verwenden und `rm` anstelle von `remove`.

179</Tip>

180 

181* **GitHub-Repositories**: Format `owner/repo` (z. B. `anthropics/claude-code`)

182* **Git-URLs**: Beliebige Git-Repository-URL (GitLab, Bitbucket, selbstgehostet)

183* **Lokale Pfade**: Verzeichnisse oder direkte Pfade zu `marketplace.json`-Dateien

184* **Remote-URLs**: Direkte URLs zu gehosteten `marketplace.json`-Dateien

185 

186### Hinzufügen von GitHub

187 

188Fügen Sie ein GitHub-Repository hinzu, das eine `.claude-plugin/marketplace.json`-Datei enthält, indem Sie das Format `owner/repo` verwenden – wobei `owner` der GitHub-Benutzername oder die Organisation und `repo` der Repository-Name ist.

189 

190Beispielsweise bezieht sich `anthropics/claude-code` auf das Repository `claude-code`, das sich im Besitz von `anthropics` befindet:

191 

192```shell theme={null}

193/plugin marketplace add anthropics/claude-code

194```

195 

196### Hinzufügen von anderen Git-Hosts

197 

198Fügen Sie ein beliebiges Git-Repository hinzu, indem Sie die vollständige URL angeben. Dies funktioniert mit jedem Git-Host, einschließlich GitLab, Bitbucket und selbstgehosteten Servern:

199 

200Mit HTTPS:

201 

202```shell theme={null}

203/plugin marketplace add https://gitlab.com/company/plugins.git

204```

205 

206Mit SSH:

207 

208```shell theme={null}

209/plugin marketplace add git@gitlab.com:company/plugins.git

210```

211 

212Um einen bestimmten Branch oder Tag hinzuzufügen, hängen Sie `#` gefolgt von der Referenz an:

213 

214```shell theme={null}

215/plugin marketplace add https://gitlab.com/company/plugins.git#v1.0.0

216```

217 

218### Hinzufügen von lokalen Pfaden

219 

220Fügen Sie ein lokales Verzeichnis hinzu, das eine `.claude-plugin/marketplace.json`-Datei enthält:

221 

222```shell theme={null}

223/plugin marketplace add ./my-marketplace

224```

225 

226Sie können auch einen direkten Pfad zu einer `marketplace.json`-Datei hinzufügen:

227 

228```shell theme={null}

229/plugin marketplace add ./path/to/marketplace.json

230```

231 

232### Hinzufügen von Remote-URLs

233 

234Fügen Sie eine Remote-`marketplace.json`-Datei über URL hinzu:

235 

236```shell theme={null}

237/plugin marketplace add https://example.com/marketplace.json

238```

239 

240<Note>

241 URL-basierte Marktplätze haben einige Einschränkungen im Vergleich zu Git-basierten Marktplätzen. Wenn beim Installieren von Plugins Fehler „Pfad nicht gefunden" auftreten, siehe [Fehlerbehebung](/de/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces).

242</Note>

243 

244## Installieren Sie Plugins

245 

246Nachdem Sie Marktplätze hinzugefügt haben, können Sie Plugins direkt installieren (wird standardmäßig im Benutzerbereich installiert):

247 

248```shell theme={null}

249/plugin install plugin-name@marketplace-name

250```

251 

252Um einen anderen [Installationsbereich](/de/settings#configuration-scopes) zu wählen, verwenden Sie die interaktive Benutzeroberfläche: Führen Sie `/plugin` aus, gehen Sie zur Registerkarte **Discover**, und drücken Sie **Enter** auf einem Plugin. Sie sehen Optionen für:

253 

254* **User scope** (Standard): Installieren Sie für sich selbst in allen Projekten

255* **Project scope**: Installieren Sie für alle Mitarbeiter in diesem Repository (fügt zu `.claude/settings.json` hinzu)

256* **Local scope**: Installieren Sie für sich selbst nur in diesem Repository (nicht mit Mitarbeitern geteilt)

257 

258Sie können auch Plugins mit **managed**-Bereich sehen – diese werden von Administratoren über [verwaltete Einstellungen](/de/settings#settings-files) installiert und können nicht geändert werden.

259 

260Führen Sie `/plugin` aus und gehen Sie zur Registerkarte **Installed**, um Ihre Plugins nach Bereich gruppiert zu sehen.

261 

262<Warning>

263 Stellen Sie sicher, dass Sie einem Plugin vertrauen, bevor Sie es installieren. Anthropic kontrolliert nicht, welche MCP servers, Dateien oder andere Software in Plugins enthalten sind, und kann nicht überprüfen, dass sie wie beabsichtigt funktionieren. Überprüfen Sie die Homepage jedes Plugins für weitere Informationen.

264</Warning>

265 

266## Verwalten Sie installierte Plugins

267 

268Führen Sie `/plugin` aus und gehen Sie zur Registerkarte **Installed**, um Ihre Plugins anzuzeigen, zu aktivieren, zu deaktivieren oder zu deinstallieren. Geben Sie ein, um die Liste nach Plugin-Name oder Beschreibung zu filtern.

269 

270Sie können Plugins auch mit direkten Befehlen verwalten.

271 

272Deaktivieren Sie ein Plugin, ohne es zu deinstallieren:

273 

274```shell theme={null}

275/plugin disable plugin-name@marketplace-name

276```

277 

278Aktivieren Sie ein deaktiviertes Plugin erneut:

279 

280```shell theme={null}

281/plugin enable plugin-name@marketplace-name

282```

283 

284Entfernen Sie ein Plugin vollständig:

285 

286```shell theme={null}

287/plugin uninstall plugin-name@marketplace-name

288```

289 

290Die Option `--scope` ermöglicht es Ihnen, einen bestimmten Bereich mit CLI-Befehlen anzusteuern:

291 

292```shell theme={null}

293claude plugin install formatter@your-org --scope project

294claude plugin uninstall formatter@your-org --scope project

295```

296 

297### Wenden Sie Plugin-Änderungen an, ohne neu zu starten

298 

299Wenn Sie während einer Sitzung Plugins installieren, aktivieren oder deaktivieren, führen Sie `/reload-plugins` aus, um alle Änderungen ohne Neustart zu aktivieren:

300 

301```shell theme={null}

302/reload-plugins

303```

304 

305Claude Code lädt alle aktiven Plugins neu und zeigt Zählungen für Plugins, skills, Agenten, hooks, Plugin-MCP-Server und Plugin-LSP-Server an.

306 

307## Verwalten Sie Marktplätze

308 

309Sie können Marktplätze über die interaktive `/plugin`-Schnittstelle oder mit CLI-Befehlen verwalten.

310 

311### Verwenden Sie die interaktive Schnittstelle

312 

313Führen Sie `/plugin` aus und gehen Sie zur Registerkarte **Marketplaces**, um:

314 

315* Alle Ihre hinzugefügten Marktplätze mit ihren Quellen und Status anzuzeigen

316* Neue Marktplätze hinzuzufügen

317* Marktplatz-Auflistungen aktualisieren, um die neuesten Plugins abzurufen

318* Marktplätze zu entfernen, die Sie nicht mehr benötigen

319 

320### Verwenden Sie CLI-Befehle

321 

322Sie können Marktplätze auch mit direkten Befehlen verwalten.

323 

324Listet alle konfigurierten Marktplätze auf:

325 

326```shell theme={null}

327/plugin marketplace list

328```

329 

330Aktualisieren Sie Plugin-Auflistungen von einem Marktplatz:

331 

332```shell theme={null}

333/plugin marketplace update marketplace-name

334```

335 

336Entfernen Sie einen Marktplatz:

337 

338```shell theme={null}

339/plugin marketplace remove marketplace-name

340```

341 

342<Warning>

343 Das Entfernen eines Marktplatzes deinstalliert alle Plugins, die Sie von ihm installiert haben.

344</Warning>

345 

346### Konfigurieren Sie automatische Updates

347 

348Claude Code kann Marktplätze und ihre installierten Plugins beim Start automatisch aktualisieren. Wenn die automatische Aktualisierung für einen Marktplatz aktiviert ist, aktualisiert Claude Code die Marktplatzdaten und aktualisiert installierte Plugins auf ihre neuesten Versionen. Wenn Plugins aktualisiert wurden, sehen Sie eine Benachrichtigung, die Sie auffordert, `/reload-plugins` auszuführen.

349 

350Schalten Sie die automatische Aktualisierung für einzelne Marktplätze über die Benutzeroberfläche um:

351 

3521. Führen Sie `/plugin` aus, um den Plugin-Manager zu öffnen

3532. Wählen Sie **Marketplaces**

3543. Wählen Sie einen Marktplatz aus der Liste

3554. Wählen Sie **Enable auto-update** oder **Disable auto-update**

356 

357Offizielle Anthropic-Marktplätze haben die automatische Aktualisierung standardmäßig aktiviert. Marktplätze von Drittanbietern und lokale Entwicklungsmarktplätze haben die automatische Aktualisierung standardmäßig deaktiviert.

358 

359Um alle automatischen Updates vollständig für Claude Code und alle Plugins zu deaktivieren, setzen Sie die Umgebungsvariable `DISABLE_AUTOUPDATER`. Siehe [Automatische Updates](/de/setup#auto-updates) für Details.

360 

361Um Plugin-Auto-Updates aktiviert zu halten und gleichzeitig Claude Code-Auto-Updates zu deaktivieren, setzen Sie `FORCE_AUTOUPDATE_PLUGINS=1` zusammen mit `DISABLE_AUTOUPDATER`:

362 

363```bash theme={null}

364export DISABLE_AUTOUPDATER=1

365export FORCE_AUTOUPDATE_PLUGINS=1

366```

367 

368Dies ist nützlich, wenn Sie Claude Code-Updates manuell verwalten möchten, aber immer noch automatische Plugin-Updates erhalten möchten.

369 

370## Konfigurieren Sie Team-Marktplätze

371 

372Team-Administratoren können die automatische Marktplatz-Installation für Projekte einrichten, indem sie Marktplatz-Konfiguration zu `.claude/settings.json` hinzufügen. Wenn Team-Mitglieder dem Repository-Ordner vertrauen, fordert Claude Code sie auf, diese Marktplätze und Plugins zu installieren.

373 

374Fügen Sie `extraKnownMarketplaces` zu Ihrer Projekt-`.claude/settings.json` hinzu:

375 

376```json theme={null}

377{

378 "extraKnownMarketplaces": {

379 "my-team-tools": {

380 "source": {

381 "source": "github",

382 "repo": "your-org/claude-plugins"

383 }

384 }

385 }

386}

387```

388 

389Für vollständige Konfigurationsoptionen einschließlich `extraKnownMarketplaces` und `enabledPlugins` siehe [Plugin-Einstellungen](/de/settings#plugin-settings).

390 

391## Sicherheit

392 

393Plugins und Marktplätze sind hochgradig vertrauenswürdige Komponenten, die beliebigen Code auf Ihrem Computer mit Ihren Benutzerrechten ausführen können. Installieren Sie nur Plugins und fügen Sie Marktplätze aus Quellen hinzu, denen Sie vertrauen. Organisationen können einschränken, welche Marktplätze Benutzer hinzufügen dürfen, indem sie [verwaltete Marktplatz-Einschränkungen](/de/plugin-marketplaces#managed-marketplace-restrictions) verwenden.

394 

395## Fehlerbehebung

396 

397### /plugin-Befehl nicht erkannt

398 

399Wenn Sie „unknown command" sehen oder der `/plugin`-Befehl nicht angezeigt wird:

400 

4011. **Überprüfen Sie Ihre Version**: Führen Sie `claude --version` aus, um zu sehen, was installiert ist.

4022. **Aktualisieren Sie Claude Code**:

403 * **Homebrew**: `brew upgrade claude-code`

404 * **npm**: `npm update -g @anthropic-ai/claude-code`

405 * **Native Installer**: Führen Sie den Installationsbefehl von [Setup](/de/setup) erneut aus

4063. **Starten Sie Claude Code neu**: Starten Sie nach dem Update Ihr Terminal neu und führen Sie `claude` erneut aus.

407 

408### Häufige Probleme

409 

410* **Marktplatz wird nicht geladen**: Überprüfen Sie, dass die URL zugänglich ist und dass `.claude-plugin/marketplace.json` unter dem Pfad vorhanden ist

411* **Plugin-Installationsfehler**: Überprüfen Sie, dass Plugin-Quell-URLs zugänglich sind und Repositories öffentlich sind (oder Sie haben Zugriff)

412* **Dateien nach der Installation nicht gefunden**: Plugins werden in einen Cache kopiert, daher funktionieren Pfade, die auf Dateien außerhalb des Plugin-Verzeichnisses verweisen, nicht

413* **Plugin-Skills werden nicht angezeigt**: Löschen Sie den Cache mit `rm -rf ~/.claude/plugins/cache`, starten Sie Claude Code neu und installieren Sie das Plugin erneut.

414 

415Für detaillierte Fehlerbehebung mit Lösungen siehe [Fehlerbehebung](/de/plugin-marketplaces#troubleshooting) im Marktplatz-Leitfaden. Für Debugging-Tools siehe [Debugging- und Entwicklungstools](/de/plugins-reference#debugging-and-development-tools).

416 

417### Code-Intelligenz-Probleme

418 

419* **Language Server startet nicht**: Überprüfen Sie, dass die Binärdatei installiert ist und in Ihrem `$PATH` verfügbar ist. Überprüfen Sie die Registerkarte `/plugin` Errors für Details.

420* **Hohe Speichernutzung**: Language Server wie `rust-analyzer` und `pyright` können bei großen Projekten erhebliche Speichermengen verbrauchen. Wenn Sie Speicherprobleme haben, deaktivieren Sie das Plugin mit `/plugin disable <plugin-name>` und verlassen Sie sich stattdessen auf Claudes integrierte Suchtools.

421* **Falsch positive Diagnosen in Monorepos**: Language Server können ungelöste Importfehler für interne Pakete melden, wenn der Arbeitsbereich nicht richtig konfiguriert ist. Diese beeinflussen nicht Claudes Fähigkeit, Code zu bearbeiten.

422 

423## Nächste Schritte

424 

425* **Erstellen Sie Ihre eigenen Plugins**: Siehe [Plugins](/de/plugins), um skills, agents und hooks zu erstellen

426* **Erstellen Sie einen Marktplatz**: Siehe [Erstellen Sie einen Plugin-Marktplatz](/de/plugin-marketplaces), um Plugins an Ihr Team oder Ihre Community zu verteilen

427* **Technische Referenz**: Siehe [Plugins-Referenz](/de/plugins-reference) für vollständige Spezifikationen

env-vars.md +238 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Umgebungsvariablen

6 

7> Vollständige Referenz für Umgebungsvariablen, die das Verhalten von Claude Code steuern.

8 

9Claude Code unterstützt die folgenden Umgebungsvariablen zur Steuerung seines Verhaltens. Setzen Sie diese in Ihrer Shell, bevor Sie `claude` starten, oder konfigurieren Sie sie in [`settings.json`](/de/settings#available-settings) unter dem Schlüssel `env`, um sie auf jede Sitzung anzuwenden oder in Ihrem Team bereitzustellen.

10 

11| Variable | Zweck |

12| :------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

13| `ANTHROPIC_API_KEY` | API-Schlüssel, der als `X-Api-Key`-Header gesendet wird. Wenn gesetzt, wird dieser Schlüssel anstelle Ihres Claude Pro-, Max-, Team- oder Enterprise-Abonnements verwendet, auch wenn Sie angemeldet sind. Im nicht-interaktiven Modus (`-p`) wird der Schlüssel immer verwendet, wenn er vorhanden ist. Im interaktiven Modus werden Sie aufgefordert, den Schlüssel einmalig zu genehmigen, bevor er Ihr Abonnement überschreibt. Um stattdessen Ihr Abonnement zu verwenden, führen Sie `unset ANTHROPIC_API_KEY` aus |

14| `ANTHROPIC_AUTH_TOKEN` | Benutzerdefinierter Wert für den `Authorization`-Header (der hier gesetzte Wert wird mit `Bearer ` vorangestellt) |

15| `ANTHROPIC_BASE_URL` | Überschreiben Sie den API-Endpunkt, um Anfragen durch einen Proxy oder ein Gateway zu leiten. Wenn auf einen Nicht-First-Party-Host gesetzt, ist die [MCP-Tool-Suche](/de/mcp#scale-with-mcp-tool-search) standardmäßig deaktiviert. Setzen Sie `ENABLE_TOOL_SEARCH=true`, wenn Ihr Proxy `tool_reference`-Blöcke weiterleitet |

16| `ANTHROPIC_BEDROCK_BASE_URL` | Überschreiben Sie die Bedrock-Endpunkt-URL. Verwenden Sie für benutzerdefinierte Bedrock-Endpunkte oder beim Routing durch ein [LLM-Gateway](/de/llm-gateway). Siehe [Amazon Bedrock](/de/amazon-bedrock) |

17| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Überschreiben Sie die Bedrock Mantle-Endpunkt-URL. Siehe [Mantle-Endpunkt](/de/amazon-bedrock#use-the-mantle-endpoint) |

18| `ANTHROPIC_BEDROCK_SERVICE_TIER` | Bedrock [Service-Tier](https://docs.aws.amazon.com/bedrock/latest/userguide/service-tiers-inference.html) (`default`, `flex` oder `priority`). Wird als `X-Amzn-Bedrock-Service-Tier`-Header gesendet. Siehe [Amazon Bedrock](/de/amazon-bedrock#service-tiers) |

19| `ANTHROPIC_BETAS` | Kommagetrennte Liste zusätzlicher `anthropic-beta`-Header-Werte, die in API-Anfragen einzubeziehen sind. Claude Code sendet bereits die Beta-Header, die es benötigt; verwenden Sie dies, um sich für ein [Anthropic API Beta](https://platform.claude.com/docs/en/api/beta-headers) anzumelden, bevor Claude Code native Unterstützung hinzufügt. Im Gegensatz zum [`--betas`-Flag](/de/cli-reference#cli-flags), das API-Schlüssel-Authentifizierung erfordert, funktioniert diese Variable mit allen Authentifizierungsmethoden, einschließlich Claude.ai-Abonnement |

20| `ANTHROPIC_CUSTOM_HEADERS` | Benutzerdefinierte Header, die zu Anfragen hinzugefügt werden (Format `Name: Value`, durch Zeilenumbruch getrennt für mehrere Header) |

21| `ANTHROPIC_CUSTOM_MODEL_OPTION` | Modell-ID, die als benutzerdefinierter Eintrag in der `/model`-Auswahl hinzugefügt werden soll. Verwenden Sie dies, um ein nicht standardisiertes oder Gateway-spezifisches Modell auswählbar zu machen, ohne integrierte Aliase zu ersetzen. Siehe [Modellkonfiguration](/de/model-config#add-a-custom-model-option) |

22| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | Anzeigenbeschreibung für den benutzerdefinierten Modelleintrag in der `/model`-Auswahl. Standardmäßig `Custom model (<model-id>)`, wenn nicht gesetzt |

23| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | Anzeigename für den benutzerdefinierten Modelleintrag in der `/model`-Auswahl. Standardmäßig die Modell-ID, wenn nicht gesetzt |

24| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | Siehe [Modellkonfiguration](/de/model-config#customize-pinned-model-display-and-capabilities) |

25| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Siehe [Modellkonfiguration](/de/model-config#environment-variables) |

26| `ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION` | Siehe [Modellkonfiguration](/de/model-config#customize-pinned-model-display-and-capabilities) |

27| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | Siehe [Modellkonfiguration](/de/model-config#customize-pinned-model-display-and-capabilities) |

28| `ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES` | Siehe [Modellkonfiguration](/de/model-config#customize-pinned-model-display-and-capabilities) |

29| `ANTHROPIC_DEFAULT_OPUS_MODEL` | Siehe [Modellkonfiguration](/de/model-config#environment-variables) |

30| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Siehe [Modellkonfiguration](/de/model-config#customize-pinned-model-display-and-capabilities) |

31| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | Siehe [Modellkonfiguration](/de/model-config#customize-pinned-model-display-and-capabilities) |

32| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Siehe [Modellkonfiguration](/de/model-config#customize-pinned-model-display-and-capabilities) |

33| `ANTHROPIC_DEFAULT_SONNET_MODEL` | Siehe [Modellkonfiguration](/de/model-config#environment-variables) |

34| `ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION` | Siehe [Modellkonfiguration](/de/model-config#customize-pinned-model-display-and-capabilities) |

35| `ANTHROPIC_DEFAULT_SONNET_MODEL_NAME` | Siehe [Modellkonfiguration](/de/model-config#customize-pinned-model-display-and-capabilities) |

36| `ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES` | Siehe [Modellkonfiguration](/de/model-config#customize-pinned-model-display-and-capabilities) |

37| `ANTHROPIC_FOUNDRY_API_KEY` | API-Schlüssel für Microsoft Foundry-Authentifizierung (siehe [Microsoft Foundry](/de/microsoft-foundry)) |

38| `ANTHROPIC_FOUNDRY_BASE_URL` | Vollständige Basis-URL für die Foundry-Ressource (z. B. `https://my-resource.services.ai.azure.com/anthropic`). Alternative zu `ANTHROPIC_FOUNDRY_RESOURCE` (siehe [Microsoft Foundry](/de/microsoft-foundry)) |

39| `ANTHROPIC_FOUNDRY_RESOURCE` | Foundry-Ressourcenname (z. B. `my-resource`). Erforderlich, wenn `ANTHROPIC_FOUNDRY_BASE_URL` nicht gesetzt ist (siehe [Microsoft Foundry](/de/microsoft-foundry)) |

40| `ANTHROPIC_MODEL` | Name der zu verwendenden Modelleinstellung (siehe [Modellkonfiguration](/de/model-config#environment-variables)) |

41| `ANTHROPIC_SMALL_FAST_MODEL` | \[VERALTET] Name des [Haiku-Klasse-Modells für Hintergrundaufgaben](/de/costs) |

42| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | AWS-Region für das Haiku-Klasse-Modell bei Verwendung von Bedrock oder Bedrock Mantle überschreiben |

43| `ANTHROPIC_VERTEX_BASE_URL` | Überschreiben Sie die Vertex AI-Endpunkt-URL. Verwenden Sie für benutzerdefinierte Vertex-Endpunkte oder beim Routing durch ein [LLM-Gateway](/de/llm-gateway). Siehe [Google Vertex AI](/de/google-vertex-ai) |

44| `ANTHROPIC_VERTEX_PROJECT_ID` | GCP-Projekt-ID für Vertex AI. Erforderlich bei Verwendung von [Google Vertex AI](/de/google-vertex-ai) |

45| `API_TIMEOUT_MS` | Timeout für API-Anfragen in Millisekunden (Standard: 600000 oder 10 Minuten; Maximum: 2147483647). Erhöhen Sie dies, wenn Anfragen bei langsamen Netzwerken oder beim Routing durch einen Proxy Timeout-Fehler verursachen. Werte über dem Maximum führen zu Überläufen des zugrunde liegenden Timers und verursachen, dass Anfragen sofort fehlschlagen |

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

47| `BASH_DEFAULT_TIMEOUT_MS` | Standard-Timeout für lang laufende Bash-Befehle (Standard: 120000 oder 2 Minuten) |

48| `BASH_MAX_OUTPUT_LENGTH` | Maximale Anzahl von Zeichen in Bash-Ausgaben, bevor sie in der Mitte gekürzt werden |

49| `BASH_MAX_TIMEOUT_MS` | Maximales Timeout, das das Modell für lang laufende Bash-Befehle setzen kann (Standard: 600000 oder 10 Minuten) |

50| `CCR_FORCE_BUNDLE` | Setzen Sie auf `1`, um [`claude --remote`](/de/claude-code-on-the-web#send-local-repositories-without-github) zu erzwingen, Ihr lokales Repository zu bündeln und hochzuladen, auch wenn GitHub-Zugriff verfügbar ist |

51| `CLAUDECODE` | Auf `1` in Shell-Umgebungen gesetzt, die Claude Code spawnt (Bash-Tool, tmux-Sitzungen). Nicht gesetzt in [Hooks](/de/hooks) oder [Statuszeilen](/de/statusline)-Befehlen. Verwenden Sie, um zu erkennen, wenn ein Skript in einer Shell ausgeführt wird, die von Claude Code gespawnt wurde |

52| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Setzen Sie auf `1`, um alle integrierten [Subagenten](/de/sub-agents)-Typen wie Explore und Plan zu deaktivieren. Gilt nur im nicht-interaktiven Modus (das Flag `-p`). Nützlich für SDK-Benutzer, die eine leere Grundlage wünschen |

53| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Setzen Sie auf `1`, um das Präfix `mcp__<server>__` bei Tool-Namen von SDK-erstellten MCP-Servern zu überspringen. Tools verwenden ihre ursprünglichen Namen. Nur SDK-Verwendung |

54| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Legen Sie den Prozentsatz der Kontextkapazität (1-100) fest, bei dem die automatische Komprimierung ausgelöst wird. Standardmäßig wird die automatische Komprimierung bei etwa 95 % Kapazität ausgelöst. Verwenden Sie niedrigere Werte wie `50`, um früher zu komprimieren. Werte über dem Standard-Schwellenwert haben keine Auswirkung. Gilt für Hauptkonversationen und Subagenten. Dieser Prozentsatz entspricht dem Feld `context_window.used_percentage`, das in der [Statuszeile](/de/statusline) verfügbar ist |

55| `CLAUDE_AUTO_BACKGROUND_TASKS` | Setzen Sie auf `1`, um die automatische Hintergrund-Ausführung von lang laufenden Agent-Aufgaben zu erzwingen. Wenn aktiviert, werden Subagenten nach etwa zwei Minuten Laufzeit in den Hintergrund verschoben |

56| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | Kehren Sie nach jedem Bash- oder PowerShell-Befehl in der Hauptsitzung zum ursprünglichen Arbeitsverzeichnis zurück |

57| `CLAUDE_CODE_ACCESSIBILITY` | Setzen Sie auf `1`, um den nativen Terminal-Cursor sichtbar zu halten und den invertierten Text-Cursor-Indikator zu deaktivieren. Ermöglicht Bildschirmlupenfunktionen wie macOS Zoom, die Cursor-Position zu verfolgen |

58| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | Setzen Sie auf `1`, um Speicherdateien aus Verzeichnissen zu laden, die mit `--add-dir` angegeben sind. Lädt `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md` und `CLAUDE.local.md`. Standardmäßig laden zusätzliche Verzeichnisse keine Speicherdateien |

59| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Intervall in Millisekunden, in dem Anmeldedaten aktualisiert werden sollten (bei Verwendung von [`apiKeyHelper`](/de/settings#available-settings)) |

60| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Setzen Sie auf `0`, um den Attributionsblock (Client-Version und Prompt-Fingerabdruck) vom Anfang des System-Prompts wegzulassen. Das Deaktivieren verbessert die Prompt-Cache-Hit-Raten beim Routing durch ein [LLM-Gateway](/de/llm-gateway). Anthropic API-Caching ist nicht betroffen |

61| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Legen Sie die Kontextkapazität in Token fest, die für Berechnungen der automatischen Komprimierung verwendet wird. Standardmäßig das Kontextfenster des Modells: 200K für Standard-Modelle oder 1M für [erweiterte Kontext](/de/model-config#extended-context)-Modelle. Verwenden Sie einen niedrigeren Wert wie `500000` auf einem 1M-Modell, um das Fenster für Komprimierungszwecke als 500K zu behandeln. Der Wert ist auf das tatsächliche Kontextfenster des Modells begrenzt. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` wird als Prozentsatz dieses Wertes angewendet. Das Setzen dieser Variablen entkoppelt den Komprimierungsschwellenwert von der `used_percentage` der Statuszeile, die immer das vollständige Kontextfenster des Modells verwendet |

62| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Überschreiben Sie die automatische [IDE-Verbindung](/de/vs-code). Standardmäßig verbindet sich Claude Code automatisch, wenn es im integrierten Terminal einer unterstützten IDE gestartet wird. Setzen Sie auf `false`, um dies zu verhindern. Setzen Sie auf `true`, um eine Verbindung zu erzwingen, wenn die automatische Erkennung fehlschlägt, z. B. wenn tmux das übergeordnete Terminal verdeckt |

63| `CLAUDE_CODE_CERT_STORE` | Kommagetrennte Liste von CA-Zertifikatquellen für TLS-Verbindungen. `bundled` ist der Mozilla CA-Satz, der mit Claude Code ausgeliefert wird. `system` ist der Betriebssystem-Vertrauensspeicher. Standard ist `bundled,system`. Die native Binärverteilung ist erforderlich für die Systemspeicher-Integration. In der Node.js-Laufzeit wird unabhängig von diesem Wert nur der gebündelte Satz verwendet |

64| `CLAUDE_CODE_CLIENT_CERT` | Pfad zur Client-Zertifikatsdatei für mTLS-Authentifizierung |

65| `CLAUDE_CODE_CLIENT_KEY` | Pfad zur privaten Client-Schlüsseldatei für mTLS-Authentifizierung |

66| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | Passphrase für verschlüsselten CLAUDE\_CODE\_CLIENT\_KEY (optional) |

67| `CLAUDE_CODE_DEBUG_LOGS_DIR` | Überschreiben Sie den Pfad der Debug-Protokolldatei. Trotz des Namens ist dies ein Dateipfad, kein Verzeichnis. Erfordert, dass der Debug-Modus separat über `--debug` oder `/debug` aktiviert wird: Das Setzen dieser Variablen allein aktiviert keine Protokollierung. Das Flag [`--debug-file`](/de/cli-reference#cli-flags) macht beides auf einmal. Standardmäßig `~/.claude/debug/<session-id>.txt` |

68| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Minimale Protokollierungsstufe, die in die Debug-Protokolldatei geschrieben wird. Werte: `verbose`, `debug` (Standard), `info`, `warn`, `error`. Setzen Sie auf `verbose`, um hochvolumige Diagnosen wie vollständige Statuszeilen-Befehlsausgabe einzubeziehen, oder erhöhen Sie auf `error`, um Rauschen zu reduzieren |

69| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Setzen Sie auf `1`, um die Unterstützung des [1M-Kontextfensters](/de/model-config#extended-context) zu deaktivieren. Wenn gesetzt, sind 1M-Modellvarianten in der Modellauswahl nicht verfügbar. Nützlich für Unternehmensumgebungen mit Compliance-Anforderungen |

70| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Setzen Sie auf `1`, um [adaptives Denken](/de/model-config#adjust-effort-level) auf Opus 4.6 und Sonnet 4.6 zu deaktivieren und auf das feste Denk-Budget zurückzufallen, das von `MAX_THINKING_TOKENS` gesteuert wird. {/* min-version: 2.1.111 */}Hat keine Auswirkung auf Opus 4.7, das immer adaptives Denken verwendet |

71| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Setzen Sie auf `1`, um die Verarbeitung von Anhängen zu deaktivieren. Dateierweiterungen mit `@`-Syntax werden als Klartext gesendet, anstatt in Dateiinhalte erweitert zu werden |

72| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Setzen Sie auf `1`, um [automatisches Speichern](/de/memory#auto-memory) zu deaktivieren. Setzen Sie auf `0`, um automatisches Speichern während des schrittweisen Rollouts zu erzwingen. Wenn deaktiviert, erstellt oder lädt Claude keine automatischen Speicherdateien |

73| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Setzen Sie auf `1`, um alle Hintergrundaufgaben-Funktionalität zu deaktivieren, einschließlich des Parameters `run_in_background` auf Bash- und Subagenten-Tools, automatisches Hintergrund-Ausführen und die Strg+B-Verknüpfung |

74| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Setzen Sie auf `1`, um das Laden von CLAUDE.md-Speicherdateien in den Kontext zu verhindern, einschließlich Benutzer-, Projekt- und automatischen Speicherdateien |

75| `CLAUDE_CODE_DISABLE_CRON` | Setzen Sie auf `1`, um [geplante Aufgaben](/de/scheduled-tasks) zu deaktivieren. Der `/loop`-Skill und Cron-Tools werden nicht verfügbar und alle bereits geplanten Aufgaben werden nicht mehr ausgelöst, einschließlich Aufgaben, die bereits während der Sitzung ausgeführt werden |

76| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Setzen Sie auf `1`, um Anthropic-spezifische `anthropic-beta`-Request-Header und Beta-Tool-Schema-Felder (wie `defer_loading` und `eager_input_streaming`) aus API-Anfragen zu entfernen. Verwenden Sie dies, wenn ein Proxy-Gateway Anfragen mit Fehlern wie „Unexpected value(s) for the `anthropic-beta` header" oder „Extra inputs are not permitted" ablehnt. Standard-Felder (`name`, `description`, `input_schema`, `cache_control`) werden beibehalten. |

77| `CLAUDE_CODE_DISABLE_FAST_MODE` | Setzen Sie auf `1`, um [Schnellmodus](/de/fast-mode) zu deaktivieren |

78| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Setzen Sie auf `1`, um die Umfragen zur Sitzungsqualität „Wie läuft es mit Claude?" zu deaktivieren. Umfragen werden auch deaktiviert, wenn `DISABLE_TELEMETRY` oder `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` gesetzt ist. Siehe [Umfragen zur Sitzungsqualität](/de/data-usage#session-quality-surveys) |

79| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Setzen Sie auf `1`, um Datei-[Checkpointing](/de/checkpointing) zu deaktivieren. Der `/rewind`-Befehl kann keine Code-Änderungen wiederherstellen |

80| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Setzen Sie auf `1`, um integrierte Commit- und PR-Workflow-Anweisungen und den Git-Status-Snapshot aus Claudes System-Prompt zu entfernen. Nützlich bei Verwendung eigener Git-Workflow-Skills. Hat Vorrang vor der Einstellung [`includeGitInstructions`](/de/settings#available-settings), wenn gesetzt |

81| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Setzen Sie auf `1`, um die automatische Umleitung von Opus 4.0 und 4.1 zur aktuellen Opus-Version auf der Anthropic API zu verhindern. Verwenden Sie, wenn Sie absichtlich ein älteres Modell fixieren möchten. Die Umleitung wird nicht auf Bedrock, Vertex oder Foundry ausgeführt |

82| `CLAUDE_CODE_DISABLE_MOUSE` | Setzen Sie auf `1`, um die Mausverfolgung in der [Vollbilddarstellung](/de/fullscreen) zu deaktivieren. Tastaturscrolling mit `PgUp` und `PgDn` funktioniert weiterhin. Verwenden Sie dies, um das native Kopieren-beim-Auswählen-Verhalten Ihres Terminals beizubehalten |

83| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Äquivalent zum Setzen von `DISABLE_AUTOUPDATER`, `DISABLE_FEEDBACK_COMMAND`, `DISABLE_ERROR_REPORTING` und `DISABLE_TELEMETRY` |

84| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Setzen Sie auf `1`, um das Fallback ohne Streaming zu deaktivieren, wenn eine Streaming-Anfrage mitten im Stream fehlschlägt. Streaming-Fehler werden stattdessen an die Wiederholungsebene weitergeleitet. Nützlich, wenn ein Proxy oder Gateway das Fallback dazu führt, dass doppelte Tool-Ausführungen entstehen |

85| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Setzen Sie auf `1`, um die automatische Hinzufügung des offiziellen Plugin-Marketplace beim ersten Start zu überspringen |

86| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Setzen Sie auf `1`, um das Laden von Skills aus dem systemweiten verwalteten Skills-Verzeichnis zu überspringen. Nützlich für Container- oder CI-Sitzungen, die keine von Operatoren bereitgestellten Skills laden sollten |

87| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Setzen Sie auf `1`, um automatische Aktualisierungen des Terminal-Titels basierend auf Konversationskontext zu deaktivieren |

88| `CLAUDE_CODE_DISABLE_THINKING` | Setzen Sie auf `1`, um [erweitertes Denken](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) unabhängig von Modellunterstützung oder anderen Einstellungen zu deaktivieren. Direkter als `MAX_THINKING_TOKENS=0` |

89| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Setzen Sie auf `1`, um virtuelles Scrollen in der [Vollbilddarstellung](/de/fullscreen) zu deaktivieren und jede Nachricht im Transkript zu rendern. Verwenden Sie dies, wenn das Scrollen im Vollbildmodus leere Bereiche anzeigt, in denen Nachrichten erscheinen sollten |

90| `CLAUDE_CODE_EFFORT_LEVEL` | Legen Sie die Anstrengungsstufe für unterstützte Modelle fest. Werte: `low`, `medium`, `high`, `xhigh`, `max` oder `auto` für den Modellstandard. Verfügbare Stufen hängen vom Modell ab. Hat Vorrang vor `/effort` und der `effortLevel`-Einstellung. Siehe [Anstrengungsstufe anpassen](/de/model-config#adjust-effort-level) |

91| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Überschreiben Sie die Verfügbarkeit von [Sitzungs-Zusammenfassung](/de/interactive-mode#session-recap). Setzen Sie auf `0`, um Zusammenfassungen unabhängig vom `/config`-Umschalter auszuschalten. Setzen Sie auf `1`, um Zusammenfassungen zu erzwingen, wenn [`awaySummaryEnabled`](/de/settings#available-settings) `false` ist. Hat Vorrang vor der Einstellung und dem `/config`-Umschalter |

92| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Setzen Sie auf `1`, um den Plugin-Status an Turn-Grenzen im [nicht-interaktiven Modus](/de/headless) zu aktualisieren, nachdem eine Hintergrund-Installation abgeschlossen ist. Standardmäßig aus, da die Aktualisierung den System-Prompt mitten in der Sitzung ändert, was [Prompt-Caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) für diesen Turn ungültig macht |

93| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Setzen Sie auf `1`, um feingranulares Tool-Input-Streaming zu erzwingen. Ohne dies puffert die API Tool-Input-Parameter vollständig, bevor Delta-Ereignisse gesendet werden, was die Anzeige bei großen Tool-Eingaben verzögern kann. Nur Anthropic API: hat keine Auswirkung auf Bedrock, Vertex oder Foundry |

94| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Setzen Sie auf `false`, um Prompt-Vorschläge zu deaktivieren (der Umschalter „Prompt-Vorschläge" in `/config`). Dies sind die ausgegraut angezeigten Vorhersagen, die in Ihrer Prompt-Eingabe nach Claudes Antwort erscheinen. Siehe [Prompt-Vorschläge](/de/interactive-mode#prompt-suggestions) |

95| `CLAUDE_CODE_ENABLE_TASKS` | Setzen Sie auf `1`, um das Task-Tracking-System im nicht-interaktiven Modus (das Flag `-p`) zu aktivieren. Tasks sind standardmäßig im interaktiven Modus aktiviert. Siehe [Aufgabenliste](/de/interactive-mode#task-list) |

96| `CLAUDE_CODE_ENABLE_TELEMETRY` | Setzen Sie auf `1`, um OpenTelemetry-Datenerfassung für Metriken und Protokollierung zu aktivieren. Erforderlich, bevor OTel-Exporter konfiguriert werden. Siehe [Überwachung](/de/monitoring-usage) |

97| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Zeit in Millisekunden, die nach dem Leerlaufen der Abfrageschleife gewartet werden soll, bevor automatisch beendet wird. Nützlich für automatisierte Workflows und Skripte mit SDK-Modus |

98| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Setzen Sie auf `1`, um [Agent-Teams](/de/agent-teams) zu aktivieren. Agent-Teams sind experimentell und standardmäßig deaktiviert |

99| `CLAUDE_CODE_EXTRA_BODY` | JSON-Objekt, das in die oberste Ebene jedes API-Request-Body zusammengeführt werden soll. Nützlich für die Übergabe von Provider-spezifischen Parametern, die Claude Code nicht direkt verfügbar macht |

100| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Überschreiben Sie das Standard-Token-Limit für Dateileser. Nützlich, wenn Sie größere Dateien vollständig lesen müssen |

101| `CLAUDE_CODE_FORK_SUBAGENT` | Setzen Sie auf `1`, um [abgespaltete Subagenten](/de/sub-agents#fork-the-current-conversation) zu aktivieren. Ein abgespalteter Subagent erbt den vollständigen Konversationskontext aus der Hauptsitzung, anstatt neu zu beginnen. Wenn aktiviert, spawnt `/fork` einen abgespalteten Subagent, anstatt als Alias für [`/branch`](/de/commands) zu fungieren, und alle Subagent-Spawns werden im Hintergrund ausgeführt. Funktioniert im interaktiven Modus und über das SDK oder `claude -p` |

102| `CLAUDE_CODE_GIT_BASH_PATH` | Nur Windows: Pfad zur Git Bash-Ausführungsdatei (`bash.exe`). Verwenden Sie, wenn Git Bash installiert ist, aber nicht in Ihrem PATH. Siehe [Windows-Setup](/de/setup#set-up-on-windows) |

103| `CLAUDE_CODE_GLOB_HIDDEN` | Setzen Sie auf `false`, um versteckte Dateien aus Ergebnissen auszuschließen, wenn Claude das [Glob-Tool](/de/tools-reference) aufruft. Standardmäßig enthalten. Beeinflusst nicht `@`-Datei-Autovervollständigung, `ls`, Grep oder Read |

104| `CLAUDE_CODE_GLOB_NO_IGNORE` | Setzen Sie auf `false`, um das [Glob-Tool](/de/tools-reference) `.gitignore`-Muster respektieren zu lassen. Standardmäßig gibt Glob alle übereinstimmenden Dateien zurück, einschließlich gitignorierter. Beeinflusst nicht `@`-Datei-Autovervollständigung, die ihre eigene [`respectGitignore`-Einstellung](/de/settings#available-settings) hat |

105| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Timeout in Sekunden für die Glob-Tool-Dateiermittlung. Standardmäßig 20 Sekunden auf den meisten Plattformen und 60 Sekunden auf WSL |

106| `CLAUDE_CODE_HIDE_CWD` | Setzen Sie auf `1`, um das Arbeitsverzeichnis im Startup-Logo auszublenden. Nützlich für Bildschirmfreigaben oder Aufzeichnungen, bei denen der Pfad Ihren OS-Benutzernamen offenlegt |

107| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Überschreiben Sie die Host-Adresse, die zum Verbinden mit der IDE-Erweiterung verwendet wird. Standardmäßig erkennt Claude Code die richtige Adresse automatisch, einschließlich WSL-zu-Windows-Routing |

108| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Überspringen Sie die automatische Installation von IDE-Erweiterungen. Äquivalent zum Setzen von [`autoInstallIdeExtension`](/de/settings#global-config-settings) auf `false` |

109| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Setzen Sie auf `1`, um die Validierung von IDE-Lockfile-Einträgen während der Verbindung zu überspringen. Verwenden Sie, wenn die automatische Verbindung Ihre IDE nicht findet, obwohl sie ausgeführt wird |

110| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Überschreiben Sie die Kontextfenstergröße, die Claude Code für das aktive Modell annimmt. Wirkt sich nur aus, wenn `DISABLE_COMPACT` auch gesetzt ist. Verwenden Sie dies, wenn Sie zu einem Modell durch `ANTHROPIC_BASE_URL` routen, dessen Kontextfenster nicht der integrierten Größe für seinen Namen entspricht |

111| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Legen Sie die maximale Anzahl von Ausgabe-Token für die meisten Anfragen fest. Standard und Obergrenzen variieren je nach Modell; siehe [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Das Erhöhen dieses Wertes reduziert das verfügbare effektive Kontextfenster, bevor die [automatische Komprimierung](/de/costs#reduce-token-usage) ausgelöst wird. |

112| `CLAUDE_CODE_MAX_RETRIES` | Überschreiben Sie die Anzahl der Wiederholungen fehlgeschlagener API-Anfragen (Standard: 10) |

113| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | Maximale Anzahl von schreibgeschützten Tools und Subagenten, die parallel ausgeführt werden können (Standard: 10). Höhere Werte erhöhen die Parallelität, verbrauchen aber mehr Ressourcen |

114| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Setzen Sie auf `1`, um stdio MCP-Server nur mit einer sicheren Baseline-Umgebung plus der konfigurierten `env` des Servers zu spawnen, anstatt Ihre Shell-Umgebung zu erben |

115| `CLAUDE_CODE_NEW_INIT` | Setzen Sie auf `1`, um `/init` einen interaktiven Setup-Flow ausführen zu lassen. Der Flow fragt, welche Dateien generiert werden sollen, einschließlich CLAUDE.md, Skills und Hooks, bevor die Codebasis erkundet und geschrieben wird. Ohne diese Variable generiert `/init` automatisch eine CLAUDE.md ohne Aufforderung. |

116| `CLAUDE_CODE_NO_FLICKER` | Setzen Sie auf `1`, um die [Vollbilddarstellung](/de/fullscreen) zu aktivieren, eine Forschungsvorschau, die Flimmern reduziert und den Speicher in langen Konversationen flach hält. Äquivalent zur [`tui`](/de/settings#available-settings)-Einstellung; Sie können auch mit `/tui fullscreen` wechseln |

117| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | OAuth-Aktualisierungstoken für Claude.ai-Authentifizierung. Wenn gesetzt, tauscht `claude auth login` dieses Token direkt aus, anstatt einen Browser zu öffnen. Erfordert `CLAUDE_CODE_OAUTH_SCOPES`. Nützlich für die Bereitstellung von Authentifizierung in automatisierten Umgebungen |

118| `CLAUDE_CODE_OAUTH_SCOPES` | Durch Leerzeichen getrennte OAuth-Bereiche, mit denen das Aktualisierungstoken ausgestellt wurde, z. B. `"user:profile user:inference user:sessions:claude_code"`. Erforderlich, wenn `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` gesetzt ist |

119| `CLAUDE_CODE_OAUTH_TOKEN` | OAuth-Zugriffstoken für Claude.ai-Authentifizierung. Alternative zu `/login` für SDK und automatisierte Umgebungen. Hat Vorrang vor in der Keychain gespeicherten Anmeldedaten. Generieren Sie eines mit [`claude setup-token`](/de/authentication#generate-a-long-lived-token) |

120| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Timeout in Millisekunden zum Leeren ausstehender OpenTelemetry-Spans (Standard: 5000). Siehe [Überwachung](/de/monitoring-usage) |

121| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervall zum Aktualisieren dynamischer OpenTelemetry-Header in Millisekunden (Standard: 1740000 / 29 Minuten). Siehe [Dynamische Header](/de/monitoring-usage#dynamic-headers) |

122| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Timeout in Millisekunden für den OpenTelemetry-Exporter zum Beenden beim Herunterfahren (Standard: 2000). Erhöhen Sie, wenn Metriken beim Beenden gelöscht werden. Siehe [Überwachung](/de/monitoring-usage) |

123| `CLAUDE_CODE_PERFORCE_MODE` | Setzen Sie auf `1`, um Perforce-bewussten Schreibschutz zu aktivieren. Wenn gesetzt, schlagen Edit, Write und NotebookEdit fehl mit einem `p4 edit <file>`-Hinweis, wenn die Zieldatei das Owner-Write-Bit nicht hat, das Perforce bei synchronisierten Dateien löscht, bis `p4 edit` sie öffnet. Dies verhindert, dass Claude Code die Perforce-Änderungsverfolgung umgeht |

124| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Überschreiben Sie das Plugin-Stammverzeichnis. Trotz des Namens setzt dies das übergeordnete Verzeichnis, nicht den Cache selbst: Marketplaces und der Plugin-Cache befinden sich in Unterverzeichnissen unter diesem Pfad. Standardmäßig `~/.claude/plugins` |

125| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Timeout in Millisekunden für Git-Operationen beim Installieren oder Aktualisieren von Plugins (Standard: 120000). Erhöhen Sie diesen Wert für große Repositories oder langsame Netzwerkverbindungen. Siehe [Git-Operationen Timeout](/de/plugin-marketplaces#git-operations-time-out) |

126| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Setzen Sie auf `1`, um den vorhandenen Marketplace-Cache beizubehalten, wenn ein `git pull` fehlschlägt, anstatt ihn zu löschen und erneut zu klonen. Nützlich in Offline- oder Airgap-Umgebungen, in denen das erneute Klonen auf die gleiche Weise fehlschlagen würde. Siehe [Marketplace-Updates schlagen in Offline-Umgebungen fehl](/de/plugin-marketplaces#marketplace-updates-fail-in-offline-environments) |

127| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Pfad zu einem oder mehreren schreibgeschützten Plugin-Seed-Verzeichnissen, getrennt durch `:` auf Unix oder `;` auf Windows. Verwenden Sie dies, um ein vorausgefülltes Plugins-Verzeichnis in ein Container-Image zu bündeln. Claude Code registriert Marketplaces aus diesen Verzeichnissen beim Start und verwendet vorgecachte Plugins ohne erneutes Klonen. Siehe [Plugins für Container vorausfüllen](/de/plugin-marketplaces#pre-populate-plugins-for-containers) |

128| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Wird von Host-Plattformen gesetzt, die Claude Code einbetten und das Modell-Provider-Routing in ihrem Namen verwalten. Wenn gesetzt, werden Provider-Auswahl-, Endpunkt- und Authentifizierungsvariablen wie `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL` und `ANTHROPIC_API_KEY` in Einstellungsdateien ignoriert, sodass Benutzereinstellungen das Routing des Hosts nicht überschreiben können. Die automatische Telemetrie-Abmeldung für Bedrock, Vertex und Foundry wird ebenfalls übersprungen, sodass die Telemetrie der Standard-`DISABLE_TELEMETRY`-Abmeldung folgt. Siehe [Standardverhalten nach API-Provider](/de/data-usage#default-behaviors-by-api-provider) |

129| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Setzen Sie auf `1`, um dem Proxy zu ermöglichen, DNS-Auflösung durchzuführen, anstatt des Aufrufers. Opt-in für Umgebungen, in denen der Proxy die Hostname-Auflösung durchführen sollte |

130| `CLAUDE_CODE_REMOTE` | Wird automatisch auf `true` gesetzt, wenn Claude Code als [Cloud-Sitzung](/de/claude-code-on-the-web) ausgeführt wird. Lesen Sie dies aus einem Hook oder Setup-Skript, um zu erkennen, ob Sie sich in einer Cloud-Umgebung befinden |

131| `CLAUDE_CODE_REMOTE_SESSION_ID` | Wird automatisch in [Cloud-Sitzungen](/de/claude-code-on-the-web) auf die ID der aktuellen Sitzung gesetzt. Lesen Sie dies, um einen Link zurück zur Sitzungs-Abschrift zu erstellen. Siehe [Artefakte zurück zur Sitzung verlinken](/de/claude-code-on-the-web#link-artifacts-back-to-the-session) |

132| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Setzen Sie auf `1`, um automatisch fortzufahren, wenn die vorherige Sitzung mitten in einem Turn endete. Wird im SDK-Modus verwendet, damit das Modell fortfährt, ohne dass das SDK den Prompt erneut senden muss |

133| `CLAUDE_CODE_SCRIPT_CAPS` | JSON-Objekt, das begrenzt, wie oft bestimmte Skripte pro Sitzung aufgerufen werden können, wenn `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` gesetzt ist. Schlüssel sind Substrings, die gegen den Befehlstext abgeglichen werden; Werte sind ganzzahlige Aufruflimits. Zum Beispiel `{"deploy.sh": 2}` erlaubt `deploy.sh`, höchstens zweimal aufgerufen zu werden. Der Abgleich ist substring-basiert, daher zählen Shell-Erweiterungstricks wie `./scripts/deploy.sh $(evil)` weiterhin gegen das Limit. Runtime-Fan-out über `xargs` oder `find -exec` wird nicht erkannt; dies ist eine Defense-in-Depth-Kontrolle |

134| `CLAUDE_CODE_SCROLL_SPEED` | Legen Sie den Mausrad-Scroll-Multiplikator in der [Vollbilddarstellung](/de/fullscreen#mouse-wheel-scrolling) fest. Akzeptiert Werte von 1 bis 20. Setzen Sie auf `3`, um `vim` zu entsprechen, wenn Ihr Terminal ein Mausrad-Ereignis pro Kerbe ohne Verstärkung sendet |

135| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Überschreiben Sie das Zeitbudget in Millisekunden für [SessionEnd](/de/hooks#sessionend)-Hooks. Gilt für Sitzungsbeendigung, `/clear` und Wechsel von Sitzungen über interaktives `/resume`. Standardmäßig ist das Budget 1,5 Sekunden, automatisch erhöht auf das höchste pro-Hook `timeout`, das in Einstellungsdateien konfiguriert ist, bis zu 60 Sekunden. Timeouts auf Plugin-bereitgestellten Hooks erhöhen das Budget nicht |

136| `CLAUDE_CODE_SHELL` | Überschreiben Sie die automatische Shell-Erkennung. Nützlich, wenn sich Ihre Login-Shell von Ihrer bevorzugten Arbeitsshell unterscheidet (z. B. `bash` vs `zsh`) |

137| `CLAUDE_CODE_SHELL_PREFIX` | Befehlspräfix zum Umhüllen von Shell-Befehlen, die Claude Code spawnt: Bash-Tool-Aufrufe, [Hook](/de/hooks)-Befehle und stdio [MCP-Server](/de/mcp)-Startup-Befehle. Nützlich für Protokollierung oder Auditing. Beispiel: Das Setzen von `/path/to/logger.sh` führt jeden Befehl als `/path/to/logger.sh <command>` aus |

138| `CLAUDE_CODE_SIMPLE` | Setzen Sie auf `1`, um mit einem minimalen System-Prompt und nur den Tools Bash, Datei lesen und Datei bearbeiten auszuführen. MCP-Tools aus `--mcp-config` sind weiterhin verfügbar. Deaktiviert die automatische Erkennung von Hooks, Skills, Plugins, MCP-Servern, automatisches Speichern und CLAUDE.md. Das CLI-Flag [`--bare`](/de/headless#start-faster-with-bare-mode) setzt dies |

139| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Setzen Sie auf `1`, um einen kürzeren System-Prompt und zusammengefasste Tool-Beschreibungen auf Opus 4.7 zu verwenden. Hat keine Auswirkung auf andere Modelle. Der vollständige Tool-Satz, Hooks, MCP-Server und CLAUDE.md-Erkennung bleiben aktiviert |

140| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Überspringen Sie die AWS-Authentifizierung für Bedrock (z. B. bei Verwendung eines LLM-Gateways) |

141| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Überspringen Sie die Azure-Authentifizierung für Microsoft Foundry (z. B. bei Verwendung eines LLM-Gateways) |

142| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Überspringen Sie die AWS-Authentifizierung für Bedrock Mantle (z. B. bei Verwendung eines LLM-Gateways) |

143| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | Setzen Sie auf `1`, um das Schreiben von Prompt-Verlauf und Sitzungs-Abschriften auf die Festplatte zu überspringen. Sitzungen, die mit dieser Variablen gestartet werden, erscheinen nicht in `--resume`, `--continue` oder Up-Arrow-Verlauf. Nützlich für kurzlebige Skript-Sitzungen |

144| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | Überspringen Sie die Google-Authentifizierung für Vertex (z. B. bei Verwendung eines LLM-Gateways) |

145| `CLAUDE_CODE_SUBAGENT_MODEL` | Siehe [Modellkonfiguration](/de/model-config) |

146| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Setzen Sie auf `1`, um Anthropic- und Cloud-Provider-Anmeldedaten aus Subprocess-Umgebungen zu entfernen (Bash-Tool, Hooks, MCP-Stdio-Server). Der übergeordnete Claude-Prozess behält diese Anmeldedaten für API-Aufrufe, aber untergeordnete Prozesse können sie nicht lesen, was die Exposition gegenüber Prompt-Injection-Angriffen reduziert, die versuchen, Geheimnisse über Shell-Erweiterung zu exfiltrieren. Unter Linux führt dies auch Bash-Subprozesse in einem isolierten PID-Namespace aus, sodass sie Host-Prozessumgebungen über `/proc` nicht lesen können; als Nebeneffekt können `ps`, `pgrep` und `kill` Host-Prozesse nicht sehen oder signalisieren. `claude-code-action` setzt dies automatisch, wenn `allowed_non_write_users` konfiguriert ist |

147| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Setzen Sie auf `1` im nicht-interaktiven Modus (das Flag `-p`), um auf den Abschluss der Plugin-Installation zu warten, bevor die erste Abfrage. Ohne dies werden Plugins im Hintergrund installiert und sind möglicherweise beim ersten Turn nicht verfügbar. Kombinieren Sie mit `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS`, um die Wartezeit zu begrenzen |

148| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Timeout in Millisekunden für synchrone Plugin-Installation. Wenn überschritten, fährt Claude Code ohne Plugins fort und protokolliert einen Fehler. Kein Standard: Ohne diese Variable wartet die synchrone Installation bis zum Abschluss |

149| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Setzen Sie auf `false`, um Syntax-Hervorhebung in Diff-Ausgabe zu deaktivieren. Nützlich, wenn Farben Ihr Terminal-Setup beeinträchtigen |

150| `CLAUDE_CODE_TASK_LIST_ID` | Teilen Sie eine Aufgabenliste über Sitzungen hinweg. Setzen Sie dieselbe ID in mehreren Claude Code-Instanzen, um an einer gemeinsamen Aufgabenliste zu koordinieren. Siehe [Aufgabenliste](/de/interactive-mode#task-list) |

151| `CLAUDE_CODE_TEAM_NAME` | Name des Agent-Teams, zu dem dieser Teamkollege gehört. Automatisch auf [Agent-Team](/de/agent-teams)-Mitgliedern gesetzt |

152| `CLAUDE_CODE_TMPDIR` | Überschreiben Sie das Temp-Verzeichnis, das für interne Temp-Dateien verwendet wird. Claude Code hängt `/claude-{uid}/` (Unix) oder `/claude/` (Windows) an diesen Pfad an. Standard: `/tmp` auf macOS, `os.tmpdir()` auf Linux/Windows |

153| `CLAUDE_CODE_TMUX_TRUECOLOR` | Setzen Sie auf `1`, um 24-Bit-Truecolor-Ausgabe in tmux zu ermöglichen. Standardmäßig begrenzt Claude Code auf 256 Farben, wenn `$TMUX` gesetzt ist, da tmux Truecolor-Escape-Sequenzen nicht durchleitet, es sei denn, es ist konfiguriert. Setzen Sie dies nach dem Hinzufügen von `set -ga terminal-overrides ',*:Tc'` zu Ihrer `~/.tmux.conf`. Siehe [Terminal-Konfiguration](/de/terminal-config) für andere tmux-Einstellungen |

154| `CLAUDE_CODE_USE_BEDROCK` | Verwenden Sie [Bedrock](/de/amazon-bedrock) |

155| `CLAUDE_CODE_USE_FOUNDRY` | Verwenden Sie [Microsoft Foundry](/de/microsoft-foundry) |

156| `CLAUDE_CODE_USE_MANTLE` | Verwenden Sie den Bedrock-[Mantle-Endpunkt](/de/amazon-bedrock#use-the-mantle-endpoint) |

157| `CLAUDE_CODE_USE_NATIVE_FILE_SEARCH` | Setzen Sie auf `1`, um benutzerdefinierte Befehle, Subagenten und Ausgabestile mit Node.js-Datei-APIs anstelle von ripgrep zu ermitteln. Setzen Sie dies, wenn die gebündelte ripgrep-Binärdatei in Ihrer Umgebung nicht verfügbar oder blockiert ist. Beeinflusst nicht die Grep- oder Datei-Such-Tools |

158| `CLAUDE_CODE_USE_POWERSHELL_TOOL` | Steuert das PowerShell-Tool. Unter Windows ohne Git Bash ist das Tool automatisch aktiviert; setzen Sie auf `0`, um es zu deaktivieren. Unter Windows mit installiertem Git Bash wird das Tool schrittweise eingeführt: Setzen Sie auf `1`, um sich anzumelden, oder auf `0`, um sich abzumelden. Unter Linux, macOS und WSL setzen Sie auf `1`, um es zu aktivieren, was `pwsh` auf Ihrem `PATH` erfordert. Wenn unter Windows aktiviert, kann Claude PowerShell-Befehle nativ ausführen, anstatt sie durch Git Bash zu leiten. Siehe [PowerShell-Tool](/de/tools-reference#powershell-tool) |

159| `CLAUDE_CODE_USE_VERTEX` | Verwenden Sie [Vertex](/de/google-vertex-ai) |

160| `CLAUDE_CONFIG_DIR` | Überschreiben Sie das Konfigurationsverzeichnis (Standard: `~/.claude`). Alle Einstellungen, Anmeldedaten, Sitzungsverlauf und Plugins werden unter diesem Pfad gespeichert. Nützlich zum Ausführen mehrerer Konten nebeneinander: z. B. `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'` |

161| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Setzen Sie auf `1`, um den Byte-Level-Streaming-Idle-Watchdog zu erzwingen, oder auf `0`, um ihn zu deaktivieren. Wenn nicht gesetzt, ist der Watchdog standardmäßig für Anthropic API-Verbindungen aktiviert. Der Byte-Watchdog bricht eine Verbindung ab, wenn für die Dauer, die von `CLAUDE_STREAM_IDLE_TIMEOUT_MS` gesetzt ist, keine Bytes auf dem Draht ankommen, mit einem Minimum von 5 Minuten, unabhängig vom Event-Level-Watchdog |

162| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Setzen Sie auf `1`, um den Event-Level-Streaming-Idle-Watchdog zu aktivieren. Standardmäßig aus. Für Bedrock, Vertex und Foundry ist dies der einzige verfügbare Idle-Watchdog. Konfigurieren Sie das Timeout mit `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |

163| `CLAUDE_ENV_FILE` | Pfad zu einem Shell-Skript, dessen Inhalte Claude Code vor jedem Bash-Befehl im gleichen Shell-Prozess ausführt, sodass Exporte in der Datei für den Befehl sichtbar sind. Verwenden Sie, um virtualenv- oder Conda-Aktivierung über Befehle hinweg beizubehalten. Wird auch dynamisch von [SessionStart](/de/hooks#persist-environment-variables), [Setup](/de/hooks#setup), [CwdChanged](/de/hooks#cwdchanged) und [FileChanged](/de/hooks#filechanged)-Hooks gefüllt |

164| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Präfix für automatisch generierte [Remote Control](/de/remote-control)-Sitzungsnamen, wenn kein expliziter Name angegeben ist. Standardmäßig der Hostname Ihres Computers, was Namen wie `myhost-graceful-unicorn` erzeugt. Das CLI-Flag `--remote-control-session-name-prefix` setzt denselben Wert für einen einzelnen Aufruf |

165| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | Timeout in Millisekunden, bevor der Streaming-Idle-Watchdog eine stillgelegte Verbindung schließt. Standard und Minimum `300000` (5 Minuten) für den Byte-Level-Watchdog auf der Anthropic API; niedrigere Werte werden stillschweigend auf die Obergrenze begrenzt, um erweiterte Denk-Pausen und Proxy-Pufferung zu absorbieren. Für den Event-Level-Watchdog: Standard `90000` (90 Sekunden), kein Minimum. Für Drittanbieter erfordert `CLAUDE_ENABLE_STREAM_WATCHDOG=1` |

166| `DISABLE_AUTOUPDATER` | Setzen Sie auf `1`, um automatische Hintergrund-Updates zu deaktivieren. Manuelles `claude update` funktioniert weiterhin. Verwenden Sie `DISABLE_UPDATES`, um beide zu blockieren |

167| `DISABLE_AUTO_COMPACT` | Setzen Sie auf `1`, um die automatische Komprimierung bei Annäherung an das Kontextlimit zu deaktivieren. Der manuelle `/compact`-Befehl bleibt verfügbar. Verwenden Sie, wenn Sie explizite Kontrolle darüber wünschen, wann Komprimierung auftritt |

168| `DISABLE_COMPACT` | Setzen Sie auf `1`, um alle Komprimierung zu deaktivieren: sowohl automatische Komprimierung als auch den manuellen `/compact`-Befehl |

169| `DISABLE_COST_WARNINGS` | Setzen Sie auf `1`, um Kostenwarnmeldungen zu deaktivieren |

170| `DISABLE_DOCTOR_COMMAND` | Setzen Sie auf `1`, um den `/doctor`-Befehl auszublenden. Nützlich für verwaltete Bereitstellungen, in denen Benutzer keine Installationsdiagnosen ausführen sollten |

171| `DISABLE_ERROR_REPORTING` | Setzen Sie auf `1`, um sich von Sentry-Fehlerberichten abzumelden |

172| `DISABLE_EXTRA_USAGE_COMMAND` | Setzen Sie auf `1`, um den `/extra-usage`-Befehl auszublenden, der Benutzern ermöglicht, zusätzliche Nutzung über Ratenlimits hinaus zu erwerben |

173| `DISABLE_FEEDBACK_COMMAND` | Setzen Sie auf `1`, um den `/feedback`-Befehl zu deaktivieren. Der ältere Name `DISABLE_BUG_COMMAND` wird ebenfalls akzeptiert |

174| `DISABLE_GROWTHBOOK` | Setzen Sie auf `1`, um GrowthBook-Feature-Flag-Abruf zu deaktivieren und Code-Standardwerte für jedes Flag zu verwenden. Telemetrie-Ereignisprotokollierung bleibt aktiviert, es sei denn, `DISABLE_TELEMETRY` ist auch gesetzt |

175| `DISABLE_INSTALLATION_CHECKS` | Setzen Sie auf `1`, um Installationswarnungen zu deaktivieren. Verwenden Sie nur, wenn Sie den Installationsort manuell verwalten, da dies Probleme mit Standard-Installationen verbergen kann |

176| `DISABLE_INSTALL_GITHUB_APP_COMMAND` | Setzen Sie auf `1`, um den `/install-github-app`-Befehl auszublenden. Bereits ausgeblendet bei Verwendung von Drittanbieter-Providern (Bedrock, Vertex oder Foundry) |

177| `DISABLE_INTERLEAVED_THINKING` | Setzen Sie auf `1`, um das Senden des interleaved-thinking Beta-Headers zu verhindern. Nützlich, wenn Ihr LLM-Gateway oder Provider [interleaved thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) nicht unterstützt |

178| `DISABLE_LOGIN_COMMAND` | Setzen Sie auf `1`, um den `/login`-Befehl auszublenden. Nützlich, wenn die Authentifizierung extern über API-Schlüssel oder `apiKeyHelper` erfolgt |

179| `DISABLE_LOGOUT_COMMAND` | Setzen Sie auf `1`, um den `/logout`-Befehl auszublenden |

180| `DISABLE_PROMPT_CACHING` | Setzen Sie auf `1`, um Prompt-Caching für alle Modelle zu deaktivieren (hat Vorrang vor modellspezifischen Einstellungen) |

181| `DISABLE_PROMPT_CACHING_HAIKU` | Setzen Sie auf `1`, um Prompt-Caching für Haiku-Modelle zu deaktivieren |

182| `DISABLE_PROMPT_CACHING_OPUS` | Setzen Sie auf `1`, um Prompt-Caching für Opus-Modelle zu deaktivieren |

183| `DISABLE_PROMPT_CACHING_SONNET` | Setzen Sie auf `1`, um Prompt-Caching für Sonnet-Modelle zu deaktivieren |

184| `DISABLE_TELEMETRY` | Setzen Sie auf `1`, um sich von Statsig-Telemetrie abzumelden (beachten Sie, dass Statsig-Ereignisse keine Benutzerdaten wie Code, Dateipfade oder Bash-Befehle enthalten) |

185| `DISABLE_UPDATES` | Setzen Sie auf `1`, um alle Updates zu blockieren, einschließlich manuelles `claude update` und `claude install`. Strenger als `DISABLE_AUTOUPDATER`. Verwenden Sie, wenn Sie Claude Code über Ihre eigenen Kanäle verteilen und Benutzer sich nicht selbst aktualisieren sollten |

186| `DISABLE_UPGRADE_COMMAND` | Setzen Sie auf `1`, um den `/upgrade`-Befehl auszublenden |

187| `ENABLE_CLAUDEAI_MCP_SERVERS` | Setzen Sie auf `false`, um [claude.ai MCP-Server](/de/mcp#use-mcp-servers-from-claude-ai) in Claude Code zu deaktivieren. Standardmäßig für angemeldete Benutzer aktiviert |

188| `ENABLE_PROMPT_CACHING_1H` | Setzen Sie auf `1`, um eine 1-Stunden-Prompt-Cache-TTL anstelle der Standard-5-Minuten anzufordern. Vorgesehen für API-Schlüssel-, [Bedrock](/de/amazon-bedrock)-, [Vertex](/de/google-vertex-ai)- und [Foundry](/de/microsoft-foundry)-Benutzer. Abonnement-Benutzer erhalten automatisch 1-Stunden-TTL. 1-Stunden-Cache-Schreibvorgänge werden mit einer höheren Rate abgerechnet |

189| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Veraltet. Verwenden Sie stattdessen `ENABLE_PROMPT_CACHING_1H` |

190| `ENABLE_TOOL_SEARCH` | Steuert [MCP-Tool-Suche](/de/mcp#scale-with-mcp-tool-search). Nicht gesetzt: alle MCP-Tools standardmäßig aufgeschoben, aber upfront geladen auf Vertex AI oder wenn `ANTHROPIC_BASE_URL` auf einen Nicht-First-Party-Host verweist. Werte: `true` (immer aufgeschoben, einschließlich Proxies und Vertex AI), `auto` (Schwellenwertmodus: upfront laden, wenn Tools in 10 % des Kontexts passen), `auto:N` (benutzerdefinierter Schwellenwert, z. B. `auto:5` für 5 %), `false` (alle upfront laden) |

191| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Setzen Sie auf einen beliebigen Nicht-Leer-Wert, um das Fallback zu [`--fallback-model`](/de/cli-reference#cli-flags) nach wiederholten Überladungsfehlern auf einem beliebigen primären Modell auszulösen. Standardmäßig lösen nur Opus-Modelle das Fallback aus |

192| `FORCE_AUTOUPDATE_PLUGINS` | Setzen Sie auf `1`, um Plugin-Auto-Updates zu erzwingen, auch wenn der Haupt-Auto-Updater über `DISABLE_AUTOUPDATER` deaktiviert ist |

193| `FORCE_PROMPT_CACHING_5M` | Setzen Sie auf `1`, um die 5-Minuten-Prompt-Cache-TTL zu erzwingen, auch wenn 1-Stunden-TTL ansonsten gelten würde. Überschreibt `ENABLE_PROMPT_CACHING_1H` |

194| `HTTP_PROXY` | Geben Sie HTTP-Proxy-Server für Netzwerkverbindungen an |

195| `HTTPS_PROXY` | Geben Sie HTTPS-Proxy-Server für Netzwerkverbindungen an |

196| `IS_DEMO` | Setzen Sie auf `1`, um Demo-Modus zu aktivieren: verbirgt Ihre E-Mail und Organisationsnamen aus der Kopfzeile und `/status`-Ausgabe und überspringt Onboarding. Nützlich zum Streamen oder Aufzeichnen einer Sitzung |

197| `MAX_MCP_OUTPUT_TOKENS` | Maximale Anzahl von Token, die in MCP-Tool-Antworten zulässig sind. Claude Code zeigt eine Warnung an, wenn die Ausgabe 10.000 Token überschreitet. Tools, die [`anthropic/maxResultSizeChars`](/de/mcp#raise-the-limit-for-a-specific-tool) deklarieren, verwenden dieses Zeichenlimit für Textinhalte stattdessen, aber Bildinhalte von diesen Tools unterliegen weiterhin dieser Variablen (Standard: 25000) |

198| `MAX_STRUCTURED_OUTPUT_RETRIES` | Anzahl der Wiederholungen, wenn die Antwort des Modells die Validierung gegen das [`--json-schema`](/de/cli-reference#cli-flags) im nicht-interaktiven Modus (das Flag `-p`) fehlschlägt. Standardmäßig 5 |

199| `MAX_THINKING_TOKENS` | Überschreiben Sie das [erweitertes Denken](https://platform.claude.com/docs/en/build-with-claude/extended-thinking)-Token-Budget. Die Obergrenze ist die [maximale Ausgabe-Token](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison) des Modells minus eins. Setzen Sie auf `0`, um Denken vollständig zu deaktivieren. Bei Modellen mit [adaptivem Denken](/de/model-config#adjust-effort-level) wird das Budget ignoriert, es sei denn, adaptives Denken ist über `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` deaktiviert |

200| `MCP_CLIENT_SECRET` | OAuth-Client-Secret für MCP-Server, die [vorkonfigurierte Anmeldedaten](/de/mcp#use-pre-configured-oauth-credentials) erfordern. Vermeidet die interaktive Eingabeaufforderung beim Hinzufügen eines Servers mit `--client-secret` |

201| `MCP_CONNECTION_NONBLOCKING` | Setzen Sie auf `true` im nicht-interaktiven Modus (`-p`), um das Warten auf MCP-Verbindung vollständig zu überspringen. Nützlich für Skript-Pipelines, bei denen MCP-Tools nicht benötigt werden. Ohne diese Variable wartet die erste Abfrage bis zu 5 Sekunden auf `--mcp-config`-Server-Verbindungen |

202| `MCP_OAUTH_CALLBACK_PORT` | Fester Port für den OAuth-Redirect-Callback als Alternative zu `--callback-port` beim Hinzufügen eines MCP-Servers mit [vorkonfigurierten Anmeldedaten](/de/mcp#use-pre-configured-oauth-credentials) |

203| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | Maximale Anzahl von Remote-MCP-Servern (HTTP/SSE), die während des Starts parallel verbunden werden (Standard: 20) |

204| `MCP_SERVER_CONNECTION_BATCH_SIZE` | Maximale Anzahl von lokalen MCP-Servern (stdio), die während des Starts parallel verbunden werden (Standard: 3) |

205| `MCP_TIMEOUT` | Timeout in Millisekunden für MCP-Server-Start (Standard: 30000 oder 30 Sekunden) |

206| `MCP_TOOL_TIMEOUT` | Timeout in Millisekunden für MCP-Tool-Ausführung (Standard: 100000000, etwa 28 Stunden) |

207| `NO_PROXY` | Liste von Domains und IPs, an die Anfragen direkt gestellt werden, wobei der Proxy umgangen wird |

208| `OTEL_LOG_RAW_API_BODIES` | Geben Sie Anthropic Messages API-Anfrage- und Antwort-JSON als `api_request_body` / `api_response_body`-Protokollereignisse aus. Setzen Sie auf `1` für Inline-Texte, die auf 60 KB gekürzt sind, oder `file:<dir>`, um ungekürzte Texte auf die Festplatte zu schreiben und stattdessen einen `body_ref`-Pfad auszugeben. Standardmäßig deaktiviert; Texte enthalten die gesamte Konversationshistorie. Siehe [Überwachung](/de/monitoring-usage#api-request-body-event) |

209| `OTEL_LOG_TOOL_CONTENT` | Setzen Sie auf `1`, um Tool-Input- und Output-Inhalte in OpenTelemetry-Span-Ereignisse einzubeziehen. Standardmäßig deaktiviert, um sensible Daten zu schützen. Siehe [Überwachung](/de/monitoring-usage) |

210| `OTEL_LOG_TOOL_DETAILS` | Setzen Sie auf `1`, um Tool-Input-Argumente, MCP-Servernamen, rohe Fehlerstrings bei Tool-Fehlern und andere Tool-Details in OpenTelemetry-Traces und Protokollen einzubeziehen. Standardmäßig deaktiviert, um PII zu schützen. Siehe [Überwachung](/de/monitoring-usage) |

211| `OTEL_LOG_USER_PROMPTS` | Setzen Sie auf `1`, um Benutzer-Prompt-Text in OpenTelemetry-Traces und Protokollen einzubeziehen. Standardmäßig deaktiviert (Prompts werden redigiert). Siehe [Überwachung](/de/monitoring-usage) |

212| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Setzen Sie auf `false`, um Account UUID aus Metrik-Attributen auszuschließen (Standard: enthalten). Siehe [Überwachung](/de/monitoring-usage) |

213| `OTEL_METRICS_INCLUDE_SESSION_ID` | Setzen Sie auf `false`, um Sitzungs-ID aus Metrik-Attributen auszuschließen (Standard: enthalten). Siehe [Überwachung](/de/monitoring-usage) |

214| `OTEL_METRICS_INCLUDE_VERSION` | Setzen Sie auf `true`, um Claude Code-Version in Metrik-Attributen einzubeziehen (Standard: ausgeschlossen). Siehe [Überwachung](/de/monitoring-usage) |

215| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | Überschreiben Sie das Zeichenbudget für Skill-Metadaten, die dem [Skill-Tool](/de/skills#control-who-invokes-a-skill) angezeigt werden. Das Budget skaliert dynamisch bei 1 % des Kontextfensters, mit einem Fallback von 8.000 Zeichen. Legacyname für Rückwärtskompatibilität beibehalten |

216| `TASK_MAX_OUTPUT_LENGTH` | Maximale Anzahl von Zeichen in [Subagenten](/de/sub-agents)-Ausgabe vor Kürzung (Standard: 32000, Maximum: 160000). Bei Kürzung wird die vollständige Ausgabe auf der Festplatte gespeichert und der Pfad ist in der gekürzten Antwort enthalten |

217| `USE_BUILTIN_RIPGREP` | Setzen Sie auf `0`, um das systeminstallierte `rg` anstelle des in Claude Code enthaltenen `rg` zu verwenden |

218| `VERTEX_REGION_CLAUDE_3_5_HAIKU` | Überschreiben Sie die Region für Claude 3.5 Haiku bei Verwendung von Vertex AI |

219| `VERTEX_REGION_CLAUDE_3_5_SONNET` | Überschreiben Sie die Region für Claude 3.5 Sonnet bei Verwendung von Vertex AI |

220| `VERTEX_REGION_CLAUDE_3_7_SONNET` | Überschreiben Sie die Region für Claude 3.7 Sonnet bei Verwendung von Vertex AI |

221| `VERTEX_REGION_CLAUDE_4_0_OPUS` | Überschreiben Sie die Region für Claude 4.0 Opus bei Verwendung von Vertex AI |

222| `VERTEX_REGION_CLAUDE_4_0_SONNET` | Überschreiben Sie die Region für Claude 4.0 Sonnet bei Verwendung von Vertex AI |

223| `VERTEX_REGION_CLAUDE_4_1_OPUS` | Überschreiben Sie die Region für Claude 4.1 Opus bei Verwendung von Vertex AI |

224| `VERTEX_REGION_CLAUDE_4_5_OPUS` | Überschreiben Sie die Region für Claude Opus 4.5 bei Verwendung von Vertex AI |

225| `VERTEX_REGION_CLAUDE_4_5_SONNET` | Überschreiben Sie die Region für Claude Sonnet 4.5 bei Verwendung von Vertex AI |

226| `VERTEX_REGION_CLAUDE_4_6_OPUS` | Überschreiben Sie die Region für Claude Opus 4.6 bei Verwendung von Vertex AI |

227| `VERTEX_REGION_CLAUDE_4_6_SONNET` | Überschreiben Sie die Region für Claude Sonnet 4.6 bei Verwendung von Vertex AI |

228| `VERTEX_REGION_CLAUDE_4_7_OPUS` | {/* min-version: 2.1.111 */}Überschreiben Sie die Region für Claude Opus 4.7 bei Verwendung von Vertex AI |

229| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | Überschreiben Sie die Region für Claude Haiku 4.5 bei Verwendung von Vertex AI |

230 

231Standard-OpenTelemetry-Exporter-Variablen (`OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_PROTOCOL`, `OTEL_EXPORTER_OTLP_HEADERS`, `OTEL_METRIC_EXPORT_INTERVAL`, `OTEL_RESOURCE_ATTRIBUTES` und signalspezifische Varianten) werden ebenfalls unterstützt. Siehe [Überwachung](/de/monitoring-usage) für Konfigurationsdetails.

232 

233## Siehe auch

234 

235* [Einstellungen](/de/settings): Konfigurieren Sie Umgebungsvariablen in `settings.json`, damit sie auf jede Sitzung angewendet werden

236* [CLI-Referenz](/de/cli-reference): Startzeit-Flags

237* [Netzwerkkonfiguration](/de/network-config): Proxy- und TLS-Setup

238* [Überwachung](/de/monitoring-usage): OpenTelemetry-Konfiguration

errors.md +536 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Fehlerreferenz

6 

7> Schlagen Sie Claude Code-Laufzeitfehlermeldungen nach und erfahren Sie, was jede bedeutet und wie Sie sie beheben.

8 

9Diese Seite listet Laufzeitfehler auf, die Claude Code anzeigt, und wie Sie sich von jedem erholen können, sowie was Sie überprüfen sollten, wenn Antworten ohne Fehler seltsam wirken. Für Installationsfehler wie `command not found` oder TLS-Fehler während der Einrichtung siehe [Fehlerbehebung bei Installation und Anmeldung](/de/troubleshooting-install).

10 

11Diese Fehler und Wiederherstellungsbefehle gelten für die CLI, die [Desktop-App](/de/desktop) und [Claude Code im Web](/de/claude-code-on-the-web), da alle drei die gleiche Claude Code CLI verwenden. Für oberflächenspezifische Probleme siehe den Abschnitt zur Fehlerbehebung auf der Seite dieser Oberfläche.

12 

13<Note>

14 Claude Code ruft die Claude API für Modellantworten auf, daher werden die meisten Laufzeitfehler einem zugrunde liegenden API-Fehlercode zugeordnet. Diese Seite behandelt, was jeder Fehler in Claude Code bedeutet und wie Sie sich davon erholen. Für die rohen HTTP-Statuscode-Definitionen siehe die [Claude Platform-Fehlerreferenz](https://platform.claude.com/docs/en/api/errors).

15</Note>

16 

17## Finden Sie Ihren Fehler

18 

19Ordnen Sie die Meldung, die Sie in Ihrem Terminal sehen, einem Abschnitt unten zu.

20 

21| Meldung | Abschnitt |

22| :----------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------ |

23| `API Error: 500 ... Internal server error` | [Serverfehler](#api-error-500-internal-server-error) |

24| `API Error: Repeated 529 Overloaded errors` | [Serverfehler](#api-error-repeated-529-overloaded-errors) |

25| `Request timed out` | [Serverfehler](#request-timed-out), oder [Netzwerk](#unable-to-connect-to-api) wenn die Meldung Ihre Internetverbindung erwähnt |

26| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [Serverfehler](#auto-mode-cannot-determine-the-safety-of-an-action) |

27| `You've hit your session limit` / `You've hit your weekly limit` | [Nutzungslimits](#youve-hit-your-session-limit) |

28| `Server is temporarily limiting requests` | [Nutzungslimits](#server-is-temporarily-limiting-requests) |

29| `Request rejected (429)` | [Nutzungslimits](#request-rejected-429) |

30| `Credit balance is too low` | [Nutzungslimits](#credit-balance-is-too-low) |

31| `Not logged in · Please run /login` | [Authentifizierung](#not-logged-in) |

32| `Invalid API key` | [Authentifizierung](#invalid-api-key) |

33| `This organization has been disabled` | [Authentifizierung](#this-organization-has-been-disabled) |

34| `OAuth token revoked` / `OAuth token has expired` | [Authentifizierung](#oauth-token-revoked-or-expired) |

35| `does not meet scope requirement user:profile` | [Authentifizierung](#oauth-scope-requirement) |

36| `Unable to connect to API` | [Netzwerk](#unable-to-connect-to-api) |

37| `SSL certificate verification failed` | [Netzwerk](#ssl-certificate-errors) |

38| `Prompt is too long` | [Anfragefehler](#prompt-is-too-long) |

39| `Error during compaction: Conversation too long` | [Anfragefehler](#error-during-compaction-conversation-too-long) |

40| `Request too large` | [Anfragefehler](#request-too-large) |

41| `Image was too large` | [Anfragefehler](#image-was-too-large) |

42| `PDF too large` / `PDF is password protected` | [Anfragefehler](#pdf-errors) |

43| `Extra inputs are not permitted` | [Anfragefehler](#extra-inputs-are-not-permitted) |

44| `There's an issue with the selected model` | [Anfragefehler](#theres-an-issue-with-the-selected-model) |

45| `Claude Opus is not available with the Claude Pro plan` | [Anfragefehler](#claude-opus-is-not-available-with-the-claude-pro-plan) |

46| `thinking.type.enabled is not supported for this model` | [Anfragefehler](#thinking-type-enabled-is-not-supported-for-this-model) |

47| `max_tokens must be greater than thinking.budget_tokens` | [Anfragefehler](#thinking-budget-exceeds-output-limit) |

48| `API Error: 400 due to tool use concurrency issues` | [Anfragefehler](#tool-use-or-thinking-block-mismatch) |

49| Antworten scheinen von geringerer Qualität als üblich | [Antwortqualität](#responses-seem-lower-quality-than-usual) |

50 

51## Automatische Wiederholungen

52 

53Claude Code wiederholt vorübergehende Fehler, bevor ein Fehler angezeigt wird. Serverfehler, Überlastungsantworten, Anfrage-Timeouts, vorübergehende 429-Drosselungen und unterbrochene Verbindungen werden alle bis zu 10-mal mit exponentiellem Backoff wiederholt. Während der Wiederholung zeigt der Spinner einen `Retrying in Ns · attempt x/y` Countdown an.

54 

55Wenn Sie einen der Fehler auf dieser Seite sehen, wurden diese Wiederholungen bereits erschöpft. Sie können das Verhalten mit zwei Umgebungsvariablen anpassen:

56 

57| Variable | Standard | Effekt |

58| :---------------------------------------- | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------ |

59| [`CLAUDE_CODE_MAX_RETRIES`](/de/env-vars) | 10 | Anzahl der Wiederholungsversuche. Senken Sie sie, um Fehler in Skripten schneller anzuzeigen; erhöhen Sie sie, um längere Ausfallzeiten zu überbrücken. |

60| [`API_TIMEOUT_MS`](/de/env-vars) | 600000 | Pro-Anfrage-Timeout in Millisekunden. Erhöhen Sie es für langsame Netzwerke oder Proxys. |

61 

62## Serverfehler

63 

64Diese Fehler stammen von der Anthropic-Infrastruktur und nicht von Ihrem Konto oder Ihrer Anfrage.

65 

66### API Error: 500 Internal server error

67 

68Claude Code zeigt den rohen API-Antwortkörper für jeden 5xx-Status an. Das folgende Beispiel zeigt eine 500-Antwort:

69 

70```text theme={null}

71API Error: 500 {"type":"error","error":{"type":"api_error","message":"Internal server error"}} · check status.claude.com

72```

73 

74Dies zeigt einen unerwarteten Fehler in der API an. Er wird nicht durch Ihren Prompt, Ihre Einstellungen oder Ihr Konto verursacht.

75 

76**Was zu tun ist:**

77 

78* Überprüfen Sie [status.claude.com](https://status.claude.com) auf aktive Vorfälle

79* Warten Sie eine Minute und senden Sie Ihre Nachricht erneut. Ihre ursprüngliche Nachricht ist noch in der Konversation, daher können Sie für einen langen Prompt `try again` eingeben, anstatt das Ganze erneut einzufügen.

80* Wenn der Fehler ohne veröffentlichten Vorfall weiterhin auftritt, führen Sie `/feedback` aus, damit Anthropic mit Ihren Anfrageinformationen untersuchen kann. Siehe [Fehler melden](#report-an-error), wenn `/feedback` bei Ihrem Anbieter nicht verfügbar ist.

81 

82### API Error: Repeated 529 Overloaded errors

83 

84Die API ist vorübergehend über alle Benutzer hinweg ausgelastet. Claude Code hat bereits mehrmals versucht, diese Meldung anzuzeigen:

85 

86```text theme={null}

87API Error: Repeated 529 Overloaded errors · check status.claude.com

88```

89 

90Ein 529 ist nicht Ihr Nutzungslimit und wird nicht gegen Ihr Kontingent angerechnet.

91 

92**Was zu tun ist:**

93 

94* Überprüfen Sie [status.claude.com](https://status.claude.com) auf Kapazitätsmitteilungen

95* Versuchen Sie es in ein paar Minuten erneut

96* Führen Sie `/model` aus und wechseln Sie zu einem anderen Modell, um weiterarbeiten zu können, da die Kapazität pro Modell verfolgt wird. Claude Code fordert Sie dazu auf, wenn ein Modell unter besonders hoher Last ist, zum Beispiel `Opus is experiencing high load, please use /model to switch to Sonnet`.

97 

98### Request timed out

99 

100Die API hat nicht vor der Verbindungsfrist geantwortet.

101 

102```text theme={null}

103Request timed out

104```

105 

106Dies kann während Zeiten hoher Last oder bei der Generierung einer sehr großen Antwort auftreten. Das Standard-Anfrage-Timeout beträgt 10 Minuten.

107 

108**Was zu tun ist:**

109 

110* Wiederholen Sie die Anfrage

111* Für langfristige Aufgaben teilen Sie die Arbeit in kleinere Prompts auf

112* Wenn ein langsames Netzwerk oder Proxy die Ursache ist, erhöhen Sie `API_TIMEOUT_MS` wie in [Automatische Wiederholungen](#automatic-retries) beschrieben

113* Wenn Timeouts häufig sind und Ihr Netzwerk ansonsten gesund ist, siehe [Netzwerk- und Verbindungsfehler](#network-and-connection-errors) unten

114 

115### Auto mode cannot determine the safety of an action

116 

117Das Modell, das [auto mode](/de/permission-modes#eliminate-prompts-with-auto-mode) zur Klassifizierung von Aktionen verwendet, ist überlastet, daher hat auto mode die Aktion blockiert, anstatt sie ungeprüft zu genehmigen.

118 

119```text theme={null}

120<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait briefly and then try this action again.

121```

122 

123Lesevorgänge, Suchen und Bearbeitungen in Ihrem Arbeitsverzeichnis überspringen den Klassifizierer, daher funktionieren sie während des Ausfalls weiter.

124 

125**Was zu tun ist:**

126 

127* Wiederholen Sie nach ein paar Sekunden; Claude sieht die gleiche Meldung und wiederholt normalerweise automatisch

128* Wenn Wiederholungen weiterhin fehlschlagen, fahren Sie mit schreibgeschützten Aufgaben fort und kehren Sie später zur blockierten Aktion zurück

129* Dies ist vorübergehend und nicht mit der [auto mode-Berechtigung](/de/permission-modes#eliminate-prompts-with-auto-mode) verbunden; Sie müssen die Einstellungen nicht ändern

130 

131## Nutzungslimits

132 

133Diese Fehler bedeuten, dass ein Kontingent, das an Ihr Konto oder Ihren Plan gebunden ist, erreicht wurde. Sie unterscheiden sich von [Serverfehlern](#server-errors), die alle betreffen.

134 

135### You've hit your session limit

136 

137Abonnementpläne enthalten ein rollendes Nutzungskontingent. Wenn es aufgebraucht ist, sehen Sie eine dieser Meldungen:

138 

139```text theme={null}

140You've hit your session limit · resets 3:45pm

141You've hit your weekly limit · resets Mon 12:00am

142You've hit your Opus limit · resets 3:45pm

143```

144 

145Claude Code blockiert weitere Anfragen bis zur in der Meldung angezeigten Rückstellungszeit.

146 

147**Was zu tun ist:**

148 

149* Warten Sie auf die in der Fehlermeldung angezeigte Rückstellungszeit

150* Führen Sie `/usage` aus, um Ihre Planlimits und deren Rückstellungszeiten anzuzeigen

151* Führen Sie `/extra-usage` aus, um zusätzliche Nutzung auf Pro und Max zu kaufen, oder um sie von Ihrem Administrator auf Team und Enterprise anzufordern. Siehe [Extra usage for paid plans](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) für die Abrechnung.

152* Um Ihren Plan für höhere Basislimits zu aktualisieren, siehe [claude.com/pricing](https://claude.com/pricing)

153 

154Um Ihr verbleibendes Kontingent zu überwachen, bevor Sie das Limit erreichen, fügen Sie die `rate_limits`-Felder zu einer [benutzerdefinierten Statuszeile](/de/statusline#rate-limit-usage) hinzu, oder klicken Sie in der Desktop-App auf den [Nutzungsring](/de/desktop#check-usage) neben dem Modellwähler.

155 

156### Server is temporarily limiting requests

157 

158Die API hat eine kurzfristige Drosselung angewendet, die nicht mit Ihrem Plankontingent zusammenhängt.

159 

160```text theme={null}

161API Error: Server is temporarily limiting requests (not your usage limit)

162```

163 

164Dies wird [automatisch wiederholt](#automatic-retries), bevor es angezeigt wird.

165 

166**Was zu tun ist:**

167 

168* Warten Sie kurz und versuchen Sie es erneut

169* Überprüfen Sie [status.claude.com](https://status.claude.com), wenn es weiterhin auftritt

170 

171### Request rejected (429)

172 

173Sie haben das für Ihren API-Schlüssel, Ihr Amazon Bedrock-Projekt oder Ihr Google Vertex AI-Projekt konfigurierte Ratenlimit erreicht.

174 

175```text theme={null}

176API Error: Request rejected (429) · this may be a temporary capacity issue

177```

178 

179**Was zu tun ist:**

180 

181* Führen Sie `/status` aus und bestätigen Sie, dass die aktive Anmeldeinformation die ist, die Sie erwarten. Ein verwaister `ANTHROPIC_API_KEY` in Ihrer Umgebung kann Anfragen durch einen Low-Tier-Schlüssel statt durch Ihr Abonnement leiten.

182* Überprüfen Sie Ihre Anbieter-Konsole auf die aktiven Limits und fordern Sie einen höheren Tier an, falls erforderlich

183* Für Anthropic API-Schlüssel siehe die [Ratenlimit-Referenz](https://platform.claude.com/docs/en/api/rate-limits) für die Funktionsweise von Tiers und wie Sie Pro-Workspace-Limits setzen

184* Reduzieren Sie die Parallelität: senken Sie [`CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY`](/de/env-vars), vermeiden Sie die Ausführung vieler paralleler Subagenten, oder wechseln Sie mit `/model` zu einem kleineren Modell für Hochvolumen-Skriptläufe

185 

186### Credit balance is too low

187 

188Ihre Console-Organisation hat keine vorausbezahlten Guthaben mehr.

189 

190```text theme={null}

191Credit balance is too low

192```

193 

194**Was zu tun ist:**

195 

196* Fügen Sie Guthaben unter [platform.claude.com/settings/billing](https://platform.claude.com/settings/billing) hinzu, und erwägen Sie, dort Auto-Reload zu aktivieren, damit das Guthaben aufgefüllt wird, bevor es null erreicht

197* Wechseln Sie mit `/login` zur Abonnement-Authentifizierung, wenn Sie einen Pro-, Max-, Team- oder Enterprise-Plan haben

198* Legen Sie Pro-Workspace-Ausgabenlimits in der Console fest, um zu verhindern, dass ein einzelnes Projekt das Org-Guthaben aufbraucht. Siehe [Manage costs effectively](/de/costs).

199 

200## Authentifizierungsfehler

201 

202Diese Fehler bedeuten, dass Claude Code nicht nachweisen kann, wer Sie für die API sind. Führen Sie `/status` jederzeit aus, um zu sehen, welche Anmeldeinformation derzeit aktiv ist.

203 

204### Not logged in

205 

206Für diese Sitzung ist keine gültige Anmeldeinformation verfügbar.

207 

208```text theme={null}

209Not logged in · Please run /login

210```

211 

212**Was zu tun ist:**

213 

214* Führen Sie `/login` aus, um sich mit Ihrem Claude-Abonnement oder Console-Konto zu authentifizieren

215* Wenn Sie erwartet haben, dass eine Umgebungsvariable Sie authentifiziert, bestätigen Sie, dass `ANTHROPIC_API_KEY` in der Shell gesetzt und exportiert ist, in der Sie `claude` gestartet haben

216* Für CI oder Automatisierung, bei der interaktive Anmeldung nicht möglich ist, konfigurieren Sie ein [`apiKeyHelper`](/de/settings#available-settings)-Skript, das beim Start einen Schlüssel abruft

217* Siehe [Authentifizierungspriorität](/de/authentication#authentication-precedence), um zu verstehen, welche Anmeldeinformation gewinnt, wenn mehrere vorhanden sind

218 

219Wenn Sie wiederholt aufgefordert werden, sich anzumelden, siehe [Not logged in or token expired](/de/troubleshoot-install#not-logged-in-or-token-expired) für Systemuhr- und macOS Keychain-Fixes.

220 

221### Invalid API key

222 

223Die Umgebungsvariable `ANTHROPIC_API_KEY` oder das `apiKeyHelper`-Skript hat einen Schlüssel zurückgegeben, den die API abgelehnt hat.

224 

225```text theme={null}

226Invalid API key · Fix external API key

227```

228 

229**Was zu tun ist:**

230 

231* Überprüfen Sie auf Tippfehler und bestätigen Sie, dass der Schlüssel nicht in der [Console](https://platform.claude.com/settings/keys) widerrufen wurde

232* Führen Sie `env | grep ANTHROPIC` in der gleichen Shell aus. Tools wie direnv, dotenv Shell-Plugins und IDE-Terminals können einen veralteten Schlüssel aus einer `.env`-Datei in Ihrem Projekt laden, ohne dass Sie ihn explizit setzen

233* Heben Sie `ANTHROPIC_API_KEY` auf und führen Sie `/login` aus, um stattdessen Abonnement-Authentifizierung zu verwenden

234* Wenn der Schlüssel von einem [`apiKeyHelper`](/de/settings#available-settings)-Skript stammt, führen Sie das Skript direkt aus, um zu bestätigen, dass es einen gültigen Schlüssel auf stdout ausgibt

235* Führen Sie `/status` aus, um zu bestätigen, welche Anmeldeinformationsquelle Claude Code tatsächlich verwendet

236 

237### This organization has been disabled

238 

239Ein veralteter `ANTHROPIC_API_KEY` von einer deaktivierten Console-Organisation überschreibt Ihre Abonnement-Anmeldung.

240 

241```text theme={null}

242Your ANTHROPIC_API_KEY belongs to a disabled organization · Unset the environment variable to use your other credentials

243API Error: 400 ... This organization has been disabled.

244```

245 

246Umgebungsvariablen haben Vorrang vor `/login`, daher wird ein Schlüssel, der in Ihrem Shell-Profil exportiert oder aus einer `.env`-Datei geladen wird, verwendet, auch wenn Sie ein funktionierendes Pro- oder Max-Abonnement haben. Im nicht-interaktiven Modus (`-p`) wird der Schlüssel immer verwendet, wenn er vorhanden ist.

247 

248**Was zu tun ist:**

249 

250* Heben Sie `ANTHROPIC_API_KEY` in der aktuellen Shell auf und entfernen Sie es aus Ihrem Shell-Profil, dann starten Sie `claude` neu

251* Führen Sie danach `/status` aus, um zu bestätigen, dass die aktive Anmeldeinformation Ihr Abonnement ist

252* Wenn keine Umgebungsvariable gesetzt ist und der Fehler weiterhin auftritt, ist die deaktivierte Organisation die, die an Ihrem `/login` gebunden ist. Kontaktieren Sie den Support oder melden Sie sich mit einem anderen Konto an.

253 

254### OAuth token revoked or expired

255 

256Ihre gespeicherte Anmeldung ist nicht mehr gültig. Ein widerrufener Token bedeutet, dass Sie sich überall abgemeldet haben oder ein Administrator den Zugriff entfernt hat; ein abgelaufener Token bedeutet, dass die automatische Aktualisierung mitten in der Sitzung fehlgeschlagen ist.

257 

258```text theme={null}

259OAuth token revoked · Please run /login

260OAuth token has expired · Please run /login

261API Error: 401 ... authentication_error

262```

263 

264**Was zu tun ist:**

265 

266* Führen Sie `/login` aus, um sich erneut anzumelden

267* Wenn der Fehler nach der erneuten Authentifizierung in der gleichen Sitzung zurückkommt, führen Sie zuerst `/logout` aus, um den gespeicherten Token vollständig zu löschen, dann `/login`

268* Für wiederholte Anmeldungsaufforderungen über Starts hinweg siehe die Systemuhr- und macOS Keychain-Überprüfungen in [Fehlerbehebung](/de/troubleshoot-install#not-logged-in-or-token-expired)

269* Für andere Fehler einschließlich `403 Forbidden` und OAuth-Browser-Probleme siehe [Anmeldung und Authentifizierung](/de/troubleshoot-install#login-and-authentication)

270 

271### OAuth scope requirement

272 

273Der gespeicherte Token stammt von vor einem Berechtigungsumfang, den ein neueres Feature benötigt. Sie sehen dies am häufigsten von `/usage` und dem Statuszeilen-Nutzungsindikator:

274 

275```text theme={null}

276OAuth token does not meet scope requirement: user:profile

277```

278 

279**Was zu tun ist:**

280 

281* Führen Sie `/login` aus, um einen neuen Token mit den aktuellen Umfängen zu erstellen. Sie müssen sich nicht zuerst abmelden.

282 

283## Netzwerk- und Verbindungsfehler

284 

285Diese Fehler bedeuten, dass Claude Code die API überhaupt nicht erreichen konnte. Sie stammen fast immer aus Ihrem lokalen Netzwerk, Proxy oder Firewall und nicht aus der Anthropic-Infrastruktur.

286 

287### Unable to connect to API

288 

289Die TCP-Verbindung zur API ist fehlgeschlagen oder wurde nie abgeschlossen.

290 

291```text theme={null}

292Unable to connect to API. Check your internet connection

293Unable to connect to API (ECONNREFUSED)

294Unable to connect to API (ECONNRESET)

295Unable to connect to API (ETIMEDOUT)

296fetch failed

297Request timed out. Check your internet connection and proxy settings

298```

299 

300Häufige Ursachen sind kein Internetzugang, ein VPN, das `api.anthropic.com` blockiert, oder ein erforderlicher Unternehmens-Proxy, der nicht konfiguriert ist.

301 

302**Was zu tun ist:**

303 

304* Bestätigen Sie, dass Sie den API-Host aus der gleichen Shell erreichen können, indem Sie `curl -I https://api.anthropic.com` ausführen. Verwenden Sie auf Windows PowerShell `curl.exe -I https://api.anthropic.com`, damit der integrierte `Invoke-WebRequest`-Alias nicht verwendet wird.

305* Wenn Sie hinter einem Unternehmens-Proxy sind, setzen Sie `HTTPS_PROXY`, bevor Sie Claude Code starten, und siehe [Network configuration](/de/network-config)

306* Wenn Sie durch ein LLM-Gateway oder Relay leiten, setzen Sie [`ANTHROPIC_BASE_URL`](/de/env-vars) auf seine Adresse. Siehe [LLM gateway configuration](/de/llm-gateway) für die Einrichtung.

307* Stellen Sie sicher, dass Ihre Firewall die in [Network access requirements](/de/network-config#network-access-requirements) aufgelisteten Hosts zulässt

308* Vorübergehende Fehler werden [automatisch wiederholt](#automatic-retries); anhaltende Fehler deuten auf ein lokales Netzwerkproblem hin

309 

310Wenn `curl` erfolgreich ist, aber Claude Code immer noch fehlschlägt, ist die Ursache normalerweise etwas zwischen Node.js und dem Netzwerk und nicht das Netzwerk selbst:

311 

312* Überprüfen Sie auf Linux und WSL `/etc/resolv.conf` auf einen unerreichbaren Nameserver. WSL kann insbesondere einen fehlerhaften Resolver vom Host erben.

313* Auf macOS kann ein VPN-Client, der getrennt oder deinstalliert wurde, eine Tunnel-Schnittstelle oder Routing-Regel hinterlassen. Überprüfen Sie `ifconfig` auf verwaiste `utun`-Schnittstellen und entfernen Sie die Netzwerkerweiterung des VPN in den Systemeinstellungen.

314* Docker Desktop und ähnliche Container-Runtimes können ausgehenden Datenverkehr abfangen. Beenden Sie sie und versuchen Sie es erneut, um dies auszuschließen.

315 

316### SSL certificate errors

317 

318Ein Proxy oder Sicherheitsgerät in Ihrem Netzwerk fängt TLS-Datenverkehr mit seinem eigenen Zertifikat ab, und Node.js vertraut ihm nicht.

319 

320```text theme={null}

321Unable to connect to API: SSL certificate verification failed. Check your proxy or corporate SSL certificates

322Unable to connect to API: Self-signed certificate detected

323```

324 

325**Was zu tun ist:**

326 

327* Exportieren Sie das CA-Bundle Ihrer Organisation und zeigen Sie Node mit `NODE_EXTRA_CA_CERTS=/path/to/ca-bundle.pem` darauf

328* Siehe [Network configuration](/de/network-config#custom-ca-certificates) für vollständige Einrichtungsanweisungen

329* Setzen Sie nicht `NODE_TLS_REJECT_UNAUTHORIZED=0`, was die Zertifikatvalidierung vollständig deaktiviert

330 

331## Anfragefehler

332 

333Diese Fehler bedeuten, dass die API Ihre Anfrage erhalten hat, aber ihren Inhalt abgelehnt hat.

334 

335### Prompt is too long

336 

337Die Konversation plus angehängte Dateien überschreitet das Kontextfenster des Modells.

338 

339```text theme={null}

340Prompt is too long

341```

342 

343**Was zu tun ist:**

344 

345* Führen Sie `/compact` aus, um frühere Turns zusammenzufassen und Platz freizugeben, oder `/clear`, um neu zu beginnen

346* Führen Sie `/context` aus, um eine Aufschlüsselung zu sehen, was das Fenster verbraucht: Systemprompt, Tools, Memory-Dateien und Nachrichten

347* Deaktivieren Sie MCP-Server, die Sie nicht verwenden, mit `/mcp disable <name>`, um ihre Tool-Definitionen aus dem Kontext zu entfernen

348* Trimmen Sie große `CLAUDE.md` Memory-Dateien, oder verschieben Sie Anweisungen in [path-scoped rules](/de/memory#path-specific-rules), die nur bei Bedarf geladen werden

349* Subagenten erben jede MCP-Tool-Definition von der übergeordneten Sitzung, was ihr Kontextfenster füllen kann, bevor der erste Turn stattfindet. Deaktivieren Sie MCP-Server, die Sie nicht verwenden, bevor Sie Subagenten spawnen.

350* Auto-compact ist standardmäßig aktiviert und verhindert normalerweise diesen Fehler. Wenn Sie [`DISABLE_AUTO_COMPACT`](/de/env-vars) gesetzt haben, aktivieren Sie es erneut oder führen Sie `/compact` manuell aus, bevor das Fenster voll wird.

351 

352Siehe [Explore the context window](/de/context-window) für eine interaktive Ansicht, wie sich der Kontext füllt.

353 

354### Error during compaction: Conversation too long

355 

356`/compact` selbst ist fehlgeschlagen, weil nicht genug freier Kontext vorhanden ist, um die Zusammenfassung zu halten, die es erzeugt.

357 

358```text theme={null}

359Error during compaction: Conversation too long. Press esc twice to go up a few messages and try again.

360```

361 

362Dies kann auftreten, wenn das Fenster bereits voll ist, wenn auto-compact ausgelöst wird, oder wenn Sie `/compact` ausführen, nachdem Sie `Prompt is too long` gesehen haben.

363 

364**Was zu tun ist:**

365 

366* Drücken Sie Esc zweimal, um die Nachrichtenliste zu öffnen und mehrere Turns zurückzugehen. Dies lässt die neuesten Nachrichten aus dem Kontext fallen. Führen Sie dann `/compact` erneut aus.

367* Wenn das Zurückgehen nicht genug Platz freimacht, führen Sie `/clear` aus, um eine neue Sitzung zu starten. Ihre vorherige Konversation wird beibehalten und kann mit `/resume` erneut geöffnet werden.

368 

369### Request too large

370 

371Der rohe Anfragekörper überschritt das Byte-Limit der API vor der Tokenisierung, normalerweise wegen einer großen eingefügten Datei oder eines Anhangs.

372 

373```text theme={null}

374Request too large (max 30 MB). Double press esc to go back and remove or shrink the attached content.

375```

376 

377Dies ist ein Größenlimit für die HTTP-Anfrage, getrennt vom [Kontextfenster-Limit](#prompt-is-too-long).

378 

379**Was zu tun ist:**

380 

381* Drücken Sie Esc zweimal und gehen Sie zurück über den Turn, der den übergroßen Inhalt hinzugefügt hat

382* Referenzieren Sie große Dateien nach Pfad, anstatt ihren Inhalt einzufügen, damit Claude sie in Chunks lesen kann

383* Für Bilder siehe [Image was too large](#image-was-too-large) unten

384 

385### Image was too large

386 

387Ein eingefügtes oder angehängtes Bild überschreitet die Größen- oder Dimensionslimits der API.

388 

389```text theme={null}

390Image was too large. Double press esc to go back and try again with a smaller image.

391API Error: 400 ... image dimensions exceed max allowed size

392```

393 

394Das Bild bleibt nach dem Fehler in der Konversationshistorie, daher schlägt jede nachfolgende Nachricht mit dem gleichen Fehler fehl, bis Sie es entfernen.

395 

396**Was zu tun ist:**

397 

398* Drücken Sie Esc zweimal und gehen Sie zurück über den Turn, in dem das Bild hinzugefügt wurde

399* Ändern Sie die Größe des Bildes vor dem Einfügen. Die API akzeptiert Bilder bis zu 8000 Pixeln auf der längsten Kante für ein einzelnes Bild oder 2000 Pixel, wenn viele Bilder im Kontext sind.

400* Machen Sie einen engeren Screenshot des relevanten Bereichs statt des gesamten Bildschirms

401 

402### PDF errors

403 

404Das PDF, das Sie angehängt haben, konnte nicht verarbeitet werden.

405 

406```text theme={null}

407PDF too large (max 100 pages, 32 MB). Try splitting it or extracting text first.

408PDF is password protected. Try removing protection or extracting text first.

409The PDF file was not valid. Try converting to a different format first.

410```

411 

412**Was zu tun ist:**

413 

414* Für übergroße PDFs bitten Sie Claude, einen Seitenbereich mit dem Read-Tool zu lesen, anstatt die ganze Datei anzuhängen, oder extrahieren Sie Text mit einem Tool wie `pdftotext` und referenzieren Sie die Ausgabedatei nach Pfad

415* Für geschützte oder ungültige PDFs entfernen Sie das Passwort oder exportieren Sie die Datei erneut aus ihrer Quellanwendung, dann versuchen Sie es erneut

416 

417### Extra inputs are not permitted

418 

419Ein Proxy oder LLM-Gateway zwischen Claude Code und der API hat den `anthropic-beta` Request-Header entfernt, daher hat die API Felder abgelehnt, die davon abhängen.

420 

421```text theme={null}

422API Error: 400 ... Extra inputs are not permitted ... context_management

423API Error: 400 ... Extra inputs are not permitted ... tools.0.custom.input_examples

424API Error: 400 ... Unexpected value(s) for the `anthropic-beta` header

425```

426 

427Claude Code sendet Beta-only-Felder wie `context_management`, `effort` und Tool `input_examples` zusammen mit einem `anthropic-beta` Header, der sie aktiviert. Wenn ein Gateway den Body weiterleitet, aber den Header löscht, sieht die API Felder, die sie nicht erkennt.

428 

429**Was zu tun ist:**

430 

431* Konfigurieren Sie Ihr Gateway, um den `anthropic-beta` Header weiterzuleiten. Siehe [LLM gateway configuration](/de/llm-gateway).

432* Setzen Sie als Fallback [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/de/env-vars) vor dem Start. Dies deaktiviert Features, die den Beta-Header benötigen, damit Anfragen durch ein Gateway erfolgreich sind, das ihn nicht weiterleiten kann.

433 

434### There's an issue with the selected model

435 

436Der konfigurierte Modellname wurde nicht erkannt oder Ihr Konto hat keinen Zugriff darauf.

437 

438```text theme={null}

439There's an issue with the selected model (claude-...). It may not exist or you may not have access to it. Run /model to select a different one.

440```

441 

442**Was zu tun ist:**

443 

444* Führen Sie `/model` aus, um aus Modellen auszuwählen, die für Ihr Konto verfügbar sind

445* Verwenden Sie einen Alias wie `sonnet` oder `opus` statt einer vollständigen versionierten ID. Aliases verfolgen die neueste Version, daher werden sie nicht veraltet. Siehe [Model configuration](/de/model-config).

446* Wenn das falsche Modell immer wieder zurückkommt, ist eine veraltete ID irgendwo gesetzt. Überprüfen Sie in [Prioritätsreihenfolge](/de/model-config#setting-your-model): das `--model` Flag, die `ANTHROPIC_MODEL` Umgebungsvariable, dann das `model` Feld in `.claude/settings.local.json`, die `settings.json` Ihres Projekts und `~/.claude/settings.json`. Entfernen Sie den veralteten Wert und Claude Code fällt auf Ihren Kontostandard zurück.

447* Für Vertex AI-Bereitstellungen siehe [Vertex AI troubleshooting](/de/google-vertex-ai#troubleshooting).

448 

449### Claude Opus is not available with the Claude Pro plan

450 

451Ihr aktiver Abonnementplan enthält nicht das Modell, das Sie ausgewählt haben.

452 

453```text theme={null}

454Claude Opus is not available with the Claude Pro plan · Select a different model in /model

455```

456 

457**Was zu tun ist:**

458 

459* Führen Sie `/model` aus und wählen Sie ein Modell, das Ihr Plan enthält

460* Wenn Sie Ihren Plan kürzlich aktualisiert haben und dies immer noch sehen, führen Sie `/logout` dann `/login` aus. Der gespeicherte Token spiegelt Ihren Plan zum Zeitpunkt der Anmeldung wider, daher wird ein Upgrade im Web nicht in einer bestehenden Sitzung wirksam, bis Sie sich erneut authentifizieren.

461* Siehe [claude.com/pricing](https://claude.com/pricing) für die Modelle, die jeder Plan enthält

462 

463### thinking.type.enabled is not supported for this model

464 

465Ihre Claude Code-Version ist älter als das Minimum für Opus 4.7. Die CLI hat eine Thinking-Konfiguration gesendet, die das Modell nicht mehr akzeptiert.

466 

467```text theme={null}

468API Error: 400 ... "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.

469```

470 

471**Was zu tun ist:**

472 

473* Führen Sie `claude update` aus, um auf v2.1.111 oder später zu aktualisieren, dann starten Sie Claude Code neu

474* Wenn Sie nicht aktualisieren können, führen Sie `/model` aus und wählen Sie stattdessen Opus 4.6 oder Sonnet

475* Wenn Sie dies im Agent SDK treffen, siehe [SDK troubleshooting](/de/agent-sdk/quickstart#troubleshooting)

476 

477### Thinking budget exceeds output limit

478 

479Das konfigurierte Extended Thinking-Budget überschreitet die maximale Antwortlänge, daher bleibt kein Platz für die tatsächliche Antwort.

480 

481```text theme={null}

482API Error: 400 ... max_tokens must be greater than thinking.budget_tokens

483```

484 

485Claude Code passt diese Werte auf der Anthropic API automatisch an. Sie sehen diesen Fehler normalerweise auf Amazon Bedrock oder Google Vertex AI, wenn [`MAX_THINKING_TOKENS`](/de/env-vars) höher als das Output-Limit des Anbieters gesetzt ist, oder wenn Plan Mode das Thinking-Budget erhöht.

486 

487**Was zu tun ist:**

488 

489* Senken Sie `MAX_THINKING_TOKENS`, oder erhöhen Sie [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](/de/env-vars) über das Thinking-Budget

490* Siehe [Extended thinking](/de/common-workflows#use-extended-thinking-thinking-mode) für die Interaktion des Budgets mit der Ausgabelänge

491 

492### Tool use or thinking block mismatch

493 

494Die Konversationshistorie erreichte die API in einem inkonsistenten Zustand, normalerweise nachdem ein Tool-Aufruf unterbrochen oder ein Turn während des Streams bearbeitet wurde.

495 

496```text theme={null}

497API Error: 400 due to tool use concurrency issues. Run /rewind to recover the conversation.

498API Error: 400 ... unexpected `tool_use_id` found in `tool_result` blocks

499API Error: 400 ... thinking blocks ... cannot be modified

500```

501 

502Alle drei Varianten bedeuten das Gleiche: die Sequenz von `tool_use`, `tool_result` und `thinking` Blöcken in der Historie stimmt nicht mehr mit dem überein, was die API erwartet.

503 

504**Was zu tun ist:**

505 

506* Führen Sie `/rewind` aus, oder drücken Sie Esc zweimal, um zu einem Checkpoint vor dem beschädigten Turn zurückzugehen und von dort aus fortzufahren. Siehe [Checkpointing](/de/checkpointing) für die Erstellung und Wiederherstellung von Checkpoints.

507 

508## Responses seem lower quality than usual

509 

510Wenn Claudes Antworten weniger fähig erscheinen als erwartet, aber kein Fehler angezeigt wird, ist die Ursache normalerweise der Konversationszustand und nicht das Modell selbst. Claude Code ändert Modellversionen nicht stillschweigend. Es kann in bestimmten Fällen zu einem Fallback-Modell wechseln, z. B. wenn ein Opus-Kontingent erreicht wird oder ein Bedrock- oder Vertex AI-Bereich Ihr Modell nicht hat; die Modellauswahlprüfung unten erfasst beide, und [Model configuration](/de/model-config) erklärt, wann Fallback angewendet wird.

511 

512Überprüfen Sie diese zuerst:

513 

514* **Modellauswahl**: Führen Sie `/model` aus, um zu bestätigen, dass Sie auf dem Modell sind, das Sie erwarten. Eine vorherige `/model`-Wahl oder eine `ANTHROPIC_MODEL` Umgebungsvariable kann Sie auf einem kleineren Modell haben als beabsichtigt.

515* **Anstrengungsstufe**: Führen Sie `/effort` aus, um die aktuelle Reasoning-Stufe zu überprüfen und sie für schwieriges Debugging oder Design-Arbeit zu erhöhen. Die Standardwerte variieren je nach Modell, daher überprüfen Sie, bevor Sie davon ausgehen, dass Sie unter dem Maximum sind. Siehe [Adjust effort level](/de/model-config#adjust-effort-level) für Pro-Modell-Standardwerte und die `ultrathink` Verknüpfung.

516* **Kontextdruck**: Führen Sie `/context` aus, um zu sehen, wie voll das Fenster ist. Wenn es sich der Kapazität nähert, führen Sie `/compact` an einem natürlichen Haltepunkt oder `/clear` aus, um neu zu beginnen. Siehe [Explore the context window](/de/context-window) für die Auswirkungen von auto-compact auf frühere Turns.

517* **Veraltete Anweisungen**: Große oder veraltete `CLAUDE.md` Dateien und MCP-Tool-Definitionen verbrauchen Kontext und können Antworten lenken. `/doctor` kennzeichnet übergroße Memory-Dateien und Subagenten-Definitionen; `/context` zeigt die MCP-Tool-Token-Nutzung.

518 

519Wenn eine Antwort schiefgeht, funktioniert das Zurückspulen normalerweise besser als das Antworten mit Korrektionen. Drücken Sie Esc zweimal oder führen Sie `/rewind` aus, um zu vor dem schlechten Turn zurückzugehen, dann formulieren Sie den Prompt mit mehr Spezifika um. Korrigieren im Thread hält den falschen Versuch im Kontext, was später Antworten daran verankern kann. Siehe [Checkpointing](/de/checkpointing).

520 

521Wenn die Qualität immer noch seltsam wirkt, nachdem Sie das Obige überprüft haben, führen Sie `/feedback` aus und beschreiben Sie, was Sie erwartet haben versus was Sie bekommen haben. Auf diese Weise eingereichte Rückmeldungen enthalten das Konversationstranskript, das der schnellste Weg für Anthropic ist, eine echte Regression zu diagnostizieren. Siehe [Report an error](#report-an-error), wenn `/feedback` bei Ihrem Anbieter nicht verfügbar ist.

522 

523## Fehler melden

524 

525Diese Seite behandelt Fehler von der Claude API. Für Fehler von anderen Claude Code-Komponenten siehe das relevante Handbuch:

526 

527* MCP-Server konnte sich nicht verbinden oder authentifizieren: [MCP](/de/mcp)

528* Hook-Skript ist fehlgeschlagen oder hat ein Tool blockiert: [Debug hooks](/de/hooks#debug-hooks)

529* Berechtigung verweigert oder Dateisystemfehler während der Installation: [Troubleshooting-Installation und Anmeldung](/de/troubleshoot-install)

530 

531Wenn ein Fehler hier nicht aufgelistet ist oder der vorgeschlagene Fix nicht hilft:

532 

533* Führen Sie `/feedback` in Claude Code aus, um das Transkript und eine Beschreibung an Anthropic zu senden. Der Befehl bietet auch an, ein vorausgefülltes GitHub-Problem zu öffnen. Feedback ist auf Bedrock-, Vertex AI- und Foundry-Bereitstellungen nicht verfügbar.

534* Führen Sie `/doctor` aus, um auf lokale Konfigurationsprobleme zu überprüfen

535* Überprüfen Sie [status.claude.com](https://status.claude.com) auf aktive Vorfälle

536* Suchen Sie [existing issues](https://github.com/anthropics/claude-code/issues) auf GitHub

fast-mode.md +151 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Beschleunigen Sie Antworten mit dem Schnellmodus

6 

7> Erhalten Sie schnellere Opus 4.6-Antworten in Claude Code durch Aktivierung des Schnellmodus.

8 

9<Note>

10 Der Schnellmodus befindet sich in [Forschungsvorschau](#research-preview). Die Funktion, Preisgestaltung und Verfügbarkeit können sich basierend auf Feedback ändern.

11</Note>

12 

13Der Schnellmodus ist eine Hochgeschwindigkeitskonfiguration für Claude Opus 4.6, die das Modell 2,5x schneller macht, allerdings zu höheren Kosten pro Token. Aktivieren Sie ihn mit `/fast`, wenn Sie Geschwindigkeit für interaktive Arbeiten wie schnelle Iteration oder Live-Debugging benötigen, und deaktivieren Sie ihn, wenn Kosten wichtiger sind als Latenz.

14 

15Der Schnellmodus ist kein anderes Modell. Er verwendet denselben Opus 4.6 mit einer anderen API-Konfiguration, die Geschwindigkeit über Kosteneffizienz priorisiert. Sie erhalten identische Qualität und Funktionen, nur schnellere Antworten.

16 

17<Note>

18 Der Schnellmodus erfordert Claude Code v2.1.36 oder später. Überprüfen Sie Ihre Version mit `claude --version`.

19</Note>

20 

21Was Sie wissen sollten:

22 

23* Verwenden Sie `/fast`, um den Schnellmodus in Claude Code CLI ein- oder auszuschalten. Auch über `/fast` in der Claude Code VS Code Extension verfügbar.

24* Die Preisgestaltung für den Schnellmodus auf Opus 4.6 beginnt bei \$30/150 MTok. Der Schnellmodus ist bis 23:59 Uhr PT am 16. Februar mit 50 % Rabatt für alle Pläne verfügbar.

25* Verfügbar für alle Claude Code-Benutzer mit Abonnementplänen (Pro/Max/Team/Enterprise) und Claude Console.

26* Für Claude Code-Benutzer mit Abonnementplänen (Pro/Max/Team/Enterprise) ist der Schnellmodus nur über zusätzliche Nutzung verfügbar und nicht in den Abonnement-Ratenlimits enthalten.

27 

28Diese Seite behandelt, wie Sie [den Schnellmodus aktivieren](#toggle-fast-mode), seine [Kostenabwägung](#understand-the-cost-tradeoff), [wann Sie ihn verwenden](#decide-when-to-use-fast-mode), [Anforderungen](#requirements), [Opt-in pro Sitzung](#require-per-session-opt-in) und [Ratenlimit-Verhalten](#handle-rate-limits).

29 

30## Schnellmodus aktivieren

31 

32Aktivieren Sie den Schnellmodus auf eine dieser Weisen:

33 

34* Geben Sie `/fast` ein und drücken Sie Tab, um ihn ein- oder auszuschalten

35* Setzen Sie `"fastMode": true` in Ihrer [Benutzereinstellungsdatei](/de/settings)

36 

37Standardmäßig bleibt der Schnellmodus über Sitzungen hinweg erhalten. Administratoren können den Schnellmodus so konfigurieren, dass er sich bei jeder Sitzung zurückgesetzt wird. Weitere Informationen finden Sie unter [Opt-in pro Sitzung erforderlich](#require-per-session-opt-in).

38 

39Für die beste Kosteneffizienz aktivieren Sie den Schnellmodus am Anfang einer Sitzung, anstatt ihn mitten in einem Gespräch zu wechseln. Weitere Informationen finden Sie unter [Kostenabwägung verstehen](#understand-the-cost-tradeoff).

40 

41Wenn Sie den Schnellmodus aktivieren:

42 

43* Wenn Sie sich auf einem anderen Modell befinden, wechselt Claude Code automatisch zu Opus 4.6

44* Sie sehen eine Bestätigungsmeldung: „Fast mode ON"

45* Ein kleines `↯`-Symbol wird neben der Eingabeaufforderung angezeigt, während der Schnellmodus aktiv ist

46* Führen Sie `/fast` jederzeit erneut aus, um zu überprüfen, ob der Schnellmodus aktiviert oder deaktiviert ist

47 

48Wenn Sie den Schnellmodus mit `/fast` erneut deaktivieren, bleiben Sie auf Opus 4.6. Das Modell wird nicht auf Ihr vorheriges Modell zurückgesetzt. Um zu einem anderen Modell zu wechseln, verwenden Sie `/model`.

49 

50## Kostenabwägung verstehen

51 

52Der Schnellmodus hat höhere Pro-Token-Preise als Standard-Opus 4.6:

53 

54| Modus | Eingabe (MTok) | Ausgabe (MTok) |

55| ---------------------------------- | -------------- | -------------- |

56| Schnellmodus auf Opus 4.6 (\<200K) | \$30 | \$150 |

57| Schnellmodus auf Opus 4.6 (>200K) | \$60 | \$225 |

58 

59Der Schnellmodus ist mit dem erweiterten Kontextfenster mit 1M Token kompatibel.

60 

61Wenn Sie mitten in einem Gespräch in den Schnellmodus wechseln, zahlen Sie den vollständigen Schnellmodus-Preis für nicht zwischengespeicherte Eingabe-Token für den gesamten Gesprächskontext. Dies kostet mehr, als wenn Sie den Schnellmodus von Anfang an aktiviert hätten.

62 

63## Entscheiden Sie, wann Sie den Schnellmodus verwenden

64 

65Der Schnellmodus ist am besten für interaktive Arbeiten geeignet, bei denen die Antwortlatenz wichtiger ist als die Kosten:

66 

67* Schnelle Iteration bei Code-Änderungen

68* Live-Debugging-Sitzungen

69* Zeitkritische Arbeiten mit engen Fristen

70 

71Der Standardmodus ist besser für:

72 

73* Lange autonome Aufgaben, bei denen Geschwindigkeit weniger wichtig ist

74* Batch-Verarbeitung oder CI/CD-Pipelines

75* Kostenempfindliche Arbeitslasten

76 

77### Schnellmodus vs. Anstrengungsstufe

78 

79Der Schnellmodus und die Anstrengungsstufe beeinflussen beide die Antwortgeschwindigkeit, aber auf unterschiedliche Weise:

80 

81| Einstellung | Auswirkung |

82| -------------------------------- | ------------------------------------------------------------------------------------------------- |

83| **Schnellmodus** | Gleiche Modellqualität, niedrigere Latenz, höhere Kosten |

84| **Niedrigere Anstrengungsstufe** | Weniger Denkzeit, schnellere Antworten, möglicherweise niedrigere Qualität bei komplexen Aufgaben |

85 

86Sie können beide kombinieren: Verwenden Sie den Schnellmodus mit einer niedrigeren [Anstrengungsstufe](/de/model-config#adjust-effort-level) für maximale Geschwindigkeit bei einfachen Aufgaben.

87 

88## Anforderungen

89 

90Der Schnellmodus erfordert alle folgenden Voraussetzungen:

91 

92* **Nicht auf Cloud-Anbietern von Drittanbietern verfügbar**: Der Schnellmodus ist nicht auf Amazon Bedrock, Google Vertex AI oder Microsoft Azure Foundry verfügbar. Der Schnellmodus ist über die Anthropic Console API und für Claude-Abonnementpläne mit zusätzlicher Nutzung verfügbar.

93* **Zusätzliche Nutzung aktiviert**: Ihr Konto muss zusätzliche Nutzung aktiviert haben, die eine Abrechnung über die in Ihrem Plan enthaltene Nutzung hinaus ermöglicht. Aktivieren Sie dies für einzelne Konten in Ihren [Console-Abrechnungseinstellungen](https://platform.claude.com/settings/organization/billing). Für Teams und Enterprise muss ein Administrator die zusätzliche Nutzung für die Organisation aktivieren.

94 

95<Note>

96 Die Nutzung des Schnellmodus wird direkt zur zusätzlichen Nutzung abgerechnet, auch wenn Sie noch Nutzung in Ihrem Plan haben. Dies bedeutet, dass Schnellmodus-Token nicht gegen die in Ihrem Plan enthaltene Nutzung angerechnet werden und vom ersten Token an zum Schnellmodus-Tarif berechnet werden.

97</Note>

98 

99* **Admin-Aktivierung für Teams und Enterprise**: Der Schnellmodus ist standardmäßig für Teams- und Enterprise-Organisationen deaktiviert. Ein Administrator muss den Schnellmodus explizit [aktivieren](#enable-fast-mode-for-your-organization), bevor Benutzer darauf zugreifen können.

100 

101<Note>

102 Wenn Ihr Administrator den Schnellmodus für Ihre Organisation nicht aktiviert hat, zeigt der Befehl `/fast` „Fast mode has been disabled by your organization." an.

103</Note>

104 

105### Schnellmodus für Ihre Organisation aktivieren

106 

107Administratoren können den Schnellmodus aktivieren in:

108 

109* **Console** (API-Kunden): [Claude Code-Einstellungen](https://platform.claude.com/claude-code/preferences)

110* **Claude AI** (Teams und Enterprise): [Admin-Einstellungen > Claude Code](https://claude.ai/admin-settings/claude-code)

111 

112Eine weitere Option zum vollständigen Deaktivieren des Schnellmodus ist das Setzen von `CLAUDE_CODE_DISABLE_FAST_MODE=1`. Siehe [Umgebungsvariablen](/de/env-vars).

113 

114### Opt-in pro Sitzung erforderlich

115 

116Standardmäßig bleibt der Schnellmodus über Sitzungen hinweg erhalten: Wenn ein Benutzer den Schnellmodus aktiviert, bleibt er in zukünftigen Sitzungen aktiviert. Administratoren in [Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_teams#team-&-enterprise)- oder [Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_enterprise)-Plänen können dies verhindern, indem sie `fastModePerSessionOptIn` in [verwalteten Einstellungen](/de/settings#settings-files) oder [servergesteuerten Einstellungen](/de/server-managed-settings) auf `true` setzen. Dies führt dazu, dass jede Sitzung mit deaktiviertem Schnellmodus beginnt und Benutzer ihn explizit mit `/fast` aktivieren müssen.

117 

118```json theme={null}

119{

120 "fastModePerSessionOptIn": true

121}

122```

123 

124Dies ist nützlich zur Kostenkontrolle in Organisationen, in denen Benutzer mehrere gleichzeitige Sitzungen ausführen. Benutzer können den Schnellmodus immer noch mit `/fast` aktivieren, wenn sie Geschwindigkeit benötigen, aber er wird zu Beginn jeder neuen Sitzung zurückgesetzt. Die Schnellmodus-Einstellung des Benutzers wird immer noch gespeichert, sodass das Entfernen dieser Einstellung das standardmäßige persistente Verhalten wiederherstellt.

125 

126## Ratenlimits handhaben

127 

128Der Schnellmodus hat separate Ratenlimits vom Standard-Opus 4.6. Wenn Sie das Ratenlimit des Schnellmodus erreichen oder keine zusätzlichen Nutzungsguthaben mehr haben:

129 

1301. Der Schnellmodus fällt automatisch auf Standard-Opus 4.6 zurück

1312. Das `↯`-Symbol wird grau, um die Abkühlung anzuzeigen

1323. Sie arbeiten weiterhin mit Standard-Geschwindigkeit und -Preisen

1334. Wenn die Abkühlung abläuft, wird der Schnellmodus automatisch wieder aktiviert

134 

135Um den Schnellmodus manuell zu deaktivieren, anstatt auf die Abkühlung zu warten, führen Sie `/fast` erneut aus.

136 

137## Forschungsvorschau

138 

139Der Schnellmodus ist eine Forschungsvorschau-Funktion. Dies bedeutet:

140 

141* Die Funktion kann sich basierend auf Feedback ändern

142* Verfügbarkeit und Preisgestaltung können sich ändern

143* Die zugrunde liegende API-Konfiguration kann sich weiterentwickeln

144 

145Melden Sie Probleme oder Feedback über Ihre üblichen Anthropic-Supportkanäle.

146 

147## Siehe auch

148 

149* [Modellkonfiguration](/de/model-config): Wechseln Sie Modelle und passen Sie Anstrengungsstufen an

150* [Kosten effektiv verwalten](/de/costs): Verfolgen Sie die Token-Nutzung und reduzieren Sie Kosten

151* [Statuszeilen-Konfiguration](/de/statusline): Zeigen Sie Modell- und Kontextinformationen an

features-overview.md +294 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code erweitern

6 

7> Verstehen Sie, wann Sie CLAUDE.md, Skills, Subagents, Hooks, MCP und Plugins verwenden.

8 

9Claude Code kombiniert ein Modell, das über Ihren Code nachdenkt, mit [integrierten Tools](/de/how-claude-code-works#tools) für Dateivorgänge, Suche, Ausführung und Webzugriff. Die integrierten Tools decken die meisten Codierungsaufgaben ab. Dieses Handbuch behandelt die Erweiterungsebene: Funktionen, die Sie hinzufügen, um anzupassen, was Claude weiß, es mit externen Diensten zu verbinden und Workflows zu automatisieren.

10 

11<Note>

12 Informationen zur Funktionsweise der Kern-Agentenschleife finden Sie unter [How Claude Code works](/de/how-claude-code-works).

13</Note>

14 

15**Neu bei Claude Code?** Beginnen Sie mit [CLAUDE.md](/de/memory) für Projektkonventionen. Fügen Sie andere Erweiterungen nach Bedarf hinzu.

16 

17## Übersicht

18 

19Erweiterungen verbinden sich mit verschiedenen Teilen der Agentenschleife:

20 

21* **[CLAUDE.md](/de/memory)** fügt persistenten Kontext hinzu, den Claude in jeder Sitzung sieht

22* **[Skills](/de/skills)** fügen wiederverwendbares Wissen und aufrufbare Workflows hinzu

23* **[MCP](/de/mcp)** verbindet Claude mit externen Diensten und Tools

24* **[Subagents](/de/sub-agents)** führen ihre eigenen Schleifen in isoliertem Kontext aus und geben Zusammenfassungen zurück

25* **[Agent teams](/de/agent-teams)** koordinieren mehrere unabhängige Sitzungen mit gemeinsamen Aufgaben und Peer-to-Peer-Messaging

26* **[Hooks](/de/hooks)** laufen vollständig außerhalb der Schleife als deterministische Skripte

27* **[Plugins](/de/plugins)** und **[Marketplaces](/de/plugin-marketplaces)** verpacken und verteilen diese Funktionen

28 

29[Skills](/de/skills) sind die flexibelste Erweiterung. Ein Skill ist eine Markdown-Datei, die Wissen, Workflows oder Anweisungen enthält. Sie können Skills mit einem Befehl wie `/deploy` aufrufen, oder Claude kann sie automatisch laden, wenn sie relevant sind. Skills können in Ihrer aktuellen Konversation oder in einem isolierten Kontext über Subagents ausgeführt werden.

30 

31## Funktionen an Ihr Ziel anpassen

32 

33Funktionen reichen von immer aktivem Kontext, den Claude in jeder Sitzung sieht, bis zu On-Demand-Funktionen, die Sie oder Claude aufrufen können, bis zu Hintergrundautomatisierung, die bei bestimmten Ereignissen ausgeführt wird. Die folgende Tabelle zeigt, was verfügbar ist und wann jede Funktion sinnvoll ist.

34 

35| Funktion | Was sie tut | Wann man sie verwendet | Beispiel |

36| ---------------------------------- | ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |

37| **CLAUDE.md** | Persistenter Kontext, der in jeder Konversation geladen wird | Projektkonventionen, „immer X tun"-Regeln | „Verwenden Sie pnpm, nicht npm. Führen Sie Tests vor dem Commit aus." |

38| **Skill** | Anweisungen, Wissen und Workflows, die Claude verwenden kann | Wiederverwendbarer Inhalt, Referenzdokumente, wiederholbare Aufgaben | `/deploy` führt Ihre Bereitstellungs-Checkliste aus; API-Docs-Skill mit Endpunkt-Mustern |

39| **Subagent** | Isolierter Ausführungskontext, der zusammengefasste Ergebnisse zurückgibt | Kontextisolation, parallele Aufgaben, spezialisierte Worker | Recherche-Aufgabe, die viele Dateien liest, aber nur wichtige Erkenntnisse zurückgibt |

40| **[Agent teams](/de/agent-teams)** | Koordinieren Sie mehrere unabhängige Claude Code-Sitzungen | Parallele Recherche, neue Funktionsentwicklung, Debugging mit konkurrierenden Hypothesen | Spawnen Sie Reviewer, um Sicherheit, Leistung und Tests gleichzeitig zu überprüfen |

41| **MCP** | Verbindung zu externen Diensten | Externe Daten oder Aktionen | Abfrage Ihrer Datenbank, Posten auf Slack, Steuerung eines Browsers |

42| **Hook** | Deterministisches Skript, das bei Ereignissen ausgeführt wird | Vorhersagbare Automatisierung, kein LLM beteiligt | Führen Sie ESLint nach jeder Dateibearbeitung aus |

43 

44**[Plugins](/de/plugins)** sind die Verpackungsebene. Ein Plugin bündelt Skills, Hooks, Subagents und MCP-Server in eine einzelne installierbare Einheit. Plugin-Skills sind namensgebunden (wie `/my-plugin:review`), sodass mehrere Plugins nebeneinander existieren können. Verwenden Sie Plugins, wenn Sie dasselbe Setup über mehrere Repositories hinweg wiederverwenden möchten oder es über einen **[Marketplace](/de/plugin-marketplaces)** an andere verteilen möchten.

45 

46### Ähnliche Funktionen vergleichen

47 

48Einige Funktionen können ähnlich wirken. Hier erfahren Sie, wie Sie sie unterscheiden.

49 

50<Tabs>

51 <Tab title="Skill vs Subagent">

52 Skills und Subagents lösen unterschiedliche Probleme:

53 

54 * **Skills** sind wiederverwendbare Inhalte, die Sie in jeden Kontext laden können

55 * **Subagents** sind isolierte Worker, die separat von Ihrer Hauptkonversation ausgeführt werden

56 

57 | Aspekt | Skill | Subagent |

58 | ----------------- | ---------------------------------------------------- | ---------------------------------------------------------------------------------------- |

59 | **Was es ist** | Wiederverwendbare Anweisungen, Wissen oder Workflows | Isolierter Worker mit eigenem Kontext |

60 | **Hauptvorteil** | Inhalte über Kontexte hinweg teilen | Kontextisolation. Die Arbeit erfolgt separat, nur die Zusammenfassung wird zurückgegeben |

61 | **Am besten für** | Referenzmaterial, aufrufbare Workflows | Aufgaben, die viele Dateien lesen, parallele Arbeit, spezialisierte Worker |

62 

63 **Skills können Referenz oder Aktion sein.** Referenz-Skills bieten Wissen, das Claude während Ihrer Sitzung nutzt (wie Ihr API-Stilhandbuch). Action-Skills sagen Claude, etwas Bestimmtes zu tun (wie `/deploy`, das Ihren Bereitstellungs-Workflow ausführt).

64 

65 **Verwenden Sie einen Subagent**, wenn Sie Kontextisolation benötigen oder wenn Ihr Kontextfenster voll wird. Der Subagent könnte Dutzende von Dateien lesen oder umfangreiche Suchen durchführen, aber Ihre Hauptkonversation erhält nur eine Zusammenfassung. Da die Arbeit des Subagent Ihren Hauptkontext nicht verbraucht, ist dies auch nützlich, wenn Sie nicht möchten, dass die Zwischenarbeit sichtbar bleibt. Benutzerdefinierte Subagents können ihre eigenen Anweisungen haben und Skills vorladen.

66 

67 **Sie können sich kombinieren.** Ein Subagent kann spezifische Skills vorladen (`skills:`-Feld). Ein Skill kann in isoliertem Kontext mit `context: fork` ausgeführt werden. Weitere Informationen finden Sie unter [Skills](/de/skills).

68 </Tab>

69 

70 <Tab title="CLAUDE.md vs Skill">

71 Beide speichern Anweisungen, aber sie werden unterschiedlich geladen und dienen unterschiedlichen Zwecken.

72 

73 | Aspekt | CLAUDE.md | Skill |

74 | --------------------------- | ------------------------- | -------------------------------------- |

75 | **Lädt** | Jede Sitzung, automatisch | On Demand |

76 | **Kann Dateien enthalten** | Ja, mit `@path`-Importen | Ja, mit `@path`-Importen |

77 | **Kann Workflows auslösen** | Nein | Ja, mit `/<name>` |

78 | **Am besten für** | „Immer X tun"-Regeln | Referenzmaterial, aufrufbare Workflows |

79 

80 **Fügen Sie es in CLAUDE.md ein**, wenn Claude es immer wissen sollte: Codierungskonventionen, Build-Befehle, Projektstruktur, „niemals X tun"-Regeln.

81 

82 **Fügen Sie es in einen Skill ein**, wenn es Referenzmaterial ist, das Claude manchmal benötigt (API-Docs, Stilhandbücher) oder ein Workflow, den Sie mit `/<name>` auslösen (bereitstellen, überprüfen, freigeben).

83 

84 **Faustregel:** Halten Sie CLAUDE.md unter 200 Zeilen. Wenn es wächst, verschieben Sie Referenzinhalte zu Skills oder teilen Sie sie in [`.claude/rules/`](/de/memory#organize-rules-with-clauderules)-Dateien auf.

85 </Tab>

86 

87 <Tab title="CLAUDE.md vs Rules vs Skills">

88 Alle drei speichern Anweisungen, aber sie werden unterschiedlich geladen:

89 

90 | Aspekt | CLAUDE.md | `.claude/rules/` | Skill |

91 | ----------------- | ---------------------------------- | --------------------------------------------------------------- | ----------------------------------------- |

92 | **Lädt** | Jede Sitzung | Jede Sitzung oder wenn übereinstimmende Dateien geöffnet werden | On Demand, wenn aufgerufen oder relevant |

93 | **Umfang** | Ganzes Projekt | Kann auf Dateipfade begrenzt werden | Aufgabenspezifisch |

94 | **Am besten für** | Kernkonventionen und Build-Befehle | Sprachspezifische oder verzeichnisspezifische Richtlinien | Referenzmaterial, wiederholbare Workflows |

95 

96 **Verwenden Sie CLAUDE.md** für Anweisungen, die jede Sitzung benötigt: Build-Befehle, Test-Konventionen, Projektarchitektur.

97 

98 **Verwenden Sie Regeln**, um CLAUDE.md fokussiert zu halten. Regeln mit [`paths`-Frontmatter](/de/memory#path-specific-rules) werden nur geladen, wenn Claude mit übereinstimmenden Dateien arbeitet, was Kontext spart.

99 

100 **Verwenden Sie Skills** für Inhalte, die Claude nur manchmal benötigt, wie API-Dokumentation oder eine Bereitstellungs-Checkliste, die Sie mit `/<name>` auslösen.

101 </Tab>

102 

103 <Tab title="Subagent vs Agent team">

104 Beide parallelisieren Arbeit, aber sie sind architektonisch unterschiedlich:

105 

106 * **Subagents** laufen in Ihrer Sitzung und berichten Ergebnisse an Ihren Hauptkontext zurück

107 * **Agent teams** sind unabhängige Claude Code-Sitzungen, die miteinander kommunizieren

108 

109 | Aspekt | Subagent | Agent team |

110 | ----------------- | ------------------------------------------------------------- | ------------------------------------------------------------ |

111 | **Kontext** | Eigenes Kontextfenster; Ergebnisse kehren zum Aufrufer zurück | Eigenes Kontextfenster; vollständig unabhängig |

112 | **Kommunikation** | Berichtet Ergebnisse nur an den Hauptagent zurück | Teammates senden sich gegenseitig direkt Nachrichten |

113 | **Koordination** | Hauptagent verwaltet alle Arbeiten | Gemeinsame Aufgabenliste mit Selbstkoordination |

114 | **Am besten für** | Fokussierte Aufgaben, bei denen nur das Ergebnis zählt | Komplexe Arbeit, die Diskussion und Zusammenarbeit erfordert |

115 | **Token-Kosten** | Niedriger: Ergebnisse werden zum Hauptkontext zusammengefasst | Höher: jeder Teammate ist eine separate Claude-Instanz |

116 

117 **Verwenden Sie einen Subagent**, wenn Sie einen schnellen, fokussierten Worker benötigen: eine Frage recherchieren, eine Behauptung überprüfen, eine Datei überprüfen. Der Subagent erledigt die Arbeit und gibt eine Zusammenfassung zurück. Ihre Hauptkonversation bleibt sauber.

118 

119 **Verwenden Sie ein Agent Team**, wenn Teammates Erkenntnisse teilen, sich gegenseitig in Frage stellen und unabhängig koordinieren müssen. Agent Teams sind am besten für Recherche mit konkurrierenden Hypothesen, parallele Code-Überprüfung und neue Funktionsentwicklung, bei der jeder Teammate ein separates Stück besitzt.

120 

121 **Übergangspunkt:** Wenn Sie parallele Subagents ausführen, aber auf Kontextgrenzen stoßen, oder wenn Ihre Subagents miteinander kommunizieren müssen, sind Agent Teams der natürliche nächste Schritt.

122 

123 <Note>

124 Agent Teams sind experimentell und standardmäßig deaktiviert. Weitere Informationen zu Setup und aktuellen Einschränkungen finden Sie unter [agent teams](/de/agent-teams).

125 </Note>

126 </Tab>

127 

128 <Tab title="MCP vs Skill">

129 MCP verbindet Claude mit externen Diensten. Skills erweitern das Wissen von Claude, einschließlich der effektiven Verwendung dieser Dienste.

130 

131 | Aspekt | MCP | Skill |

132 | -------------- | ------------------------------------------------------- | ------------------------------------------------------------------ |

133 | **Was es ist** | Protokoll zur Verbindung mit externen Diensten | Wissen, Workflows und Referenzmaterial |

134 | **Bietet** | Tools und Datenzugriff | Wissen, Workflows, Referenzmaterial |

135 | **Beispiele** | Slack-Integration, Datenbankabfragen, Browser-Steuerung | Code-Review-Checkliste, Bereitstellungs-Workflow, API-Stilhandbuch |

136 

137 Diese lösen unterschiedliche Probleme und funktionieren gut zusammen:

138 

139 **MCP** gibt Claude die Möglichkeit, mit externen Systemen zu interagieren. Ohne MCP kann Claude Ihre Datenbank nicht abfragen oder auf Slack posten.

140 

141 **Skills** geben Claude Wissen darüber, wie diese Tools effektiv verwendet werden, plus Workflows, die Sie mit `/<name>` auslösen können. Ein Skill könnte Ihr Team-Datenbankschema und Abfragemuster enthalten, oder einen `/post-to-slack`-Workflow mit Ihren Team-Nachrichtenformatierungsregeln.

142 

143 Beispiel: Ein MCP-Server verbindet Claude mit Ihrer Datenbank. Ein Skill lehrt Claude Ihr Datenmodell, häufige Abfragemuster und welche Tabellen für verschiedene Aufgaben verwendet werden.

144 </Tab>

145</Tabs>

146 

147### Verstehen Sie, wie Funktionen sich schichten

148 

149Funktionen können auf mehreren Ebenen definiert werden: benutzerübergreifend, pro Projekt, über Plugins oder durch verwaltete Richtlinien. Sie können auch CLAUDE.md-Dateien in Unterverzeichnissen verschachteln oder Skills in bestimmten Paketen eines Monorepos platzieren. Wenn dieselbe Funktion auf mehreren Ebenen vorhanden ist, so schichten sie sich:

150 

151* **CLAUDE.md-Dateien** sind additiv: alle Ebenen tragen gleichzeitig Inhalte zu Claudes Kontext bei. Dateien aus Ihrem Arbeitsverzeichnis und darüber werden beim Start geladen; Unterverzeichnisse werden geladen, wenn Sie darin arbeiten. Wenn Anweisungen in Konflikt geraten, nutzt Claude sein Urteilsvermögen, um sie zu reconciliieren, wobei spezifischere Anweisungen typischerweise Vorrang haben. Siehe [wie CLAUDE.md-Dateien geladen werden](/de/memory#how-claudemd-files-load).

152* **Skills und Subagents** überschreiben nach Name: wenn derselbe Name auf mehreren Ebenen vorhanden ist, gewinnt eine Definition basierend auf Priorität (verwaltet > Benutzer > Projekt für Skills; verwaltet > CLI-Flag > Projekt > Benutzer > Plugin für Subagents). Plugin-Skills sind [namensgebunden](/de/plugins#add-skills-to-your-plugin), um Konflikte zu vermeiden. Siehe [Skill-Erkennung](/de/skills#where-skills-live) und [Subagent-Umfang](/de/sub-agents#choose-the-subagent-scope).

153* **MCP-Server** überschreiben nach Name: lokal > Projekt > Benutzer. Siehe [MCP-Umfang](/de/mcp#scope-hierarchy-and-precedence).

154* **Hooks** zusammenführen: alle registrierten Hooks werden für ihre übereinstimmenden Ereignisse unabhängig von der Quelle ausgelöst. Siehe [Hooks](/de/hooks).

155 

156### Funktionen kombinieren

157 

158Jede Erweiterung löst ein anderes Problem: CLAUDE.md behandelt immer aktivem Kontext, Skills behandeln On-Demand-Wissen und Workflows, MCP behandelt externe Verbindungen, Subagents behandeln Isolation und Hooks behandeln Automatisierung. Echte Setups kombinieren sie basierend auf Ihrem Workflow.

159 

160Beispielsweise könnten Sie CLAUDE.md für Projektkonventionen, einen Skill für Ihren Bereitstellungs-Workflow, MCP zur Verbindung mit Ihrer Datenbank und einen Hook zum Ausführen von Linting nach jeder Bearbeitung verwenden. Jede Funktion behandelt das, wofür sie am besten geeignet ist.

161 

162| Muster | Wie es funktioniert | Beispiel |

163| ---------------------- | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |

164| **Skill + MCP** | MCP bietet die Verbindung; ein Skill lehrt Claude, sie gut zu nutzen | MCP verbindet sich mit Ihrer Datenbank, ein Skill dokumentiert Ihr Schema und Abfragemuster |

165| **Skill + Subagent** | Ein Skill spawnt Subagents für parallele Arbeit | `/audit`-Skill startet Sicherheits-, Leistungs- und Style-Subagents, die in isoliertem Kontext arbeiten |

166| **CLAUDE.md + Skills** | CLAUDE.md hält immer aktivem Regeln; Skills halten Referenzmaterial, das On Demand geladen wird | CLAUDE.md sagt 'folgen Sie unseren API-Konventionen", ein Skill enthält das vollständige API-Stilhandbuch |

167| **Hook + MCP** | Ein Hook löst externe Aktionen über MCP aus | Post-Edit-Hook sendet eine Slack-Benachrichtigung, wenn Claude kritische Dateien ändert |

168 

169## Verstehen Sie Kontextkosten

170 

171Jede Funktion, die Sie hinzufügen, verbraucht etwas von Claudes Kontext. Zu viel kann Ihr Kontextfenster füllen, aber es kann auch Rauschen hinzufügen, das Claude weniger effektiv macht; Skills werden möglicherweise nicht korrekt ausgelöst, oder Claude kann Ihre Konventionen aus den Augen verlieren. Das Verständnis dieser Kompromisse hilft Ihnen, ein effektives Setup zu erstellen.

172 

173### Kontextkosten nach Funktion

174 

175Jede Funktion hat eine andere Ladestrategie und Kontextkosten:

176 

177| Funktion | Wann sie lädt | Was lädt | Kontextkosten |

178| -------------- | ------------------------------ | -------------------------------------------------------------- | -------------------------------------------------------- |

179| **CLAUDE.md** | Sitzungsstart | Vollständiger Inhalt | Jede Anfrage |

180| **Skills** | Sitzungsstart + wenn verwendet | Beschreibungen beim Start, vollständiger Inhalt bei Verwendung | Niedrig (Beschreibungen jede Anfrage)\* |

181| **MCP-Server** | Sitzungsstart | Alle Tool-Definitionen und Schemas | Jede Anfrage |

182| **Subagents** | Wenn gespawnt | Frischer Kontext mit angegebenen Skills | Isoliert von Hauptsitzung |

183| **Hooks** | Bei Auslösung | Nichts (läuft extern) | Null, es sei denn, Hook gibt zusätzlichen Kontext zurück |

184 

185\*Standardmäßig werden Skill-Beschreibungen beim Sitzungsstart geladen, damit Claude entscheiden kann, wann sie verwendet werden. Setzen Sie `disable-model-invocation: true` in das Frontmatter eines Skills, um es vollständig vor Claude zu verbergen, bis Sie es manuell aufrufen. Dies reduziert die Kontextkosten auf Null für Skills, die Sie nur selbst auslösen.

186 

187### Verstehen Sie, wie Funktionen geladen werden

188 

189Jede Funktion wird an verschiedenen Punkten in Ihrer Sitzung geladen. Die folgenden Registerkarten erklären, wann jede geladen wird und was in den Kontext geht.

190 

191<img src="https://mintcdn.com/claude-code/6yTCYq1p37ZB8-CQ/images/context-loading.svg?fit=max&auto=format&n=6yTCYq1p37ZB8-CQ&q=85&s=5a58ce953a35a2412892015e2ad6cb67" alt="Kontextladung: CLAUDE.md und MCP werden beim Sitzungsstart geladen und bleiben in jeder Anfrage. Skills laden Beschreibungen beim Start, vollständigen Inhalt bei Aufruf. Subagents erhalten isolierten Kontext. Hooks laufen extern." width="720" height="410" data-path="images/context-loading.svg" />

192 

193<Tabs>

194 <Tab title="CLAUDE.md">

195 **Wann:** Sitzungsstart

196 

197 **Was lädt:** Vollständiger Inhalt aller CLAUDE.md-Dateien (verwaltet, Benutzer und Projektebenen).

198 

199 **Vererbung:** Claude liest CLAUDE.md-Dateien aus Ihrem Arbeitsverzeichnis bis zur Wurzel und entdeckt verschachtelte in Unterverzeichnissen, wenn es auf diese Dateien zugreift. Weitere Informationen finden Sie unter [How CLAUDE.md files load](/de/memory#how-claudemd-files-load).

200 

201 <Tip>Halten Sie CLAUDE.md unter 200 Zeilen. Verschieben Sie Referenzmaterial zu Skills, die On-Demand geladen werden.</Tip>

202 </Tab>

203 

204 <Tab title="Skills">

205 Skills sind zusätzliche Funktionen in Claudes Toolkit. Sie können Referenzmaterial sein (wie ein API-Stilhandbuch) oder aufrufbare Workflows, die Sie mit `/<name>` auslösen (wie `/deploy`). Claude Code wird mit [gebündelten Skills](/de/skills#bundled-skills) wie `/simplify`, `/batch` und `/debug` ausgeliefert, die sofort funktionieren. Sie können auch Ihre eigenen erstellen. Claude verwendet Skills, wenn angemessen, oder Sie können einen direkt aufrufen.

206 

207 **Wann:** Hängt von der Konfiguration des Skills ab. Standardmäßig werden Beschreibungen beim Sitzungsstart geladen und vollständiger Inhalt bei Verwendung. Für nur-Benutzer-Skills (`disable-model-invocation: true`) wird nichts geladen, bis Sie sie aufrufen.

208 

209 **Was lädt:** Für modell-aufrufbare Skills sieht Claude Namen und Beschreibungen in jeder Anfrage. Wenn Sie einen Skill mit `/<name>` aufrufen oder Claude ihn automatisch lädt, wird der vollständige Inhalt in Ihre Konversation geladen.

210 

211 **Wie Claude Skills wählt:** Claude gleicht Ihre Aufgabe gegen Skill-Beschreibungen ab, um zu entscheiden, welche relevant sind. Wenn Beschreibungen vage oder überlappend sind, kann Claude den falschen Skill laden oder einen verpassen, der helfen würde. Um Claude zu sagen, einen bestimmten Skill zu verwenden, rufen Sie ihn mit `/<name>` auf. Skills mit `disable-model-invocation: true` sind für Claude unsichtbar, bis Sie sie aufrufen.

212 

213 **Kontextkosten:** Niedrig bis verwendet. Nur-Benutzer-Skills haben Null-Kosten bis aufgerufen.

214 

215 **In Subagents:** Skills funktionieren in Subagents anders. Anstelle von On-Demand-Laden werden Skills, die an einen Subagent übergeben werden, vollständig in seinen Kontext beim Start vorgeladen. Subagents erben Skills nicht von der Hauptsitzung; Sie müssen sie explizit angeben.

216 

217 <Tip>Verwenden Sie `disable-model-invocation: true` für Skills mit Nebenwirkungen. Dies spart Kontext und stellt sicher, dass nur Sie sie auslösen.</Tip>

218 </Tab>

219 

220 <Tab title="MCP-Server">

221 **Wann:** Sitzungsstart.

222 

223 **Was lädt:** Alle Tool-Definitionen und JSON-Schemas von verbundenen Servern.

224 

225 **Kontextkosten:** [Tool-Suche](/de/mcp#scale-with-mcp-tool-search) (standardmäßig aktiviert) lädt MCP-Tools bis zu 10% des Kontexts und verschiebt den Rest bis zur Notwendigkeit.

226 

227 **Zuverlässigkeitshinweis:** MCP-Verbindungen können während einer Sitzung stillschweigend fehlschlagen. Wenn ein Server die Verbindung trennt, verschwinden seine Tools ohne Warnung. Claude kann versuchen, ein Tool zu verwenden, das nicht mehr vorhanden ist. Wenn Sie bemerken, dass Claude ein MCP-Tool nicht verwenden kann, auf das es zuvor zugreifen konnte, überprüfen Sie die Verbindung mit `/mcp`.

228 

229 <Tip>Führen Sie `/mcp` aus, um Token-Kosten pro Server zu sehen. Trennen Sie Server, die Sie nicht aktiv verwenden.</Tip>

230 </Tab>

231 

232 <Tab title="Subagents">

233 **Wann:** On Demand, wenn Sie oder Claude einen für eine Aufgabe spawnt.

234 

235 **Was lädt:** Frischer, isolierter Kontext, der Folgendes enthält:

236 

237 * Der System-Prompt (geteilt mit Parent für Cache-Effizienz)

238 * Vollständiger Inhalt von Skills, die im `skills:`-Feld des Agenten aufgelistet sind

239 * CLAUDE.md und Git-Status (geerbt vom Parent)

240 * Welcher Kontext auch immer der Lead-Agent im Prompt übergibt

241 

242 **Kontextkosten:** Isoliert von Hauptsitzung. Subagents erben Ihre Konversationshistorie oder aufgerufenen Skills nicht.

243 

244 <Tip>Verwenden Sie Subagents für Arbeit, die Ihren vollständigen Konversationskontext nicht benötigt. Ihre Isolation verhindert, dass Ihre Hauptsitzung aufgebläht wird.</Tip>

245 </Tab>

246 

247 <Tab title="Hooks">

248 **Wann:** Bei Auslösung. Hooks werden bei bestimmten Lebenszyklusereignissen ausgelöst, wie Tool-Ausführung, Sitzungsgrenzen, Prompt-Einreichung, Berechtigungsanfragen und Komprimierung. Siehe [Hooks](/de/hooks) für die vollständige Liste.

249 

250 **Was lädt:** Standardmäßig nichts. Hooks laufen als externe Skripte.

251 

252 **Kontextkosten:** Null, es sei denn, der Hook gibt Ausgabe zurück, die als Nachrichten zu Ihrer Konversation hinzugefügt wird.

253 

254 <Tip>Hooks sind ideal für Nebenwirkungen (Linting, Logging), die Claudes Kontext nicht beeinflussen müssen.</Tip>

255 </Tab>

256</Tabs>

257 

258## Weitere Informationen

259 

260Jede Funktion hat ihr eigenes Handbuch mit Setup-Anweisungen, Beispielen und Konfigurationsoptionen.

261 

262<CardGroup cols={2}>

263 <Card title="CLAUDE.md" icon="file-lines" href="/de/memory">

264 Speichern Sie Projektkontext, Konventionen und Anweisungen

265 </Card>

266 

267 <Card title="Skills" icon="brain" href="/de/skills">

268 Geben Sie Claude Fachkompetenz und wiederverwendbare Workflows

269 </Card>

270 

271 <Card title="Subagents" icon="users" href="/de/sub-agents">

272 Lagern Sie Arbeit in isoliertem Kontext aus

273 </Card>

274 

275 <Card title="Agent teams" icon="network" href="/de/agent-teams">

276 Koordinieren Sie mehrere Sitzungen, die parallel arbeiten

277 </Card>

278 

279 <Card title="MCP" icon="plug" href="/de/mcp">

280 Verbinden Sie Claude mit externen Diensten

281 </Card>

282 

283 <Card title="Hooks" icon="bolt" href="/de/hooks-guide">

284 Automatisieren Sie Workflows mit Hooks

285 </Card>

286 

287 <Card title="Plugins" icon="puzzle-piece" href="/de/plugins">

288 Bündeln und teilen Sie Feature-Sets

289 </Card>

290 

291 <Card title="Marketplaces" icon="store" href="/de/plugin-marketplaces">

292 Hosten und verteilen Sie Plugin-Sammlungen

293 </Card>

294</CardGroup>

fullscreen.md +159 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Vollbildrendering

6 

7> Aktivieren Sie einen sanfteren, flimmerfreien Rendering-Modus mit Mausunterstützung und stabiler Speichernutzung in langen Gesprächen.

8 

9<Note>

10 Vollbildrendering ist eine optionale [Forschungsvorschau](#research-preview) und erfordert Claude Code v2.1.89 oder später. Führen Sie `/tui fullscreen` aus, um in Ihrem aktuellen Gespräch zu wechseln, oder setzen Sie `CLAUDE_CODE_NO_FLICKER=1` auf Versionen vor v2.1.110. Das Verhalten kann sich basierend auf Feedback ändern.

11</Note>

12 

13Vollbildrendering ist ein alternativer Rendering-Pfad für die Claude Code CLI, der Flimmern eliminiert, die Speichernutzung in langen Gesprächen konstant hält und Mausunterstützung hinzufügt. Es zeichnet die Benutzeroberfläche auf dem alternativen Bildschirmpuffer des Terminals, wie `vim` oder `htop`, und rendert nur Nachrichten, die derzeit sichtbar sind. Dies reduziert die Menge der Daten, die bei jeder Aktualisierung an Ihr Terminal gesendet werden.

14 

15Der Unterschied ist am deutlichsten in Terminal-Emulatoren, bei denen der Rendering-Durchsatz der Engpass ist, wie das VS Code integrierte Terminal, tmux und iTerm2. Wenn Ihre Terminal-Scroll-Position nach oben springt, während Claude arbeitet, oder der Bildschirm flackert, während die Tool-Ausgabe einströmt, behebt dieser Modus diese Probleme.

16 

17<Note>

18 Der Begriff Vollbild beschreibt, wie Claude Code die Zeichenfläche des Terminals übernimmt, wie `vim` es tut. Es hat nichts damit zu tun, Ihr Terminal-Fenster zu maximieren, und funktioniert bei jeder Fenstergröße.

19</Note>

20 

21## Vollbildrendering aktivieren

22 

23Führen Sie `/tui fullscreen` in einem beliebigen Claude Code Gespräch aus. Die CLI speichert die [`tui` Einstellung](/de/settings#available-settings) und startet mit Ihrem Gespräch intakt in den Vollbildmodus neu, sodass Sie die Sitzung wechseln können, ohne den Kontext zu verlieren. Führen Sie `/tui` ohne Argument aus, um zu drucken, welcher Renderer aktiv ist.

24 

25Sie können auch die Umgebungsvariable `CLAUDE_CODE_NO_FLICKER` vor dem Starten von Claude Code setzen:

26 

27```bash theme={null}

28CLAUDE_CODE_NO_FLICKER=1 claude

29```

30 

31Die `tui` Einstellung und die Umgebungsvariable sind gleichwertig. Der `/tui` Befehl löscht `CLAUDE_CODE_NO_FLICKER` aus dem neu gestarteten Prozess, sodass die Einstellung, die er schreibt, wirksam wird.

32 

33## Was sich ändert

34 

35Vollbildrendering ändert, wie die CLI auf Ihr Terminal zeichnet. Das Eingabefeld bleibt am unteren Bildschirmrand fixiert, anstatt sich zu bewegen, wenn die Ausgabe einströmt. Wenn die Eingabe stillsteht, während Claude arbeitet, ist Vollbildrendering aktiv. Nur sichtbare Nachrichten werden im Render-Baum beibehalten, sodass der Speicher unabhängig von der Gesprächslänge konstant bleibt.

36 

37Da das Gespräch im alternativen Bildschirmpuffer statt in Ihrem Terminal-Scrollback lebt, funktionieren einige Dinge anders:

38 

39| Vorher | Jetzt | Details |

40| :------------------------------------------------------------------ | :-------------------------------------------------------------------------------------- | :------------------------------------------------------------------------- |

41| `Cmd+f` oder tmux-Suche zum Finden von Text | `Ctrl+o` für Transkript-Modus, dann `/` zum Suchen oder `[` zum Schreiben in Scrollback | [Gespräch durchsuchen und überprüfen](#search-and-review-the-conversation) |

42| Natives Klicken und Ziehen des Terminals zum Auswählen und Kopieren | In-App-Auswahl, wird beim Loslassen der Maus automatisch kopiert | [Maus verwenden](#use-the-mouse) |

43| `Cmd`-Klick zum Öffnen einer URL | Klicken Sie auf die URL | [Maus verwenden](#use-the-mouse) |

44 

45Wenn die Mauserfassung Ihren Arbeitsablauf beeinträchtigt, können Sie sie [deaktivieren](#keep-native-text-selection), während Sie das flimmerfreie Rendering beibehalten.

46 

47## Maus verwenden

48 

49Vollbildrendering erfasst Mausereignisse und verarbeitet sie in Claude Code:

50 

51* **Klicken Sie in die Eingabeaufforderung**, um Ihren Cursor überall im eingegebenen Text zu positionieren.

52* **Klicken Sie auf ein eingeklapptes Tool-Ergebnis**, um es zu erweitern und die vollständige Ausgabe anzuzeigen. Klicken Sie erneut, um es zu reduzieren. Der Tool-Aufruf und sein Ergebnis werden zusammen erweitert. Nur Nachrichten, die mehr zu zeigen haben, sind anklickbar.

53* **Klicken Sie auf eine URL oder einen Dateipfad**, um ihn zu öffnen. Dateipfade in der Tool-Ausgabe, wie die nach einem Edit oder Write gedruckten, öffnen sich in Ihrer Standardanwendung. Einfache `http://` und `https://` URLs öffnen sich in Ihrem Browser. In den meisten Terminals ersetzt dies natives `Cmd`-Klicken oder `Ctrl`-Klicken, das die Mauserfassung abfängt. Im VS Code integrierten Terminal und ähnlichen xterm.js-basierten Terminals verwenden Sie weiterhin `Cmd`-Klick. Claude Code überlässt dort den Link-Handler des Terminals, um zu vermeiden, dass Links zweimal geöffnet werden.

54* **Klicken und ziehen** Sie, um Text überall im Gespräch auszuwählen. Doppelklick wählt ein Wort aus und entspricht iTerm2s Wortgrenzen, sodass ein Dateipfad als eine Einheit ausgewählt wird. Dreifachklick wählt die Zeile aus.

55* **Scrollen Sie mit dem Mausrad**, um sich durch das Gespräch zu bewegen.

56 

57Ausgewählter Text wird beim Loslassen der Maus automatisch in Ihre Zwischenablage kopiert. Um dies auszuschalten, schalten Sie „Beim Auswählen kopieren" in `/config` um. Wenn es ausgeschaltet ist, drücken Sie `Ctrl+Shift+c`, um manuell zu kopieren. Auf Terminals, die das Kitty-Tastaturprotokoll unterstützen, wie Kitty, WezTerm, Ghostty und iTerm2, funktioniert auch `Cmd+c`. Wenn Sie eine Auswahl aktiv haben, kopiert `Ctrl+c` statt zu stornieren.

58 

59Mit einer aktiven Auswahl halten Sie `Shift` und drücken die Pfeiltasten, um sie von der Tastatur aus zu erweitern. `Shift+↑` und `Shift+↓` scrollen den Viewport, wenn die Auswahl die obere oder untere Kante erreicht. `Shift+Home` und `Shift+End` erweitern bis zum Anfang oder Ende der aktuellen Zeile.

60 

61## Gespräch scrollen

62 

63Vollbildrendering verarbeitet das Scrollen in der App. Verwenden Sie diese Verknüpfungen zum Navigieren:

64 

65| Verknüpfung | Aktion |

66| :-------------- | :------------------------------------------------------------------------------------ |

67| `PgUp` / `PgDn` | Scrollen Sie um die Hälfte eines Bildschirms nach oben oder unten |

68| `Ctrl+Home` | Springen Sie zum Anfang des Gesprächs |

69| `Ctrl+End` | Springen Sie zur neuesten Nachricht und aktivieren Sie das automatische Folgen erneut |

70| Mausrad | Scrollen Sie ein paar Zeilen auf einmal |

71 

72Auf Tastaturen ohne dedizierte `PgUp`-, `PgDn`-, `Home`- oder `End`-Tasten, wie MacBook-Tastaturen, halten Sie `Fn` mit den Pfeiltasten: `Fn+↑` sendet `PgUp`, `Fn+↓` sendet `PgDn`, `Fn+←` sendet `Home` und `Fn+→` sendet `End`. Das macht `Ctrl+Fn+→` die Verknüpfung zum Springen nach unten. Wenn sich das unbequem anfühlt, scrollen Sie mit dem Mausrad nach unten, um das Folgen fortzusetzen, oder binden Sie `scroll:bottom` an etwas Erreichbares neu.

73 

74Diese Aktionen sind neu bindbar. Siehe [Scroll-Aktionen](/de/keybindings#scroll-actions) für die vollständige Liste der Aktionsnamen, einschließlich Varianten für halbe Seiten und ganze Seiten, die keine Standardbindung haben.

75 

76### Automatisches Folgen

77 

78Das Scrollen nach oben pausiert das automatische Folgen, sodass neue Ausgabe Sie nicht zurück nach unten zieht. Drücken Sie `Ctrl+End` oder scrollen Sie nach unten, um das Folgen fortzusetzen.

79 

80Um das automatische Folgen ganz auszuschalten, sodass die Ansicht dort bleibt, wo Sie sie verlassen, öffnen Sie `/config` und setzen Sie „Automatisches Scrollen" auf aus. Mit deaktiviertem automatischen Scrollen springt die Ansicht nie von selbst nach unten. Berechtigungsaufforderungen und andere Dialoge, die eine Antwort benötigen, scrollen unabhängig von dieser Einstellung in die Ansicht.

81 

82### Mausrad-Scrollen

83 

84Das Mausrad-Scrollen erfordert, dass Ihr Terminal Mausereignisse an Claude Code weiterleitet. Die meisten Terminals tun dies, wenn eine Anwendung dies anfordert. iTerm2 macht es zu einer Pro-Profil-Einstellung: Wenn das Rad nichts tut, aber `PgUp` und `PgDn` funktionieren, öffnen Sie Einstellungen → Profile → Terminal und aktivieren Sie „Mausberichte aktivieren". Die gleiche Einstellung ist auch erforderlich, damit Klick-zum-Erweitern und Textauswahl funktionieren.

85 

86Wenn sich das Scrollen mit dem Mausrad langsam anfühlt, sendet Ihr Terminal möglicherweise ein Scroll-Ereignis pro physischer Kerbe ohne Multiplikator. Einige Terminals, wie Ghostty und iTerm2 mit aktiviertem schnellerem Scrollen, verstärken bereits Rad-Ereignisse. Andere, einschließlich des VS Code integrierten Terminals, senden genau ein Ereignis pro Kerbe. Claude Code kann nicht erkennen, welches.

87 

88Setzen Sie `CLAUDE_CODE_SCROLL_SPEED`, um die Basis-Scroll-Distanz zu multiplizieren:

89 

90```bash theme={null}

91export CLAUDE_CODE_SCROLL_SPEED=3

92```

93 

94Ein Wert von `3` entspricht dem Standard in `vim` und ähnlichen Anwendungen. Die Einstellung akzeptiert Werte von 1 bis 20.

95 

96## Gespräch durchsuchen und überprüfen

97 

98`Ctrl+o` schaltet zwischen der normalen Eingabeaufforderung und dem Transkript-Modus um. Für eine ruhigere Ansicht, die nur Ihre letzte Eingabeaufforderung, eine einzeilige Zusammenfassung von Tool-Aufrufen mit Edit-Diffstats und die endgültige Antwort zeigt, führen Sie `/focus` aus. Die Einstellung bleibt über Sitzungen hinweg erhalten. Führen Sie `/focus` erneut aus, um es auszuschalten.

99 

100Der Transkript-Modus erhält `less`-ähnliche Navigation und Suche:

101 

102| Taste | Aktion |

103| :------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

104| `/` | Öffnen Sie die Suche. Geben Sie ein, um Übereinstimmungen zu finden, drücken Sie `Enter`, um zu akzeptieren, `Esc`, um abzubrechen und Ihre Scroll-Position wiederherzustellen |

105| `n` / `N` | Springen Sie zur nächsten oder vorherigen Übereinstimmung. Funktioniert, nachdem Sie die Suchleiste geschlossen haben |

106| `j` / `k` oder `↑` / `↓` | Scrollen Sie eine Zeile |

107| `g` / `G` oder `Home` / `End` | Springen Sie nach oben oder unten |

108| `Ctrl+u` / `Ctrl+d` | Scrollen Sie eine halbe Seite |

109| `Ctrl+b` / `Ctrl+f` oder `Space` / `b` | Scrollen Sie eine ganze Seite |

110| `Ctrl+o`, `Esc` oder `q` | Beenden Sie den Transkript-Modus und kehren Sie zur Eingabeaufforderung zurück |

111 

112Das `Cmd+f` Ihres Terminals und die tmux-Suche sehen das Gespräch nicht, da es im alternativen Bildschirmpuffer lebt, nicht im nativen Scrollback. Um den Inhalt an Ihr Terminal zurückzugeben, drücken Sie `Ctrl+o`, um zuerst den Transkript-Modus zu aktivieren, dann:

113 

114* **`[`**: schreibt das vollständige Gespräch in den nativen Scrollback-Puffer Ihres Terminals, mit allen erweiterten Tool-Ausgaben. Das Gespräch ist jetzt gewöhnlicher Text in Ihrem Terminal, sodass `Cmd+f`, tmux-Kopiermodus und alle anderen nativen Tools es durchsuchen oder auswählen können. Lange Sitzungen können einen Moment pausieren, während dies geschieht. Dies dauert, bis Sie den Transkript-Modus mit `Esc` oder `q` beenden, was Sie zum Vollbildrendering zurückbringt. Das nächste `Ctrl+o` startet von vorne.

115* **`v`**: schreibt das Gespräch in eine temporäre Datei und öffnet es in `$VISUAL` oder `$EDITOR`.

116 

117Drücken Sie `Esc` oder `q`, um zur Eingabeaufforderung zurückzukehren.

118 

119## Gespräch löschen

120 

121Drücken Sie `Ctrl+L` zweimal innerhalb von zwei Sekunden, um `/clear` auszuführen und ein neues Gespräch zu starten. Der erste Druck zeichnet den Bildschirm neu und zeigt einen Hinweis; der zweite Druck löscht das Gespräch. Auf macOS löscht auch das doppelte Drücken von `Cmd+K` das Gespräch mit `/clear`.

122 

123## Mit tmux verwenden

124 

125Vollbildrendering funktioniert in tmux mit zwei Einschränkungen.

126 

127Das Scrollen mit dem Mausrad erfordert tmux-Mausmodus. Wenn Ihre `~/.tmux.conf` ihn nicht bereits aktiviert, fügen Sie diese Zeile hinzu und laden Sie Ihre Konfiguration neu:

128 

129```bash theme={null}

130set -g mouse on

131```

132 

133Ohne Mausmodus gehen Rad-Ereignisse an tmux statt an Claude Code. Tastatur-Scrollen mit `PgUp` und `PgDn` funktioniert in beiden Fällen. Claude Code druckt einen einmaligen Hinweis beim Start, wenn es tmux mit ausgeschaltetem Mausmodus erkennt.

134 

135Vollbildrendering ist nicht kompatibel mit iTerm2s tmux-Integrationsmodus, das ist der Modus, den Sie mit `tmux -CC` aktivieren. Im Integrationsmodus rendert iTerm2 jeden tmux-Bereich als natives Split, anstatt tmux auf dem Terminal zeichnen zu lassen. Der alternative Bildschirmpuffer und die Mausverfolgung funktionieren dort nicht korrekt: das Mausrad tut nichts, und Doppelklick kann den Terminal-Status beschädigen. Aktivieren Sie Vollbildrendering nicht in `tmux -CC` Sitzungen. Reguläres tmux in iTerm2 ohne `-CC` funktioniert einwandfrei.

136 

137## Native Textauswahl beibehalten

138 

139Die Mauserfassung ist der häufigste Reibungspunkt, besonders über SSH oder in tmux. Wenn Claude Code Mausereignisse erfasst, funktioniert die native Kopieren-beim-Auswählen Ihres Terminals nicht mehr. Die Auswahl, die Sie mit Klicken und Ziehen treffen, existiert in Claude Code, nicht in Ihrem Terminal-Auswahlpuffer, sodass tmux-Kopiermodus, Kitty-Hinweise und ähnliche Tools sie nicht sehen.

140 

141Claude Code versucht, die Auswahl in Ihre Zwischenablage zu schreiben, aber der Pfad, den es verwendet, hängt von Ihrem Setup ab. In tmux schreibt es in den tmux-Paste-Puffer. Über SSH fällt es auf OSC 52 Escape-Sequenzen zurück, die einige Terminals standardmäßig blockieren. iTerm2 blockiert sie, bis Sie Einstellungen → Allgemein → Auswahl → Anwendungen im Terminal dürfen auf Zwischenablage zugreifen aktivieren. Führen Sie [`/terminal-setup`](/de/terminal-config) in iTerm2 aus, um dies für Sie zu aktivieren. Claude Code druckt nach jeder Kopie einen Toast, der Ihnen mitteilt, welchen Pfad es verwendet hat.

142 

143Für eine einmalige native Auswahl halten Sie den Bypass-Modifikator Ihres Terminals gedrückt, während Sie klicken und ziehen: `Option` in iTerm2 oder `Shift` in den meisten Linux- und Windows-Terminals. Der Modifikator teilt Ihrem Terminal mit, die Auswahl selbst zu verarbeiten, anstatt Mausereignisse an Claude Code weiterzuleiten, sodass `Cmd+C` und die anderen Kopierverknüpfungen Ihres Terminals darauf funktionieren.

144 

145Wenn Sie sich die ganze Zeit auf native Auswahl verlassen, setzen Sie `CLAUDE_CODE_DISABLE_MOUSE=1`, um die Mauserfassung zu deaktivieren, während Sie das flimmerfreie Rendering und flachen Speicher beibehalten:

146 

147```bash theme={null}

148CLAUDE_CODE_NO_FLICKER=1 CLAUDE_CODE_DISABLE_MOUSE=1 claude

149```

150 

151Mit deaktivierter Mauserfassung funktioniert Tastatur-Scrollen mit `PgUp`, `PgDn`, `Ctrl+Home` und `Ctrl+End` immer noch, und Ihr Terminal verarbeitet die Auswahl nativ. Sie verlieren Klick-zum-Positionieren-des-Cursors, Klick-zum-Erweitern-der-Tool-Ausgabe, URL-Klicken und Rad-Scrollen in Claude Code.

152 

153## Forschungsvorschau

154 

155Vollbildrendering ist eine Forschungsvorschau-Funktion. Es wurde auf gängigen Terminal-Emulatoren getestet, aber Sie können auf weniger gängigen Terminals oder ungewöhnlichen Konfigurationen auf Rendering-Probleme stoßen.

156 

157Wenn Sie auf ein Problem stoßen, führen Sie `/feedback` in Claude Code aus, um es zu melden, oder öffnen Sie ein Problem im [claude-code GitHub-Repository](https://github.com/anthropics/claude-code/issues). Geben Sie Ihren Terminal-Emulator-Namen und die Version an.

158 

159Um Vollbildrendering auszuschalten, führen Sie `/tui default` aus, oder heben Sie die Umgebungsvariable auf, wenn Sie sie auf diese Weise aktiviert haben.

github-actions.md +670 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code GitHub Actions

6 

7> Erfahren Sie, wie Sie Claude Code in Ihren Entwicklungs-Workflow mit Claude Code GitHub Actions integrieren

8 

9Claude Code GitHub Actions bringt KI-gestützte Automatisierung in Ihren GitHub-Workflow. Mit einer einfachen `@claude`-Erwähnung in einem beliebigen PR oder Issue kann Claude Ihren Code analysieren, Pull Requests erstellen, Features implementieren und Bugs beheben – alles während er die Standards Ihres Projekts befolgt. Für automatische Reviews, die auf jedem PR ohne Trigger gepostet werden, siehe [GitHub Code Review](/de/code-review).

10 

11<Note>

12 Claude Code GitHub Actions basiert auf dem [Claude Agent SDK](/de/agent-sdk/overview), das die programmgesteuerte Integration von Claude Code in Ihre Anwendungen ermöglicht. Sie können das SDK verwenden, um benutzerdefinierte Automatisierungs-Workflows über GitHub Actions hinaus zu erstellen.

13</Note>

14 

15<Info>

16 **Claude Opus 4.7 ist jetzt verfügbar.** Claude Code GitHub Actions verwenden standardmäßig Sonnet. Um Opus 4.7 zu verwenden, konfigurieren Sie den [Model-Parameter](#breaking-changes-reference) auf `claude-opus-4-7`.

17</Info>

18 

19## Warum Claude Code GitHub Actions verwenden?

20 

21* **Sofortige PR-Erstellung**: Beschreiben Sie, was Sie benötigen, und Claude erstellt einen vollständigen PR mit allen notwendigen Änderungen

22* **Automatisierte Code-Implementierung**: Verwandeln Sie Issues in funktionierenden Code mit einem einzigen Befehl

23* **Befolgt Ihre Standards**: Claude respektiert Ihre `CLAUDE.md`-Richtlinien und vorhandene Code-Muster

24* **Einfaches Setup**: Beginnen Sie in Minuten mit unserem Installer und API-Schlüssel

25* **Sicher von Anfang an**: Ihr Code bleibt auf Githubs Runnern

26 

27## Was kann Claude tun?

28 

29Claude Code bietet eine leistungsstarke GitHub Action, die verändert, wie Sie mit Code arbeiten:

30 

31### Claude Code Action

32 

33Diese GitHub Action ermöglicht es Ihnen, Claude Code in Ihren GitHub Actions-Workflows auszuführen. Sie können dies verwenden, um jeden benutzerdefinierten Workflow auf Basis von Claude Code zu erstellen.

34 

35[Repository anzeigen →](https://github.com/anthropics/claude-code-action)

36 

37## Setup

38 

39## Schnelles Setup

40 

41Der einfachste Weg, diese Action einzurichten, ist über Claude Code im Terminal. Öffnen Sie einfach Claude und führen Sie `/install-github-app` aus.

42 

43Dieser Befehl führt Sie durch die Einrichtung der GitHub-App und erforderlichen Secrets.

44 

45<Note>

46 * Sie müssen ein Repository-Admin sein, um die GitHub-App zu installieren und Secrets hinzuzufügen

47 * Die GitHub-App fordert Lese- und Schreibberechtigungen für Contents, Issues und Pull Requests an

48 * Diese Schnellstart-Methode ist nur für direkte Claude API-Benutzer verfügbar. Wenn Sie Amazon Bedrock oder Google Vertex AI verwenden, siehe bitte den Abschnitt [Verwendung mit Amazon Bedrock & Google Vertex AI](#using-with-amazon-bedrock-%26-google-vertex-ai).

49</Note>

50 

51## Manuelles Setup

52 

53Wenn der Befehl `/install-github-app` fehlschlägt oder Sie manuelles Setup bevorzugen, folgen Sie bitte diesen manuellen Setup-Anweisungen:

54 

551. **Installieren Sie die Claude GitHub-App** in Ihrem Repository: [https://github.com/apps/claude](https://github.com/apps/claude)

56 

57 Die Claude GitHub-App erfordert die folgenden Repository-Berechtigungen:

58 

59 * **Contents**: Lesen & Schreiben (zum Ändern von Repository-Dateien)

60 * **Issues**: Lesen & Schreiben (zum Antworten auf Issues)

61 * **Pull requests**: Lesen & Schreiben (zum Erstellen von PRs und Pushen von Änderungen)

62 

63 Weitere Details zu Sicherheit und Berechtigungen finden Sie in der [Sicherheitsdokumentation](https://github.com/anthropics/claude-code-action/blob/main/docs/security.md).

642. **Fügen Sie ANTHROPIC\_API\_KEY** zu Ihren Repository-Secrets hinzu ([Erfahren Sie, wie Sie Secrets in GitHub Actions verwenden](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions))

653. **Kopieren Sie die Workflow-Datei** von [examples/claude.yml](https://github.com/anthropics/claude-code-action/blob/main/examples/claude.yml) in das Verzeichnis `.github/workflows/` Ihres Repositories

66 

67<Tip>

68 Nach Abschluss des Schnellstarts oder manuellen Setups testen Sie die Action, indem Sie `@claude` in einem Issue- oder PR-Kommentar markieren.

69</Tip>

70 

71## Upgrade von Beta

72 

73<Warning>

74 Claude Code GitHub Actions v1.0 führt Breaking Changes ein, die ein Update Ihrer Workflow-Dateien erfordern, um von der Beta-Version auf v1.0 zu aktualisieren.

75</Warning>

76 

77Wenn Sie derzeit die Beta-Version von Claude Code GitHub Actions verwenden, empfehlen wir Ihnen, Ihre Workflows auf die GA-Version zu aktualisieren. Die neue Version vereinfacht die Konfiguration und fügt leistungsstarke neue Funktionen wie automatische Modusterkennung hinzu.

78 

79### Wesentliche Änderungen

80 

81Alle Beta-Benutzer müssen diese Änderungen an ihren Workflow-Dateien vornehmen, um zu aktualisieren:

82 

831. **Aktualisieren Sie die Action-Version**: Ändern Sie `@beta` zu `@v1`

842. **Entfernen Sie die Moduskonfiguration**: Löschen Sie `mode: "tag"` oder `mode: "agent"` (wird jetzt automatisch erkannt)

853. **Aktualisieren Sie Prompt-Eingaben**: Ersetzen Sie `direct_prompt` durch `prompt`

864. **Verschieben Sie CLI-Optionen**: Konvertieren Sie `max_turns`, `model`, `custom_instructions` usw. zu `claude_args`

87 

88### Breaking Changes Referenz

89 

90| Alte Beta-Eingabe | Neue v1.0-Eingabe |

91| --------------------- | ------------------------------------- |

92| `mode` | *(Entfernt - automatisch erkannt)* |

93| `direct_prompt` | `prompt` |

94| `override_prompt` | `prompt` mit GitHub-Variablen |

95| `custom_instructions` | `claude_args: --append-system-prompt` |

96| `max_turns` | `claude_args: --max-turns` |

97| `model` | `claude_args: --model` |

98| `allowed_tools` | `claude_args: --allowedTools` |

99| `disallowed_tools` | `claude_args: --disallowedTools` |

100| `claude_env` | `settings` JSON-Format |

101 

102### Vorher- und Nachher-Beispiel

103 

104**Beta-Version:**

105 

106```yaml theme={null}

107- uses: anthropics/claude-code-action@beta

108 with:

109 mode: "tag"

110 direct_prompt: "Review this PR for security issues"

111 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

112 custom_instructions: "Follow our coding standards"

113 max_turns: "10"

114 model: "claude-sonnet-4-6"

115```

116 

117**GA-Version (v1.0):**

118 

119```yaml theme={null}

120- uses: anthropics/claude-code-action@v1

121 with:

122 prompt: "Review this PR for security issues"

123 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

124 claude_args: |

125 --append-system-prompt "Follow our coding standards"

126 --max-turns 10

127 --model claude-sonnet-4-6

128```

129 

130<Tip>

131 Die Action erkennt jetzt automatisch, ob sie im interaktiven Modus (antwortet auf `@claude`-Erwähnungen) oder im Automatisierungsmodus (wird sofort mit einem Prompt ausgeführt) ausgeführt werden soll, basierend auf Ihrer Konfiguration.

132</Tip>

133 

134## Beispiel-Anwendungsfälle

135 

136Claude Code GitHub Actions kann Ihnen bei einer Vielzahl von Aufgaben helfen. Das [Beispielverzeichnis](https://github.com/anthropics/claude-code-action/tree/main/examples) enthält einsatzbereite Workflows für verschiedene Szenarien.

137 

138### Basis-Workflow

139 

140```yaml theme={null}

141name: Claude Code

142on:

143 issue_comment:

144 types: [created]

145 pull_request_review_comment:

146 types: [created]

147jobs:

148 claude:

149 runs-on: ubuntu-latest

150 steps:

151 - uses: anthropics/claude-code-action@v1

152 with:

153 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

154 # Responds to @claude mentions in comments

155```

156 

157### Verwendung von skills

158 

159```yaml theme={null}

160name: Code Review

161on:

162 pull_request:

163 types: [opened, synchronize]

164jobs:

165 review:

166 runs-on: ubuntu-latest

167 steps:

168 - uses: anthropics/claude-code-action@v1

169 with:

170 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

171 prompt: "Review this pull request for code quality, correctness, and security. Analyze the diff, then post your findings as review comments."

172 claude_args: "--max-turns 5"

173```

174 

175### Benutzerdefinierte Automatisierung mit Prompts

176 

177```yaml theme={null}

178name: Daily Report

179on:

180 schedule:

181 - cron: "0 9 * * *"

182jobs:

183 report:

184 runs-on: ubuntu-latest

185 steps:

186 - uses: anthropics/claude-code-action@v1

187 with:

188 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

189 prompt: "Generate a summary of yesterday's commits and open issues"

190 claude_args: "--model opus"

191```

192 

193### Häufige Anwendungsfälle

194 

195In Issue- oder PR-Kommentaren:

196 

197```text theme={null}

198@claude implement this feature based on the issue description

199@claude how should I implement user authentication for this endpoint?

200@claude fix the TypeError in the user dashboard component

201```

202 

203Claude wird automatisch den Kontext analysieren und angemessen antworten.

204 

205## Best Practices

206 

207### CLAUDE.md-Konfiguration

208 

209Erstellen Sie eine `CLAUDE.md`-Datei im Root-Verzeichnis Ihres Repositories, um Code-Style-Richtlinien, Review-Kriterien, projektspezifische Regeln und bevorzugte Muster zu definieren. Diese Datei leitet Claudes Verständnis Ihrer Projektstandards.

210 

211### Sicherheitsüberlegungen

212 

213<Warning>Committen Sie API-Schlüssel niemals direkt in Ihr Repository.</Warning>

214 

215Umfassende Sicherheitsleitlinien einschließlich Berechtigungen, Authentifizierung und Best Practices finden Sie in der [Claude Code Action-Sicherheitsdokumentation](https://github.com/anthropics/claude-code-action/blob/main/docs/security.md).

216 

217Verwenden Sie immer GitHub Secrets für API-Schlüssel:

218 

219* Fügen Sie Ihren API-Schlüssel als Repository-Secret namens `ANTHROPIC_API_KEY` hinzu

220* Referenzieren Sie ihn in Workflows: `anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}`

221* Begrenzen Sie Action-Berechtigungen auf nur das Notwendigste

222* Überprüfen Sie Claudes Vorschläge vor dem Mergen

223 

224Verwenden Sie immer GitHub Secrets (zum Beispiel `${{ secrets.ANTHROPIC_API_KEY }}`), anstatt API-Schlüssel direkt in Ihren Workflow-Dateien zu hardcodieren.

225 

226### Optimierung der Leistung

227 

228Verwenden Sie Issue-Templates, um Kontext bereitzustellen, halten Sie Ihre `CLAUDE.md` prägnant und fokussiert, und konfigurieren Sie angemessene Timeouts für Ihre Workflows.

229 

230### CI-Kosten

231 

232Bei der Verwendung von Claude Code GitHub Actions sollten Sie sich der damit verbundenen Kosten bewusst sein:

233 

234**GitHub Actions-Kosten:**

235 

236* Claude Code wird auf GitHub-gehosteten Runnern ausgeführt, die Ihre GitHub Actions-Minuten verbrauchen

237* Siehe [Abrechnungsdokumentation von GitHub](https://docs.github.com/en/billing/managing-billing-for-your-products/managing-billing-for-github-actions/about-billing-for-github-actions) für detaillierte Preise und Minutenlimits

238 

239**API-Kosten:**

240 

241* Jede Claude-Interaktion verbraucht API-Token basierend auf der Länge von Prompts und Antworten

242* Die Token-Nutzung variiert je nach Aufgabenkomplexität und Codebase-Größe

243* Siehe [Claudes Preisseite](https://claude.com/platform/api) für aktuelle Token-Raten

244 

245**Tipps zur Kostenoptimierung:**

246 

247* Verwenden Sie spezifische `@claude`-Befehle, um unnötige API-Aufrufe zu reduzieren

248* Konfigurieren Sie angemessene `--max-turns` in `claude_args`, um übermäßige Iterationen zu verhindern

249* Legen Sie Workflow-Level-Timeouts fest, um unkontrollierte Jobs zu vermeiden

250* Erwägen Sie die Verwendung von Githubs Concurrency-Kontrollen, um parallele Ausführungen zu begrenzen

251 

252## Konfigurationsbeispiele

253 

254Die Claude Code Action v1 vereinfacht die Konfiguration mit einheitlichen Parametern:

255 

256```yaml theme={null}

257- uses: anthropics/claude-code-action@v1

258 with:

259 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

260 prompt: "Your instructions here" # Optional

261 claude_args: "--max-turns 5" # Optional CLI arguments

262```

263 

264Wichtige Funktionen:

265 

266* **Einheitliche Prompt-Schnittstelle** - Verwenden Sie `prompt` für alle Anweisungen

267* **Skills** - Rufen Sie installierte [skills](/de/skills) direkt aus dem Prompt auf

268* **CLI-Passthrough** - Jedes Claude Code CLI-Argument über `claude_args`

269* **Flexible Trigger** - Funktioniert mit jedem GitHub-Event

270 

271Besuchen Sie das [Beispielverzeichnis](https://github.com/anthropics/claude-code-action/tree/main/examples) für vollständige Workflow-Dateien.

272 

273<Tip>

274 Wenn Claude auf Issue- oder PR-Kommentare antwortet, antwortet er automatisch auf @claude-Erwähnungen. Für andere Events verwenden Sie den `prompt`-Parameter, um Anweisungen bereitzustellen.

275</Tip>

276 

277## Verwendung mit Amazon Bedrock & Google Vertex AI

278 

279Für Unternehmensumgebungen können Sie Claude Code GitHub Actions mit Ihrer eigenen Cloud-Infrastruktur verwenden. Dieser Ansatz gibt Ihnen Kontrolle über Datenresidenz und Abrechnung, während Sie die gleiche Funktionalität beibehalten.

280 

281### Voraussetzungen

282 

283Bevor Sie Claude Code GitHub Actions mit Cloud-Providern einrichten, benötigen Sie:

284 

285#### Für Google Cloud Vertex AI:

286 

2871. Ein Google Cloud-Projekt mit aktiviertem Vertex AI

2882. Workload Identity Federation für GitHub Actions konfiguriert

2893. Ein Service-Konto mit erforderlichen Berechtigungen

2904. Eine GitHub-App (empfohlen) oder verwenden Sie das Standard-GITHUB\_TOKEN

291 

292#### Für Amazon Bedrock:

293 

2941. Ein AWS-Konto mit aktiviertem Amazon Bedrock

2952. GitHub OIDC Identity Provider in AWS konfiguriert

2963. Eine IAM-Rolle mit Bedrock-Berechtigungen

2974. Eine GitHub-App (empfohlen) oder verwenden Sie das Standard-GITHUB\_TOKEN

298 

299<Steps>

300 <Step title="Erstellen Sie eine benutzerdefinierte GitHub-App (empfohlen für 3P-Provider)">

301 Für beste Kontrolle und Sicherheit bei der Verwendung von 3P-Providern wie Vertex AI oder Bedrock empfehlen wir, Ihre eigene GitHub-App zu erstellen:

302 

303 1. Gehen Sie zu [https://github.com/settings/apps/new](https://github.com/settings/apps/new)

304 2. Füllen Sie die grundlegenden Informationen aus:

305 * **GitHub App-Name**: Wählen Sie einen eindeutigen Namen (z. B. 'YourOrg Claude Assistant")

306 * **Homepage URL**: Website Ihrer Organisation oder die Repository-URL

307 3. Konfigurieren Sie die App-Einstellungen:

308 * **Webhooks**: Deaktivieren Sie „Active" (nicht erforderlich für diese Integration)

309 4. Legen Sie die erforderlichen Berechtigungen fest:

310 * **Repository-Berechtigungen**:

311 * Contents: Lesen & Schreiben

312 * Issues: Lesen & Schreiben

313 * Pull requests: Lesen & Schreiben

314 5. Klicken Sie auf „Create GitHub App"

315 6. Nach der Erstellung klicken Sie auf „Generate a private key" und speichern Sie die heruntergeladene `.pem`-Datei

316 7. Notieren Sie sich Ihre App-ID von der App-Einstellungsseite

317 8. Installieren Sie die App in Ihrem Repository:

318 * Klicken Sie auf der Einstellungsseite Ihrer App auf „Install App" in der linken Seitenleiste

319 * Wählen Sie Ihr Konto oder Ihre Organisation

320 * Wählen Sie „Only select repositories" und wählen Sie das spezifische Repository

321 * Klicken Sie auf „Install"

322 9. Fügen Sie den privaten Schlüssel als Secret zu Ihrem Repository hinzu:

323 * Gehen Sie zu den Einstellungen Ihres Repositories → Secrets and variables → Actions

324 * Erstellen Sie ein neues Secret namens `APP_PRIVATE_KEY` mit dem Inhalt der `.pem`-Datei

325 10. Fügen Sie die App-ID als Secret hinzu:

326 

327 * Erstellen Sie ein neues Secret namens `APP_ID` mit der ID Ihrer GitHub-App

328 

329 <Note>

330 Diese App wird mit der [actions/create-github-app-token](https://github.com/actions/create-github-app-token)-Action verwendet, um Authentifizierungs-Token in Ihren Workflows zu generieren.

331 </Note>

332 

333 **Alternative für Claude API oder wenn Sie keine eigene Github-App einrichten möchten**: Verwenden Sie die offizielle Anthropic-App:

334 

335 1. Installieren Sie von: [https://github.com/apps/claude](https://github.com/apps/claude)

336 2. Keine zusätzliche Konfiguration erforderlich für die Authentifizierung

337 </Step>

338 

339 <Step title="Konfigurieren Sie die Cloud-Provider-Authentifizierung">

340 Wählen Sie Ihren Cloud-Provider und richten Sie sichere Authentifizierung ein:

341 

342 <AccordionGroup>

343 <Accordion title="Amazon Bedrock">

344 **Konfigurieren Sie AWS, um GitHub Actions die sichere Authentifizierung ohne Speicherung von Anmeldedaten zu ermöglichen.**

345 

346 > **Sicherheitshinweis**: Verwenden Sie Repository-spezifische Konfigurationen und gewähren Sie nur die minimal erforderlichen Berechtigungen.

347 

348 **Erforderliches Setup**:

349 

350 1. **Aktivieren Sie Amazon Bedrock**:

351 * Fordern Sie Zugriff auf Claude-Modelle in Amazon Bedrock an

352 * Für regionsübergreifende Modelle fordern Sie Zugriff in allen erforderlichen Regionen an

353 

354 2. **Richten Sie GitHub OIDC Identity Provider ein**:

355 * Provider-URL: `https://token.actions.githubusercontent.com`

356 * Audience: `sts.amazonaws.com`

357 

358 3. **Erstellen Sie eine IAM-Rolle für GitHub Actions**:

359 * Vertrauenswürdiger Entity-Typ: Web Identity

360 * Identity Provider: `token.actions.githubusercontent.com`

361 * Berechtigungen: `AmazonBedrockFullAccess`-Richtlinie

362 * Konfigurieren Sie die Trust-Richtlinie für Ihr spezifisches Repository

363 

364 **Erforderliche Werte**:

365 

366 Nach dem Setup benötigen Sie:

367 

368 * **AWS\_ROLE\_TO\_ASSUME**: Das ARN der IAM-Rolle, die Sie erstellt haben

369 

370 <Tip>

371 OIDC ist sicherer als die Verwendung statischer AWS-Zugriffstasten, da Anmeldedaten temporär sind und automatisch rotiert werden.

372 </Tip>

373 

374 Siehe [AWS-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html) für detaillierte OIDC-Setup-Anweisungen.

375 </Accordion>

376 

377 <Accordion title="Google Vertex AI">

378 **Konfigurieren Sie Google Cloud, um GitHub Actions die sichere Authentifizierung ohne Speicherung von Anmeldedaten zu ermöglichen.**

379 

380 > **Sicherheitshinweis**: Verwenden Sie Repository-spezifische Konfigurationen und gewähren Sie nur die minimal erforderlichen Berechtigungen.

381 

382 **Erforderliches Setup**:

383 

384 1. **Aktivieren Sie APIs** in Ihrem Google Cloud-Projekt:

385 * IAM Credentials API

386 * Security Token Service (STS) API

387 * Vertex AI API

388 

389 2. **Erstellen Sie Workload Identity Federation-Ressourcen**:

390 * Erstellen Sie einen Workload Identity Pool

391 * Fügen Sie einen GitHub OIDC-Provider mit hinzu:

392 * Issuer: `https://token.actions.githubusercontent.com`

393 * Attribut-Mappings für Repository und Owner

394 * **Sicherheitsempfehlung**: Verwenden Sie Repository-spezifische Attribut-Bedingungen

395 

396 3. **Erstellen Sie ein Service-Konto**:

397 * Gewähren Sie nur die Rolle `Vertex AI User`

398 * **Sicherheitsempfehlung**: Erstellen Sie ein dediziertes Service-Konto pro Repository

399 

400 4. **Konfigurieren Sie IAM-Bindungen**:

401 * Erlauben Sie dem Workload Identity Pool, das Service-Konto zu imitieren

402 * **Sicherheitsempfehlung**: Verwenden Sie Repository-spezifische Principal-Sets

403 

404 **Erforderliche Werte**:

405 

406 Nach dem Setup benötigen Sie:

407 

408 * **GCP\_WORKLOAD\_IDENTITY\_PROVIDER**: Der vollständige Provider-Ressourcenname

409 * **GCP\_SERVICE\_ACCOUNT**: Die Service-Konto-E-Mail-Adresse

410 

411 <Tip>

412 Workload Identity Federation eliminiert die Notwendigkeit herunterladbarer Service-Konto-Schlüssel und verbessert die Sicherheit.

413 </Tip>

414 

415 Für detaillierte Setup-Anweisungen konsultieren Sie die [Google Cloud Workload Identity Federation-Dokumentation](https://cloud.google.com/iam/docs/workload-identity-federation).

416 </Accordion>

417 </AccordionGroup>

418 </Step>

419 

420 <Step title="Fügen Sie erforderliche Secrets hinzu">

421 Fügen Sie die folgenden Secrets zu Ihrem Repository hinzu (Settings → Secrets and variables → Actions):

422 

423 #### Für Claude API (direkt):

424 

425 1. **Für API-Authentifizierung**:

426 * `ANTHROPIC_API_KEY`: Ihr Claude API-Schlüssel von [console.anthropic.com](https://console.anthropic.com)

427 

428 2. **Für GitHub-App (wenn Sie Ihre eigene App verwenden)**:

429 * `APP_ID`: Die ID Ihrer GitHub-App

430 * `APP_PRIVATE_KEY`: Der Inhalt des privaten Schlüssels (.pem)

431 

432 #### Für Google Cloud Vertex AI

433 

434 1. **Für GCP-Authentifizierung**:

435 * `GCP_WORKLOAD_IDENTITY_PROVIDER`

436 * `GCP_SERVICE_ACCOUNT`

437 

438 2. **Für GitHub-App (wenn Sie Ihre eigene App verwenden)**:

439 * `APP_ID`: Die ID Ihrer GitHub-App

440 * `APP_PRIVATE_KEY`: Der Inhalt des privaten Schlüssels (.pem)

441 

442 #### Für Amazon Bedrock

443 

444 1. **Für AWS-Authentifizierung**:

445 * `AWS_ROLE_TO_ASSUME`

446 

447 2. **Für GitHub-App (wenn Sie Ihre eigene App verwenden)**:

448 * `APP_ID`: Die ID Ihrer GitHub-App

449 * `APP_PRIVATE_KEY`: Der Inhalt des privaten Schlüssels (.pem)

450 </Step>

451 

452 <Step title="Erstellen Sie Workflow-Dateien">

453 Erstellen Sie GitHub Actions-Workflow-Dateien, die sich in Ihren Cloud-Provider integrieren. Die folgenden Beispiele zeigen vollständige Konfigurationen für Amazon Bedrock und Google Vertex AI:

454 

455 <AccordionGroup>

456 <Accordion title="Amazon Bedrock-Workflow">

457 **Voraussetzungen:**

458 

459 * Amazon Bedrock-Zugriff aktiviert mit Claude-Modell-Berechtigungen

460 * GitHub als OIDC-Identity-Provider in AWS konfiguriert

461 * IAM-Rolle mit Bedrock-Berechtigungen, die GitHub Actions vertraut

462 

463 **Erforderliche GitHub-Secrets:**

464 

465 | Secret-Name | Beschreibung |

466 | -------------------- | ------------------------------------------------------------------ |

467 | `AWS_ROLE_TO_ASSUME` | ARN der IAM-Rolle für Bedrock-Zugriff |

468 | `APP_ID` | Ihre GitHub-App-ID (aus App-Einstellungen) |

469 | `APP_PRIVATE_KEY` | Der private Schlüssel, den Sie für Ihre GitHub-App generiert haben |

470 

471 ```yaml theme={null}

472 name: Claude PR Action

473 

474 permissions:

475 contents: write

476 pull-requests: write

477 issues: write

478 id-token: write

479 

480 on:

481 issue_comment:

482 types: [created]

483 pull_request_review_comment:

484 types: [created]

485 issues:

486 types: [opened, assigned]

487 

488 jobs:

489 claude-pr:

490 if: |

491 (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||

492 (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||

493 (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))

494 runs-on: ubuntu-latest

495 env:

496 AWS_REGION: us-west-2

497 steps:

498 - name: Checkout repository

499 uses: actions/checkout@v4

500 

501 - name: Generate GitHub App token

502 id: app-token

503 uses: actions/create-github-app-token@v2

504 with:

505 app-id: ${{ secrets.APP_ID }}

506 private-key: ${{ secrets.APP_PRIVATE_KEY }}

507 

508 - name: Configure AWS Credentials (OIDC)

509 uses: aws-actions/configure-aws-credentials@v4

510 with:

511 role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}

512 aws-region: us-west-2

513 

514 - uses: anthropics/claude-code-action@v1

515 with:

516 github_token: ${{ steps.app-token.outputs.token }}

517 use_bedrock: "true"

518 claude_args: '--model us.anthropic.claude-sonnet-4-6 --max-turns 10'

519 ```

520 

521 <Tip>

522 Das Modell-ID-Format für Bedrock enthält ein Regions-Präfix (zum Beispiel `us.anthropic.claude-sonnet-4-6`).

523 </Tip>

524 </Accordion>

525 

526 <Accordion title="Google Vertex AI-Workflow">

527 **Voraussetzungen:**

528 

529 * Vertex AI API in Ihrem GCP-Projekt aktiviert

530 * Workload Identity Federation für GitHub konfiguriert

531 * Service-Konto mit Vertex AI-Berechtigungen

532 

533 **Erforderliche GitHub-Secrets:**

534 

535 | Secret-Name | Beschreibung |

536 | -------------------------------- | ------------------------------------------------------------------ |

537 | `GCP_WORKLOAD_IDENTITY_PROVIDER` | Workload Identity Provider-Ressourcenname |

538 | `GCP_SERVICE_ACCOUNT` | Service-Konto-E-Mail mit Vertex AI-Zugriff |

539 | `APP_ID` | Ihre GitHub-App-ID (aus App-Einstellungen) |

540 | `APP_PRIVATE_KEY` | Der private Schlüssel, den Sie für Ihre GitHub-App generiert haben |

541 

542 ```yaml theme={null}

543 name: Claude PR Action

544 

545 permissions:

546 contents: write

547 pull-requests: write

548 issues: write

549 id-token: write

550 

551 on:

552 issue_comment:

553 types: [created]

554 pull_request_review_comment:

555 types: [created]

556 issues:

557 types: [opened, assigned]

558 

559 jobs:

560 claude-pr:

561 if: |

562 (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||

563 (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||

564 (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))

565 runs-on: ubuntu-latest

566 steps:

567 - name: Checkout repository

568 uses: actions/checkout@v4

569 

570 - name: Generate GitHub App token

571 id: app-token

572 uses: actions/create-github-app-token@v2

573 with:

574 app-id: ${{ secrets.APP_ID }}

575 private-key: ${{ secrets.APP_PRIVATE_KEY }}

576 

577 - name: Authenticate to Google Cloud

578 id: auth

579 uses: google-github-actions/auth@v2

580 with:

581 workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}

582 service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}

583 

584 - uses: anthropics/claude-code-action@v1

585 with:

586 github_token: ${{ steps.app-token.outputs.token }}

587 trigger_phrase: "@claude"

588 use_vertex: "true"

589 claude_args: '--model claude-sonnet-4-5@20250929 --max-turns 10'

590 env:

591 ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}

592 CLOUD_ML_REGION: us-east5

593 VERTEX_REGION_CLAUDE_4_5_SONNET: us-east5

594 ```

595 

596 <Tip>

597 Die Projekt-ID wird automatisch aus dem Google Cloud-Authentifizierungsschritt abgerufen, daher müssen Sie sie nicht hardcodieren.

598 </Tip>

599 </Accordion>

600 </AccordionGroup>

601 </Step>

602</Steps>

603 

604## Fehlerbehebung

605 

606### Claude antwortet nicht auf @claude-Befehle

607 

608Überprüfen Sie, dass die GitHub-App korrekt installiert ist, stellen Sie sicher, dass Workflows aktiviert sind, überprüfen Sie, dass der API-Schlüssel in Repository-Secrets gesetzt ist, und bestätigen Sie, dass der Kommentar `@claude` enthält (nicht `/claude`).

609 

610### CI wird nicht auf Claudes Commits ausgeführt

611 

612Stellen Sie sicher, dass Sie die GitHub-App oder benutzerdefinierte App verwenden (nicht Actions-Benutzer), überprüfen Sie, dass Workflow-Trigger die erforderlichen Events enthalten, und überprüfen Sie, dass App-Berechtigungen CI-Trigger enthalten.

613 

614### Authentifizierungsfehler

615 

616Bestätigen Sie, dass der API-Schlüssel gültig ist und ausreichende Berechtigungen hat. Für Bedrock/Vertex überprüfen Sie die Anmeldedaten-Konfiguration und stellen Sie sicher, dass Secrets in Workflows korrekt benannt sind.

617 

618## Erweiterte Konfiguration

619 

620### Action-Parameter

621 

622Die Claude Code Action v1 verwendet eine vereinfachte Konfiguration:

623 

624| Parameter | Beschreibung | Erforderlich |

625| ------------------- | ------------------------------------------------------------------- | ------------ |

626| `prompt` | Anweisungen für Claude (Klartext oder ein [skill](/de/skills)-Name) | Nein\* |

627| `claude_args` | CLI-Argumente, die an Claude Code übergeben werden | Nein |

628| `anthropic_api_key` | Claude API-Schlüssel | Ja\*\* |

629| `github_token` | GitHub-Token für API-Zugriff | Nein |

630| `trigger_phrase` | Benutzerdefinierte Trigger-Phrase (Standard: "@claude") | Nein |

631| `use_bedrock` | Verwenden Sie Amazon Bedrock statt Claude API | Nein |

632| `use_vertex` | Verwenden Sie Google Vertex AI statt Claude API | Nein |

633 

634\*Prompt ist optional – wenn für Issue/PR-Kommentare weggelassen, antwortet Claude auf Trigger-Phrase\

635\*\*Erforderlich für direkte Claude API, nicht für Bedrock/Vertex

636 

637#### Übergeben Sie CLI-Argumente

638 

639Der Parameter `claude_args` akzeptiert alle Claude Code CLI-Argumente:

640 

641```yaml theme={null}

642claude_args: "--max-turns 5 --model claude-sonnet-4-6 --mcp-config /path/to/config.json"

643```

644 

645Häufige Argumente:

646 

647* `--max-turns`: Maximale Gesprächs-Turns (Standard: 10)

648* `--model`: Zu verwendendes Modell (zum Beispiel `claude-sonnet-4-6`)

649* `--mcp-config`: Pfad zur MCP-Konfiguration

650* `--allowedTools`: Komma-getrennte Liste zulässiger Tools. Der Alias `--allowed-tools` funktioniert auch.

651* `--debug`: Debug-Ausgabe aktivieren

652 

653### Alternative Integrationsmethoden

654 

655Während der Befehl `/install-github-app` der empfohlene Ansatz ist, können Sie auch:

656 

657* **Benutzerdefinierte GitHub-App**: Für Organisationen, die Branded-Benutzernamen oder benutzerdefinierte Authentifizierungs-Flows benötigen. Erstellen Sie Ihre eigene GitHub-App mit erforderlichen Berechtigungen (Contents, Issues, Pull Requests) und verwenden Sie die actions/create-github-app-token-Action, um Token in Ihren Workflows zu generieren.

658* **Manuelle GitHub Actions**: Direkte Workflow-Konfiguration für maximale Flexibilität

659* **MCP-Konfiguration**: Dynamisches Laden von Model Context Protocol-Servern

660 

661Siehe die [Claude Code Action-Dokumentation](https://github.com/anthropics/claude-code-action/blob/main/docs) für detaillierte Leitfäden zu Authentifizierung, Sicherheit und erweiterte Konfiguration.

662 

663### Anpassung von Claudes Verhalten

664 

665Sie können Claudes Verhalten auf zwei Arten konfigurieren:

666 

6671. **CLAUDE.md**: Definieren Sie Coding-Standards, Review-Kriterien und projektspezifische Regeln in einer `CLAUDE.md`-Datei im Root-Verzeichnis Ihres Repositories. Claude wird diese Richtlinien beim Erstellen von PRs und Antworten auf Anfragen befolgen. Weitere Details finden Sie in unserer [Memory-Dokumentation](/de/memory).

6682. **Benutzerdefinierte Prompts**: Verwenden Sie den Parameter `prompt` in der Workflow-Datei, um Workflow-spezifische Anweisungen bereitzustellen. Dies ermöglicht es Ihnen, Claudes Verhalten für verschiedene Workflows oder Aufgaben anzupassen.

669 

670Claude wird diese Richtlinien beim Erstellen von PRs und Antworten auf Anfragen befolgen.

gitlab-ci-cd.md +466 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code GitLab CI/CD

6 

7> Erfahren Sie, wie Sie Claude Code in Ihren Entwicklungs-Workflow mit GitLab CI/CD integrieren

8 

9<Info>

10 Claude Code für GitLab CI/CD befindet sich derzeit in der Beta-Phase. Funktionen und Funktionalität können sich weiterentwickeln, während wir die Erfahrung verfeinern.

11 

12 Diese Integration wird von GitLab gepflegt. Für Support siehe das folgende [GitLab-Problem](https://gitlab.com/gitlab-org/gitlab/-/issues/573776).

13</Info>

14 

15<Note>

16 Diese Integration basiert auf der [Claude Code CLI und Agent SDK](/de/agent-sdk/overview) und ermöglicht die programmgesteuerte Nutzung von Claude in Ihren CI/CD-Jobs und benutzerdefinierten Automatisierungs-Workflows.

17</Note>

18 

19## Warum Claude Code mit GitLab verwenden?

20 

21* **Sofortige MR-Erstellung**: Beschreiben Sie, was Sie benötigen, und Claude schlägt einen vollständigen MR mit Änderungen und Erklärung vor

22* **Automatisierte Implementierung**: Verwandeln Sie Probleme mit einem einzigen Befehl oder einer Erwähnung in funktionierenden Code

23* **Projektbewusst**: Claude folgt Ihren `CLAUDE.md`-Richtlinien und vorhandenen Code-Mustern

24* **Einfaches Setup**: Fügen Sie einen Job zu `.gitlab-ci.yml` und eine maskierte CI/CD-Variable hinzu

25* **Enterprise-ready**: Wählen Sie Claude API, Amazon Bedrock oder Google Vertex AI, um Anforderungen an Datenresidenz und Beschaffung zu erfüllen

26* **Standardmäßig sicher**: Läuft in Ihren GitLab-Runnern mit Ihrem Branch-Schutz und Genehmigungen

27 

28## Wie es funktioniert

29 

30Claude Code verwendet GitLab CI/CD, um KI-Aufgaben in isolierten Jobs auszuführen und Ergebnisse über MRs zurückzucommiten:

31 

321. **Ereignisgesteuerte Orchestrierung**: GitLab lauscht auf Ihre gewählten Trigger (zum Beispiel ein Kommentar, der `@claude` in einem Problem, MR oder Review-Thread erwähnt). Der Job sammelt Kontext aus dem Thread und Repository, erstellt Prompts aus dieser Eingabe und führt Claude Code aus.

33 

342. **Provider-Abstraktion**: Verwenden Sie den Provider, der zu Ihrer Umgebung passt:

35 * Claude API (SaaS)

36 * Amazon Bedrock (IAM-basierter Zugriff, regionsübergreifende Optionen)

37 * Google Vertex AI (GCP-nativ, Workload Identity Federation)

38 

393. **Sandboxed-Ausführung**: Jede Interaktion läuft in einem Container mit strikten Netzwerk- und Dateisystem-Regeln. Claude Code erzwingt Workspace-bezogene Berechtigungen, um Schreibvorgänge einzuschränken. Jede Änderung fließt durch einen MR, damit Reviewer den Diff sehen und Genehmigungen weiterhin gelten.

40 

41Wählen Sie regionale Endpunkte, um die Latenz zu reduzieren und Anforderungen an die Datensouveränität zu erfüllen, während Sie vorhandene Cloud-Vereinbarungen nutzen.

42 

43## Was kann Claude tun?

44 

45Claude Code ermöglicht leistungsstarke CI/CD-Workflows, die verändern, wie Sie mit Code arbeiten:

46 

47* Erstellen und aktualisieren Sie MRs aus Problembeschreibungen oder Kommentaren

48* Analysieren Sie Performance-Regressionstests und schlagen Sie Optimierungen vor

49* Implementieren Sie Features direkt in einem Branch und öffnen Sie dann einen MR

50* Beheben Sie Bugs und Regressionstests, die durch Tests oder Kommentare identifiziert wurden

51* Antworten Sie auf Folgekommentare, um auf angeforderte Änderungen zu iterieren

52 

53## Setup

54 

55### Schnelles Setup

56 

57Der schnellste Weg zum Einstieg ist, einen minimalen Job zu Ihrer `.gitlab-ci.yml` hinzuzufügen und Ihren API-Schlüssel als maskierte Variable festzulegen.

58 

591. **Fügen Sie eine maskierte CI/CD-Variable hinzu**

60 * Gehen Sie zu **Einstellungen** → **CI/CD** → **Variablen**

61 * Fügen Sie `ANTHROPIC_API_KEY` hinzu (maskiert, bei Bedarf geschützt)

62 

632. **Fügen Sie einen Claude-Job zu `.gitlab-ci.yml` hinzu**

64 

65```yaml theme={null}

66stages:

67 - ai

68 

69claude:

70 stage: ai

71 image: node:24-alpine3.21

72 # Passen Sie die Regeln an, um zu passen, wie Sie den Job auslösen möchten:

73 # - manuelle Ausführungen

74 # - Merge-Request-Ereignisse

75 # - Web/API-Trigger, wenn ein Kommentar '@claude' enthält

76 rules:

77 - if: '$CI_PIPELINE_SOURCE == "web"'

78 - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

79 variables:

80 GIT_STRATEGY: fetch

81 before_script:

82 - apk update

83 - apk add --no-cache git curl bash

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

85 script:

86 # Optional: Starten Sie einen GitLab MCP-Server, wenn Ihr Setup einen bereitstellt

87 - /bin/gitlab-mcp-server || true

88 # Verwenden Sie AI_FLOW_*-Variablen beim Aufrufen über Web/API-Trigger mit Kontext-Payloads

89 - echo "$AI_FLOW_INPUT for $AI_FLOW_CONTEXT on $AI_FLOW_EVENT"

90 - >

91 claude

92 -p "${AI_FLOW_INPUT:-'Review this MR and implement the requested changes'}"

93 --permission-mode acceptEdits

94 --allowedTools "Bash Read Edit Write mcp__gitlab"

95 --debug

96```

97 

98Nach dem Hinzufügen des Jobs und Ihrer `ANTHROPIC_API_KEY`-Variable testen Sie, indem Sie den Job manuell von **CI/CD** → **Pipelines** ausführen, oder lösen Sie ihn von einem MR aus, um Claude zu ermöglichen, Updates in einem Branch vorzuschlagen und bei Bedarf einen MR zu öffnen.

99 

100<Note>

101 Um stattdessen auf Amazon Bedrock oder Google Vertex AI auszuführen, siehe den Abschnitt [Verwendung mit Amazon Bedrock & Google Vertex AI](#using-with-amazon-bedrock--google-vertex-ai) unten für Authentifizierung und Umgebungssetup.

102</Note>

103 

104### Manuelles Setup (empfohlen für Produktion)

105 

106Wenn Sie ein kontrolliertes Setup bevorzugen oder Enterprise-Provider benötigen:

107 

1081. **Konfigurieren Sie Provider-Zugriff**:

109 * **Claude API**: Erstellen und speichern Sie `ANTHROPIC_API_KEY` als maskierte CI/CD-Variable

110 * **Amazon Bedrock**: **Konfigurieren Sie GitLab** → **AWS OIDC** und erstellen Sie eine IAM-Rolle für Bedrock

111 * **Google Vertex AI**: **Konfigurieren Sie Workload Identity Federation für GitLab** → **GCP**

112 

1132. **Fügen Sie Projekt-Anmeldedaten für GitLab API-Operationen hinzu**:

114 * Verwenden Sie `CI_JOB_TOKEN` standardmäßig, oder erstellen Sie ein Project Access Token mit `api`-Bereich

115 * Speichern Sie als `GITLAB_ACCESS_TOKEN` (maskiert), wenn Sie ein PAT verwenden

116 

1173. **Fügen Sie den Claude-Job zu `.gitlab-ci.yml` hinzu** (siehe Beispiele unten)

118 

1194. **(Optional) Aktivieren Sie Mention-gesteuerte Trigger**:

120 * Fügen Sie einen Projekt-Webhook für "Kommentare (Notizen)" zu Ihrem Event-Listener hinzu (falls Sie einen verwenden)

121 * Lassen Sie den Listener die Pipeline-Trigger-API mit Variablen wie `AI_FLOW_INPUT` und `AI_FLOW_CONTEXT` aufrufen, wenn ein Kommentar `@claude` enthält

122 

123## Beispiel-Anwendungsfälle

124 

125### Verwandeln Sie Probleme in MRs

126 

127In einem Problemkommentar:

128 

129```text theme={null}

130@claude implement this feature based on the issue description

131```

132 

133Claude analysiert das Problem und die Codebasis, schreibt Änderungen in einem Branch und öffnet einen MR zur Überprüfung.

134 

135### Erhalten Sie Implementierungshilfe

136 

137In einer MR-Diskussion:

138 

139```text theme={null}

140@claude suggest a concrete approach to cache the results of this API call

141```

142 

143Claude schlägt Änderungen vor, fügt Code mit angemessenem Caching hinzu und aktualisiert den MR.

144 

145### Beheben Sie Bugs schnell

146 

147In einem Problem- oder MR-Kommentar:

148 

149```text theme={null}

150@claude fix the TypeError in the user dashboard component

151```

152 

153Claude lokalisiert den Bug, implementiert eine Korrektur und aktualisiert den Branch oder öffnet einen neuen MR.

154 

155## Verwendung mit Amazon Bedrock & Google Vertex AI

156 

157Für Enterprise-Umgebungen können Sie Claude Code vollständig auf Ihrer Cloud-Infrastruktur mit der gleichen Entwicklererfahrung ausführen.

158 

159<Tabs>

160 <Tab title="Amazon Bedrock">

161 ### Voraussetzungen

162 

163 Bevor Sie Claude Code mit Amazon Bedrock einrichten, benötigen Sie:

164 

165 1. Ein AWS-Konto mit Amazon Bedrock-Zugriff auf die gewünschten Claude-Modelle

166 2. GitLab als OIDC-Identitätsanbieter in AWS IAM konfiguriert

167 3. Eine IAM-Rolle mit Bedrock-Berechtigungen und einer Vertrauensrichtlinie, die auf Ihr GitLab-Projekt/Refs beschränkt ist

168 4. GitLab CI/CD-Variablen für Rollenübernahme:

169 * `AWS_ROLE_TO_ASSUME` (Rollen-ARN)

170 * `AWS_REGION` (Bedrock-Region)

171 

172 ### Setup-Anweisungen

173 

174 Konfigurieren Sie AWS, um GitLab CI-Jobs zu ermöglichen, eine IAM-Rolle über OIDC anzunehmen (keine statischen Schlüssel).

175 

176 **Erforderliches Setup:**

177 

178 1. Aktivieren Sie Amazon Bedrock und fordern Sie Zugriff auf Ihre Ziel-Claude-Modelle an

179 2. Erstellen Sie einen IAM OIDC-Provider für GitLab, falls nicht bereits vorhanden

180 3. Erstellen Sie eine IAM-Rolle, der der GitLab OIDC-Provider vertraut, beschränkt auf Ihr Projekt und geschützte Refs

181 4. Fügen Sie Least-Privilege-Berechtigungen für Bedrock-Invoke-APIs an

182 

183 **Erforderliche Werte zum Speichern in CI/CD-Variablen:**

184 

185 * `AWS_ROLE_TO_ASSUME`

186 * `AWS_REGION`

187 

188 Fügen Sie Variablen in Einstellungen → CI/CD → Variablen hinzu:

189 

190 ```yaml theme={null}

191 # Für Amazon Bedrock:

192 - AWS_ROLE_TO_ASSUME

193 - AWS_REGION

194 ```

195 

196 Verwenden Sie das Amazon Bedrock-Job-Beispiel oben, um das GitLab-Job-Token gegen temporäre AWS-Anmeldedaten zur Laufzeit auszutauschen.

197 </Tab>

198 

199 <Tab title="Google Vertex AI">

200 ### Voraussetzungen

201 

202 Bevor Sie Claude Code mit Google Vertex AI einrichten, benötigen Sie:

203 

204 1. Ein Google Cloud-Projekt mit:

205 * Aktivierter Vertex AI API

206 * Workload Identity Federation konfiguriert, um GitLab OIDC zu vertrauen

207 2. Ein dediziertes Service-Konto mit nur den erforderlichen Vertex AI-Rollen

208 3. GitLab CI/CD-Variablen für WIF:

209 * `GCP_WORKLOAD_IDENTITY_PROVIDER` (vollständiger Ressourcenname)

210 * `GCP_SERVICE_ACCOUNT` (Service-Konto-E-Mail)

211 

212 ### Setup-Anweisungen

213 

214 Konfigurieren Sie Google Cloud, um GitLab CI-Jobs zu ermöglichen, ein Service-Konto über Workload Identity Federation zu imitieren.

215 

216 **Erforderliches Setup:**

217 

218 1. Aktivieren Sie IAM Credentials API, STS API und Vertex AI API

219 2. Erstellen Sie einen Workload Identity Pool und Provider für GitLab OIDC

220 3. Erstellen Sie ein dediziertes Service-Konto mit Vertex AI-Rollen

221 4. Gewähren Sie dem WIF-Principal die Berechtigung, das Service-Konto zu imitieren

222 

223 **Erforderliche Werte zum Speichern in CI/CD-Variablen:**

224 

225 * `GCP_WORKLOAD_IDENTITY_PROVIDER`

226 * `GCP_SERVICE_ACCOUNT`

227 

228 Fügen Sie Variablen in Einstellungen → CI/CD → Variablen hinzu:

229 

230 ```yaml theme={null}

231 # Für Google Vertex AI:

232 - GCP_WORKLOAD_IDENTITY_PROVIDER

233 - GCP_SERVICE_ACCOUNT

234 - CLOUD_ML_REGION (zum Beispiel us-east5)

235 ```

236 

237 Verwenden Sie das Google Vertex AI-Job-Beispiel oben, um sich ohne Speicherung von Schlüsseln zu authentifizieren.

238 </Tab>

239</Tabs>

240 

241## Konfigurationsbeispiele

242 

243Nachfolgend finden Sie einsatzbereite Snippets, die Sie an Ihre Pipeline anpassen können.

244 

245### Basis .gitlab-ci.yml (Claude API)

246 

247```yaml theme={null}

248stages:

249 - ai

250 

251claude:

252 stage: ai

253 image: node:24-alpine3.21

254 rules:

255 - if: '$CI_PIPELINE_SOURCE == "web"'

256 - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

257 variables:

258 GIT_STRATEGY: fetch

259 before_script:

260 - apk update

261 - apk add --no-cache git curl bash

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

263 script:

264 - /bin/gitlab-mcp-server || true

265 - >

266 claude

267 -p "${AI_FLOW_INPUT:-'Summarize recent changes and suggest improvements'}"

268 --permission-mode acceptEdits

269 --allowedTools "Bash Read Edit Write mcp__gitlab"

270 --debug

271 # Claude Code wird ANTHROPIC_API_KEY aus CI/CD-Variablen verwenden

272```

273 

274### Amazon Bedrock-Job-Beispiel (OIDC)

275 

276**Voraussetzungen:**

277 

278* Amazon Bedrock aktiviert mit Zugriff auf Ihr gewähltes Claude-Modell(e)

279* GitLab OIDC in AWS konfiguriert mit einer Rolle, die Ihr GitLab-Projekt und Refs vertraut

280* IAM-Rolle mit Bedrock-Berechtigungen (Least Privilege empfohlen)

281 

282**Erforderliche CI/CD-Variablen:**

283 

284* `AWS_ROLE_TO_ASSUME`: ARN der IAM-Rolle für Bedrock-Zugriff

285* `AWS_REGION`: Bedrock-Region (zum Beispiel `us-west-2`)

286 

287```yaml theme={null}

288claude-bedrock:

289 stage: ai

290 image: node:24-alpine3.21

291 rules:

292 - if: '$CI_PIPELINE_SOURCE == "web"'

293 before_script:

294 - apk add --no-cache bash curl jq git python3 py3-pip

295 - pip install --no-cache-dir awscli

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

297 # Tauschen Sie GitLab OIDC-Token gegen AWS-Anmeldedaten aus

298 - export AWS_WEB_IDENTITY_TOKEN_FILE="${CI_JOB_JWT_FILE:-/tmp/oidc_token}"

299 - if [ -n "${CI_JOB_JWT_V2}" ]; then printf "%s" "$CI_JOB_JWT_V2" > "$AWS_WEB_IDENTITY_TOKEN_FILE"; fi

300 - >

301 aws sts assume-role-with-web-identity

302 --role-arn "$AWS_ROLE_TO_ASSUME"

303 --role-session-name "gitlab-claude-$(date +%s)"

304 --web-identity-token "file://$AWS_WEB_IDENTITY_TOKEN_FILE"

305 --duration-seconds 3600 > /tmp/aws_creds.json

306 - export AWS_ACCESS_KEY_ID="$(jq -r .Credentials.AccessKeyId /tmp/aws_creds.json)"

307 - export AWS_SECRET_ACCESS_KEY="$(jq -r .Credentials.SecretAccessKey /tmp/aws_creds.json)"

308 - export AWS_SESSION_TOKEN="$(jq -r .Credentials.SessionToken /tmp/aws_creds.json)"

309 script:

310 - /bin/gitlab-mcp-server || true

311 - >

312 claude

313 -p "${AI_FLOW_INPUT:-'Implement the requested changes and open an MR'}"

314 --permission-mode acceptEdits

315 --allowedTools "Bash Read Edit Write mcp__gitlab"

316 --debug

317 variables:

318 AWS_REGION: "us-west-2"

319```

320 

321<Note>

322 Modell-IDs für Bedrock enthalten regionsspezifische Präfixe (zum Beispiel `us.anthropic.claude-sonnet-4-6`). Übergeben Sie das gewünschte Modell über Ihre Job-Konfiguration oder den Prompt, wenn Ihr Workflow dies unterstützt.

323</Note>

324 

325### Google Vertex AI-Job-Beispiel (Workload Identity Federation)

326 

327**Voraussetzungen:**

328 

329* Vertex AI API in Ihrem GCP-Projekt aktiviert

330* Workload Identity Federation konfiguriert, um GitLab OIDC zu vertrauen

331* Ein Service-Konto mit Vertex AI-Berechtigungen

332 

333**Erforderliche CI/CD-Variablen:**

334 

335* `GCP_WORKLOAD_IDENTITY_PROVIDER`: Vollständiger Provider-Ressourcenname

336* `GCP_SERVICE_ACCOUNT`: Service-Konto-E-Mail

337* `CLOUD_ML_REGION`: Vertex-Region (zum Beispiel `us-east5`)

338 

339```yaml theme={null}

340claude-vertex:

341 stage: ai

342 image: gcr.io/google.com/cloudsdktool/google-cloud-cli:slim

343 rules:

344 - if: '$CI_PIPELINE_SOURCE == "web"'

345 before_script:

346 - apt-get update && apt-get install -y git && apt-get clean

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

348 # Authentifizieren Sie sich bei Google Cloud über WIF (keine heruntergeladenen Schlüssel)

349 - >

350 gcloud auth login --cred-file=<(cat <<EOF

351 {

352 "type": "external_account",

353 "audience": "${GCP_WORKLOAD_IDENTITY_PROVIDER}",

354 "subject_token_type": "urn:ietf:params:oauth:token-type:jwt",

355 "service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/${GCP_SERVICE_ACCOUNT}:generateAccessToken",

356 "token_url": "https://sts.googleapis.com/v1/token"

357 }

358 EOF

359 )

360 - gcloud config set project "$(gcloud projects list --format='value(projectId)' --filter="name:${CI_PROJECT_NAMESPACE}" | head -n1)" || true

361 script:

362 - /bin/gitlab-mcp-server || true

363 - >

364 CLOUD_ML_REGION="${CLOUD_ML_REGION:-us-east5}"

365 claude

366 -p "${AI_FLOW_INPUT:-'Review and update code as requested'}"

367 --permission-mode acceptEdits

368 --allowedTools "Bash Read Edit Write mcp__gitlab"

369 --debug

370 variables:

371 CLOUD_ML_REGION: "us-east5"

372```

373 

374<Note>

375 Mit Workload Identity Federation müssen Sie keine Service-Konto-Schlüssel speichern. Verwenden Sie Repository-spezifische Vertrauensbedingungen und Least-Privilege-Service-Konten.

376</Note>

377 

378## Best Practices

379 

380### CLAUDE.md-Konfiguration

381 

382Erstellen Sie eine `CLAUDE.md`-Datei im Repository-Root, um Coding-Standards, Review-Kriterien und projektspezifische Regeln zu definieren. Claude liest diese Datei während der Ausführung und folgt Ihren Konventionen bei der Vorschlag von Änderungen.

383 

384### Sicherheitsüberlegungen

385 

386**Commiten Sie niemals API-Schlüssel oder Cloud-Anmeldedaten in Ihr Repository**. Verwenden Sie immer GitLab CI/CD-Variablen:

387 

388* Fügen Sie `ANTHROPIC_API_KEY` als maskierte Variable hinzu (und schützen Sie sie bei Bedarf)

389* Verwenden Sie Provider-spezifisches OIDC, wo möglich (keine langlebigen Schlüssel)

390* Begrenzen Sie Job-Berechtigungen und Netzwerk-Egress

391* Überprüfen Sie Claudes MRs wie jeden anderen Beitrag

392 

393### Optimierung der Leistung

394 

395* Halten Sie `CLAUDE.md` fokussiert und prägnant

396* Geben Sie klare Problem-/MR-Beschreibungen an, um Iterationen zu reduzieren

397* Konfigurieren Sie angemessene Job-Timeouts, um unkontrollierte Ausführungen zu vermeiden

398* Cachen Sie npm und Paketinstallationen in Runnern, wo möglich

399 

400### CI-Kosten

401 

402Bei der Verwendung von Claude Code mit GitLab CI/CD sollten Sie sich der damit verbundenen Kosten bewusst sein:

403 

404* **GitLab Runner-Zeit**:

405 * Claude läuft auf Ihren GitLab-Runnern und verbraucht Compute-Minuten

406 * Siehe die Runner-Abrechnung Ihres GitLab-Plans für Details

407 

408* **API-Kosten**:

409 * Jede Claude-Interaktion verbraucht Token basierend auf Prompt- und Antwortgröße

410 * Die Token-Nutzung variiert je nach Aufgabenkomplexität und Codebasis-Größe

411 * Siehe [Anthropic-Preisgestaltung](https://platform.claude.com/docs/de/about-claude/pricing) für Details

412 

413* **Tipps zur Kostenoptimierung**:

414 * Verwenden Sie spezifische `@claude`-Befehle, um unnötige Durchläufe zu reduzieren

415 * Legen Sie angemessene `max_turns`- und Job-Timeout-Werte fest

416 * Begrenzen Sie die Parallelität, um parallele Ausführungen zu kontrollieren

417 

418## Sicherheit und Governance

419 

420* Jeder Job läuft in einem isolierten Container mit eingeschränktem Netzwerkzugriff

421* Claudes Änderungen fließen durch MRs, damit Reviewer jeden Diff sehen

422* Branch-Schutz und Genehmigungsregeln gelten für KI-generierte Code

423* Claude Code verwendet Workspace-bezogene Berechtigungen, um Schreibvorgänge einzuschränken

424* Kosten bleiben unter Ihrer Kontrolle, da Sie Ihre eigenen Provider-Anmeldedaten mitbringen

425 

426## Fehlerbehebung

427 

428### Claude antwortet nicht auf @claude-Befehle

429 

430* Überprüfen Sie, ob Ihre Pipeline ausgelöst wird (manuell, MR-Ereignis oder über einen Note-Event-Listener/Webhook)

431* Stellen Sie sicher, dass CI/CD-Variablen (`ANTHROPIC_API_KEY` oder Cloud-Provider-Einstellungen) vorhanden und unmaskiert sind

432* Überprüfen Sie, dass der Kommentar `@claude` enthält (nicht `/claude`) und dass Ihr Mention-Trigger konfiguriert ist

433 

434### Job kann keine Kommentare schreiben oder MRs öffnen

435 

436* Stellen Sie sicher, dass `CI_JOB_TOKEN` ausreichende Berechtigungen für das Projekt hat, oder verwenden Sie ein Project Access Token mit `api`-Bereich

437* Überprüfen Sie, dass das `mcp__gitlab`-Tool in `--allowedTools` aktiviert ist

438* Bestätigen Sie, dass der Job im Kontext des MR ausgeführt wird oder über `AI_FLOW_*`-Variablen genug Kontext hat

439 

440### Authentifizierungsfehler

441 

442* **Für Claude API**: Bestätigen Sie, dass `ANTHROPIC_API_KEY` gültig und nicht abgelaufen ist

443* **Für Bedrock/Vertex**: Überprüfen Sie OIDC/WIF-Konfiguration, Rollenimitierung und Geheimnisnamen; bestätigen Sie Region und Modellverfügbarkeit

444 

445## Erweiterte Konfiguration

446 

447### Häufig verwendete Parameter und Variablen

448 

449Claude Code unterstützt diese häufig verwendeten Eingaben:

450 

451* `prompt` / `prompt_file`: Geben Sie Anweisungen inline (`-p`) oder über eine Datei an

452* `max_turns`: Begrenzen Sie die Anzahl der Hin- und Herbewegungen

453* `timeout_minutes`: Begrenzen Sie die Gesamtausführungszeit

454* `ANTHROPIC_API_KEY`: Erforderlich für die Claude API (nicht für Bedrock/Vertex verwendet)

455* Provider-spezifische Umgebung: `AWS_REGION`, Projekt-/Regionsvariablen für Vertex

456 

457<Note>

458 Genaue Flags und Parameter können je nach Version von `@anthropic-ai/claude-code` variieren. Führen Sie `claude --help` in Ihrem Job aus, um unterstützte Optionen zu sehen.

459</Note>

460 

461### Anpassung von Claudes Verhalten

462 

463Sie können Claude auf zwei primäre Arten lenken:

464 

4651. **CLAUDE.md**: Definieren Sie Coding-Standards, Sicherheitsanforderungen und Projektkonventionen. Claude liest dies während der Ausführung und folgt Ihren Regeln.

4662. **Benutzerdefinierte Prompts**: Übergeben Sie aufgabenspezifische Anweisungen über `prompt`/`prompt_file` im Job. Verwenden Sie unterschiedliche Prompts für verschiedene Jobs (zum Beispiel Review, Implementierung, Refactoring).

glossary.md +307 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Glossar

6 

7> Definitionen für Claude Code-Terminologie. Erfahren Sie, was Agentic Loop, Komprimierung, CLAUDE.md, Hooks, Subagenten, MCP und andere Kernkonzepte bedeuten.

8 

9Dieses Glossar definiert Claude Code-Terminologie. Jeder Eintrag verlinkt auf die Seite, auf der das Konzept ausführlich behandelt wird. Für Modell-Konzepte wie Tokens, Temperatur und RAG siehe das [Plattform-Glossar](https://platform.claude.com/docs/de/about-claude/glossary).

10 

11## A

12 

13### Agent Teams

14 

15Mehrere unabhängige Claude Code-Sitzungen, die von einem Team-Lead koordiniert werden, mit einer gemeinsamen Aufgabenliste und Peer-to-Peer-Messaging. Im Gegensatz zu [Subagenten](#subagent), die innerhalb einer einzelnen Sitzung ausgeführt werden und nur dem übergeordneten Element berichten, hat jedes Teammate sein eigenes Kontextfenster und Sie können direkt mit jedem von ihnen interagieren. Agent Teams sind experimentell und müssen durch Setzen von `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` aktiviert werden.

16 

17Weitere Informationen: [Agent Teams ausführen](/de/agent-teams)

18 

19### Agentic Coding

20 

21Ein Workflow, bei dem die KI Dateien lesen, Befehle ausführen und Änderungen autonom vornehmen kann, während Sie zuschauen, umleiten oder sich entfernen, im Gegensatz zu Chat-basierten Assistenten, die nur Text antworten, den Sie selbst anwenden müssen. Claude Code ist agentic, weil es [Tools](#tool) hat, die es handeln lassen, nicht nur beraten.

22 

23Weitere Informationen: [Wie Claude Code funktioniert](/de/how-claude-code-works)

24 

25### Agentic Harness

26 

27Die Tools, Kontextverwaltung und Ausführungsumgebung, die ein Sprachmodell in einen fähigen Coding-Agenten verwandeln. Claude Code ist das Harness; Claude ist das Modell darin. Das Harness bietet Dateizugriff, Shell-Ausführung, Berechtigungsverwaltung, Speicherladen und die Schleife, die Aktionen zusammenkettet.

28 

29Weitere Informationen: [Wie Claude Code funktioniert](/de/how-claude-code-works)

30 

31### Agentic Loop

32 

33Der Zyklus, den Claude für jede Aufgabe durchläuft: Kontext sammeln, Maßnahmen ergreifen, Ergebnisse überprüfen und wiederholen, bis fertig. Jede Tool-Nutzung gibt Informationen zurück, die den nächsten Schritt informieren. Sie können die Schleife jederzeit unterbrechen, um umzuleiten. Die meisten Erweiterungspunkte, einschließlich [Hooks](#hook), [Skills](#skill) und [MCP](#mcp-model-context-protocol), verbinden sich mit spezifischen Phasen dieser Schleife.

34 

35Weitere Informationen: [Wie Claude Code funktioniert](/de/how-claude-code-works#the-agentic-loop)

36 

37### Auto Memory

38 

39Notizen, die Claude für sich selbst basierend auf Ihren Korrektionen und Vorlieben schreibt, gespeichert pro Git-Repository unter `~/.claude/projects/`. Alle Worktrees desselben Repositories teilen sich ein Auto Memory-Verzeichnis. Die ersten 200 Zeilen oder 25 KB des `MEMORY.md`-Index werden zu Beginn jeder Sitzung geladen. Auto Memory ist das von Claude geschriebene Gegenstück zu [CLAUDE.md](#claude-md), das Sie schreiben.

40 

41Weitere Informationen: [Auto Memory](/de/memory#auto-memory)

42 

43### Auto Mode

44 

45Ein [Berechtigungsmodus](#permission-mode), bei dem ein separates Klassifizierungsmodell jede Aktion im Hintergrund überprüft, anstatt Ihnen Genehmigungsaufforderungen anzuzeigen. Der Klassifizierer blockiert Scope-Eskalation, nicht vertrauenswürdige Infrastruktur und [Prompt Injection](#prompt-injection). Er sieht niemals Tool-Ergebnisse, daher können injizierte Anweisungen seine Entscheidungen nicht beeinflussen. Auto Mode ist eine Forschungsvorschau, die auf Max-, Team-, Enterprise- und API-Plänen verfügbar ist.

46 

47Weitere Informationen: [Aufforderungen mit Auto Mode eliminieren](/de/permission-modes#eliminate-prompts-with-auto-mode)

48 

49## B

50 

51### Bare Mode

52 

53Ein Startup-Flag, `--bare`, das die automatische Erkennung von Hooks, Skills, Plugins, MCP-Servern, Auto Memory und CLAUDE.md überspringt. Nur Flags, die Sie explizit übergeben, haben Auswirkungen. Empfohlen für CI und Skript-Aufrufe, bei denen Sie identisches Verhalten über Maschinen hinweg unabhängig von lokaler Konfiguration benötigen.

54 

55Weitere Informationen: [Schneller starten mit Bare Mode](/de/headless#start-faster-with-bare-mode)

56 

57### Bundled Skills

58 

59Prompt-basierte Playbooks, die mit Claude Code enthalten sind, wie `/batch`, `/simplify`, `/debug` und `/loop`. Im Gegensatz zu integrierten Befehlen, die feste Logik ausführen, geben Bundled Skills Claude eine detaillierte Aufforderung und lassen es die Arbeit orchestrieren, sodass sie Agenten spawnen, Dateien lesen und sich an Ihre Codebasis anpassen können.

60 

61Weitere Informationen: [Bundled Skills](/de/skills#bundled-skills)

62 

63## C

64 

65### Channel

66 

67Ein [MCP-Server](#mcp-model-context-protocol), der Ereignisse in Ihre laufende Sitzung pusht, damit Claude auf Dinge reagieren kann, die passieren, während Sie weg vom Terminal sind. Channels können bidirektional sein: Claude liest ein eingehendes Ereignis und antwortet über denselben Channel zurück. Telegram, Discord und iMessage sind in der Forschungsvorschau enthalten.

68 

69Weitere Informationen: [Channels](/de/channels)

70 

71### Checkpoint

72 

73Ein automatischer Snapshot Ihres Codes, der vor jeder Bearbeitung durch Claude erfasst wird. Drücken Sie `Esc` zweimal oder führen Sie `/rewind` aus, um Code, Konversation oder beides auf einen früheren Punkt zurückzusetzen. Checkpoints sind lokal für die Sitzung, getrennt von Git, und verfolgen keine Änderungen, die durch das Bash-Tool vorgenommen wurden.

74 

75Weitere Informationen: [Checkpointing](/de/checkpointing)

76 

77### `.claude` Verzeichnis

78 

79Das Verzeichnis, in dem Claude Code projektbezogene Konfiguration liest: Einstellungen, Hooks, Skills, Subagenten, Regeln und Auto Memory. Ein Projekt hat `.claude/` in seiner Wurzel; Ihre Benutzer-Level-Standardwerte befinden sich unter `~/.claude/`.

80 

81Weitere Informationen: [Das `.claude` Verzeichnis](/de/claude-directory)

82 

83### CLAUDE.md

84 

85Eine 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.

86 

87Sie 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. Spezifischere Orte haben Vorrang.

88 

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

90 

91### Command

92 

93Eine wiederverwendbare Anweisung, die Sie durch Eingabe von `/name` in der Aufforderung aufrufen. Integrierte Befehle wie `/clear`, `/model` und `/compact` steuern die Sitzung. Sie können Ihre eigenen Befehle als Dateien in `.claude/commands/` definieren oder sie aus einem [Plugin](#plugin) installieren. [Skills](#skill) sind die empfohlene Methode zum Verpacken von mehrstufigen Befehlen.

94 

95Weitere Informationen: [Commands](/de/commands) · [Skills](/de/skills)

96 

97### Compaction

98 

99Automatische Zusammenfassung Ihrer Konversation, wenn sich das [Kontextfenster](#context-window) seinem Limit nähert. Ältere Tool-Ausgaben werden zuerst gelöscht, dann wird die Konversation zusammengefasst. Projekt-Root CLAUDE.md und Auto Memory überleben die Komprimierung und werden von der Festplatte neu geladen; Anweisungen, die nur in der Konversation gegeben werden, können verloren gehen. Führen Sie `/compact` aus, um manuell auszulösen, optional mit einem Fokus wie `/compact focus on the API changes`.

100 

101Weitere Informationen: [Was Komprimierung überlebt](/de/context-window#what-survives-compaction) · [Wenn der Kontext voll wird](/de/how-claude-code-works#when-context-fills-up)

102 

103### Context Window

104 

105Das Arbeitsspeicher für eine Sitzung, das Konversationsverlauf, Dateiinhalte, Befehlsausgaben, CLAUDE.md, Auto Memory, geladene Skills und Systeminstruktionen enthält. Während Sie arbeiten, füllt sich der Kontext, bis [Komprimierung](#compaction) ihn zusammenfasst. Führen Sie `/context` aus, um zu sehen, was Platz verwendet. Für das zugrunde liegende Modellkonzept siehe das [Plattform-Glossar](https://platform.claude.com/docs/de/about-claude/glossary#context-window).

106 

107Weitere Informationen: [Erkunden Sie das Kontextfenster](/de/context-window)

108 

109## D

110 

111### Dispatch

112 

113Ein von Telefon initiierter Task-Router, der eine Claude Code-Sitzung in der Desktop-App spawnt, wenn Sie eine Coding-Aufgabe von der Claude Mobile App senden. Ihre Aufforderung leitet automatisch zum richtigen Tool weiter. Verfügbar auf Pro- und Max-Plänen.

114 

115Weitere Informationen: [Sitzungen von Dispatch](/de/desktop#sessions-from-dispatch)

116 

117## E

118 

119### Effort Level

120 

121Eine Einstellung, die steuert, wie viel des adaptiven Reasoning-Thinking-Budgets Claude bei jedem Turn verwendet. Höherer Aufwand bedeutet mehr Thinking-Tokens und tiefere Überlegungen; niedrigerer Aufwand ist schneller und billiger. Effort wird auf Opus 4.7, Opus 4.6 und Sonnet 4.6 unterstützt.

122 

123Weitere Informationen: [Passen Sie das Effort Level an](/de/model-config#adjust-effort-level)

124 

125### Extended Thinking

126 

127Sichtbares schrittweises Reasoning, das das Modell vor der Antwort durchführt. Sie können Thinking-Tokens mit `MAX_THINKING_TOKENS` begrenzen oder das [Effort Level](#effort-level) anpassen. Thinking erscheint in grauem kursivem Text im Terminal.

128 

129Weitere Informationen: [Verwenden Sie Extended Thinking](/de/common-workflows#use-extended-thinking-thinking-mode)

130 

131## H

132 

133### Hook

134 

135Ein benutzerdefinierter Handler, der automatisch an einem bestimmten Punkt im Lebenszyklus von Claude Code ausgeführt wird, z. B. bevor ein Tool ausgeführt wird, nach einer Dateibearbeitung oder beim Sitzungsstart. Handler können ein Shell-Befehl, HTTP-Endpunkt, MCP-Tool, LLM-Aufforderung oder Subagent sein. Hooks sind deterministisch: Sie werden an festen Lebenszykluspunkten ausgelöst, nicht nach Ermessen des Modells.

136 

137Eine Hook-Konfiguration hat drei Ebenen:

138 

139* **Hook Event**: der Lebenszykluspunkt

140* **Matcher**: filtert, welche Ereignisse ihn auslösen

141* **Hook Handler**: was ausgeführt wird

142 

143Weitere Informationen: [Erste Schritte mit Hooks](/de/hooks-guide) · [Hooks-Referenz](/de/hooks)

144 

145## M

146 

147### Managed Settings

148 

149Eine Einstellungsdatei, die organisationsweit von IT oder DevOps durchgesetzt wird, platziert unter einem OS-Level-Pfad außerhalb von `~/.claude`. Benutzer können verwaltete Einstellungen nicht überschreiben oder ausschließen. Verwenden Sie dies für Sicherheitsrichtlinien, Compliance-Anforderungen oder standardisierte Tools über eine Flotte.

150 

151Weitere Informationen: [Server-verwaltete Einstellungen](/de/server-managed-settings)

152 

153### MCP (Model Context Protocol)

154 

155Ein offener Standard für die Verbindung von KI-Tools mit externen Datenquellen und Diensten. MCP-Server geben Claude neue Tools für Slack, Jira, Datenbanken, Browser und Hunderte anderer Integrationen. Sie verbinden Server über `/mcp` oder durch Hinzufügen zu `.mcp.json`. Für das Protokoll selbst siehe das [Plattform-Glossar](https://platform.claude.com/docs/de/about-claude/glossary#mcp-model-context-protocol).

156 

157Weitere Informationen: [Model Context Protocol](/de/mcp)

158 

159### MCP Tool Search

160 

161Ein Kontextsparmechanismus, der MCP-Tool-Schemas bis zur Notwendigkeit aufschiebt. Nur Tool-Namen werden beim Start geladen; Claude ruft das vollständige Schema bei Bedarf ab, wenn es sich entscheidet, ein bestimmtes Tool zu verwenden. Dies verhindert, dass untätige MCP-Server viel Kontext verbrauchen.

162 

163Weitere Informationen: [Mit MCP Tool Search skalieren](/de/mcp#scale-with-mcp-tool-search)

164 

165## N

166 

167### Non-Interactive Mode

168 

169Ein Modus, der eine einzelne Aufforderung ausführt und ohne eine Konversationssitzung beendet wird, aufgerufen mit `-p` oder `--print`. Wird für CI, Skripte und Piping verwendet. Das [Agent SDK](/de/agent-sdk/overview) ist das Python- und TypeScript-Äquivalent. Früher Headless Mode genannt.

170 

171Weitere Informationen: [Claude Code programmgesteuert ausführen](/de/headless)

172 

173## O

174 

175### Output Style

176 

177Eine Konfiguration, die Claudes System-Prompt ändert, um Antwortverhalten, Ton oder Format zu ändern. Output Styles schalten die Software-Engineering-spezifischen Teile des Standard-System-Prompts aus, im Gegensatz zu [CLAUDE.md](#claude-md), das als Benutzernachricht nach dem System-Prompt bereitgestellt wird. Integrierte Styles umfassen Default, Explanatory und Learning.

178 

179Weitere Informationen: [Output Styles](/de/output-styles)

180 

181## P

182 

183### Permission Mode

184 

185Das Baseline-Genehmigungsverhalten für die Sitzung. Wechseln Sie mit `Shift+Tab` in der CLI oder verwenden Sie den Mode-Selector in VS Code, Desktop und claude.ai. Verfügbare Modi sind `default`, `acceptEdits`, `plan`, `auto`, `dontAsk` und `bypassPermissions`.

186 

187Weitere Informationen: [Wählen Sie einen Permission Mode](/de/permission-modes)

188 

189### Permission Rule

190 

191Ein Einstellungseintrag, der eine Tool-Invokation basierend auf dem Tool-Namen und Argument-Muster erlaubt, fragt oder verweigert. Regeln werden in der Reihenfolge deny→ask→allow ausgewertet, der erste Match gewinnt. Permission Rules sind feinkörnige Kontrollen, die auf dem breiteren [Permission Mode](#permission-mode) aufgelagert sind.

192 

193Weitere Informationen: [Konfigurieren Sie Berechtigungen](/de/permissions)

194 

195### Plan Mode

196 

197Ein [Permission Mode](#permission-mode), bei dem Claude Änderungen recherchiert und vorschlägt, ohne Ihre Quelldateien zu bearbeiten. Es kann lesen, suchen und Explorations-Befehle ausführen, dann einen Plan zur Genehmigung präsentieren, bevor etwas berührt wird. Geben Sie Plan Mode mit `/plan` ein oder drücken Sie `Shift+Tab`.

198 

199Weitere Informationen: [Analysieren Sie vor der Bearbeitung mit Plan Mode](/de/permission-modes#analyze-before-you-edit-with-plan-mode)

200 

201### Plugin

202 

203Ein Bundle von Skills, Hooks, Subagenten und MCP-Servern, verpackt als eine einzelne installierbare Einheit. Plugin-Skills werden als `plugin-name:skill-name` namensraum, sodass mehrere Plugins koexistieren. Verteilen Sie Plugins über Teams über einen [Marketplace](/de/plugin-marketplaces).

204 

205Weitere Informationen: [Plugins](/de/plugins)

206 

207### Project Trust

208 

209Ein einmaliger Dialog, der ein Verzeichnis akzeptiert, bevor Claude Code seine Konfiguration lädt. Trust gates Auto-Installation von Marketplace-Plugins und Ausführung von projektdefinierten Hooks. Ein Verzeichnis zu vertrauen bedeutet, dass seine `.claude/settings.json`, `.mcp.json` und andere Konfigurationsdateien wirksam werden.

210 

211Weitere Informationen: [Das `.claude` Verzeichnis](/de/claude-directory)

212 

213### Prompt Injection

214 

215Feindselige Anweisungen, die in einer Datei, Webseite oder Tool-Ergebnis eingebettet sind und versuchen, Claude zu Aktionen umzuleiten, die Sie nie angefordert haben. Die Abwehrmechanismen von Claude Code umfassen das Berechtigungssystem, Befehlsblocklisten und Vertrauensüberprüfung. [Auto Mode](#auto-mode) fügt eine serverseitige Sonde hinzu, die Tool-Ergebnisse auf verdächtige Inhalte scannt, und einen Klassifizierer, der niemals Tool-Ergebnisse sieht, sodass injizierter Text seine Genehmigungsentscheidungen nicht beeinflussen kann.

216 

217Weitere Informationen: [Schützen Sie sich vor Prompt Injection](/de/security#protect-against-prompt-injection)

218 

219## R

220 

221### Remote Control

222 

223Eine Möglichkeit, eine lokale Claude Code-Sitzung von Ihrem Telefon oder Browser über claude.ai fortzusetzen. Ihr Code bleibt auf Ihrem Computer; nur die Benutzeroberfläche ist remote. Unterschiedlich von Claude Code im Web, das in einer Cloud-Sandbox ausgeführt wird.

224 

225Weitere Informationen: [Remote Control](/de/remote-control)

226 

227### Rules

228 

229Modulare Anweisungsdateien in `.claude/rules/`, die zusammen mit CLAUDE.md geladen werden. Eine Regel kann mit YAML `paths:` Frontmatter pfadgebunden sein, sodass sie nur geladen wird, wenn Claude eine übereinstimmende Datei liest, um den Kontext schlank zu halten, bis er relevant ist.

230 

231Weitere Informationen: [Organisieren Sie Regeln mit `.claude/rules/`](/de/memory#organize-rules-with-claude/rules/)

232 

233## S

234 

235### Sandboxing

236 

237OS-Level-Dateisystem- und Netzwerkisolation für das Bash-Tool. Befehle werden innerhalb einer Grenze ausgeführt, die Sie im Voraus definieren, sodass Claude frei darin arbeiten kann, ohne Genehmigungsaufforderungen pro Befehl. Sandboxing ist eine separate Schicht von [Permission Rules](#permission-rule).

238 

239Weitere Informationen: [Sandboxing](/de/sandboxing)

240 

241### Session

242 

243Eine Konversation, die an Ihr aktuelles Verzeichnis gebunden ist, mit ihrem eigenen unabhängigen [Kontextfenster](#context-window). Sitzungen können mit `claude -c` fortgesetzt, mit `--fork-session` geforkt werden, um den Verlauf unter einer neuen Sitzungs-ID zu bewahren, oder parallel über Terminals ausgeführt werden. Das Ausführen von `/clear` startet eine neue Sitzung; die vorherige bleibt gespeichert und ist über `/resume` verfügbar. Das Transkript jeder Sitzung wird unter `~/.claude/projects/` gespeichert.

244 

245Weitere Informationen: [Arbeiten Sie mit Sitzungen](/de/how-claude-code-works#work-with-sessions)

246 

247### Settings Layers

248 

249Die Hierarchie, aus der Claude Code Konfiguration liest, in Vorrangordnung von höchster zu niedrigster: [verwaltete Richtlinie](#managed-settings), Befehlszeilenargumente, lokale Einstellungen unter `.claude/settings.local.json`, Projekteinstellungen unter `.claude/settings.json`, dann Benutzereinstellungen unter `~/.claude/settings.json`. Arrays werden über Schichten hinweg zusammengeführt; Skalare auf einer höheren Schicht überschreiben niedrigere.

250 

251Weitere Informationen: [Einstellungsdateien](/de/settings#settings-files)

252 

253### Skill

254 

255Eine `SKILL.md`-Datei mit Anweisungen, Wissen oder einem Workflow, den Claude zu seinem Toolkit hinzufügt. Claude lädt einen Skill automatisch, wenn er relevant ist, oder Sie rufen ihn direkt mit `/skill-name` auf. Skills folgen dem Agent Skills Open Standard; Claude Code erweitert ihn mit Invokationskontrolle und Subagent-Ausführung.

256 

257Skills sind der empfohlene Nachfolger zu benutzerdefinierten Befehlen. Eine Datei unter `.claude/commands/deploy.md` und eine unter `.claude/skills/deploy/SKILL.md` erstellen beide `/deploy` und funktionieren auf die gleiche Weise; vorhandene Befehlsdateien funktionieren weiterhin.

258 

259Weitere Informationen: [Erweitern Sie Claude mit Skills](/de/skills)

260 

261### Subagent

262 

263Ein spezialisierter KI-Assistent, der in seinem eigenen Kontextfenster mit einem benutzerdefinierten System-Prompt, spezifischem Tool-Zugriff und unabhängigen Berechtigungen ausgeführt wird. Er arbeitet an einer delegierten Aufgabe und gibt eine Zusammenfassung an die Hauptkonversation zurück. Verwenden Sie Subagenten, um große Explorations aus Ihrem primären Kontext zu halten oder um parallele Forschung auszuführen. Unterschiedlich von [Agent Teams](#agent-teams), bei denen jeder Agent eine vollständig unabhängige Sitzung ist, mit der Sie direkt sprechen können.

264 

265Integrierte Subagenten umfassen Explore, Plan und allgemeinen Zweck.

266 

267Weitere Informationen: [Erstellen Sie benutzerdefinierte Subagenten](/de/sub-agents)

268 

269### Surface

270 

271Jeder Ort, an dem Sie auf Claude Code zugreifen: die CLI, VS Code, JetBrains, Desktop oder claude.ai. Alle Surfaces teilen die gleiche Engine, sodass Ihre CLAUDE.md, Einstellungen und Skills auf die gleiche Weise über sie hinweg funktionieren. Slack und die Chrome-Erweiterung sind Integrationen, die sich mit einer Surface verbinden, anstatt Surfaces selbst zu sein.

272 

273Weitere Informationen: [Plattformen und Integrationen](/de/platforms)

274 

275## T

276 

277### Teleport

278 

279Ein Befehl, `/teleport`, der eine Cloud Claude Code-Sitzung in Ihr lokales Terminal zieht. Claude ruft den Branch ab, lädt den Konversationsverlauf und setzt die Web-Sitzung fort, wo sie zuletzt war. Die umgekehrte Richtung ist `--remote`, die eine lokale Aufgabe zum Ausführen im Web sendet.

280 

281Weitere Informationen: [Vom Web zum Terminal](/de/claude-code-on-the-web#from-web-to-terminal)

282 

283### Tool

284 

285Eine Aktion, die Claude durchführen kann: eine Datei lesen, Code bearbeiten, einen Shell-Befehl ausführen, das Web durchsuchen, einen Subagenten spawnen. Tools sind das, was Claude Code agentic macht. Ohne sie kann Claude nur mit Text antworten. Jede Tool-Nutzung gibt ein Ergebnis zurück, das Claudes nächste Entscheidung in der [Agentic Loop](#agentic-loop) informiert.

286 

287Weitere Informationen: [Tools, die Claude zur Verfügung stehen](/de/tools-reference)

288 

289## W

290 

291### Worktree Isolation

292 

293Ein Isolationsmodus, der Claude in einem separaten Git-Worktree unter `.claude/worktrees/` ausführt, aktiviert mit dem `-w`-Flag oder `isolation: worktree` in der Subagent-Konfiguration. Änderungen bleiben auf einem separaten Branch in einem separaten Verzeichnis, sodass parallele Agenten die Dateien des anderen nicht überschreiben.

294 

295Weitere Informationen: [Führen Sie parallele Sitzungen mit Git Worktrees aus](/de/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees)

296 

297***

298 

299## Veraltete und umbenannte Begriffe

300 

301Diese Begriffe erscheinen in älteren Dokumentationen, Blog-Posts und Community-Inhalten. Verwenden Sie den aktuellen Namen, wenn Sie diese Website durchsuchen.

302 

303| Alter Begriff | Jetzt genannt | Notizen |

304| --------------- | --------------------------------------------- | --------------------------------------------------- |

305| Headless Mode | [Non-Interactive Mode](#non-interactive-mode) | Gleiches `-p`-Flag, gleiches Verhalten |

306| Custom Commands | [Skills](#skill) | `.claude/commands/`-Dateien funktionieren weiterhin |

307| Slash Commands | Commands | „Slash" aus der Produktkopie entfernt |

google-vertex-ai.md +387 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code auf Google Vertex AI

6 

7> Erfahren Sie, wie Sie Claude Code über Google Vertex AI konfigurieren, einschließlich Setup, IAM-Konfiguration und Fehlerbehebung.

8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79export const Experiment = ({flag, treatment, children}) => {

80 const VID_KEY = 'exp_vid';

81 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

82 const fnv1a = s => {

83 let h = 0x811c9dc5;

84 for (let i = 0; i < s.length; i++) {

85 h ^= s.charCodeAt(i);

86 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

87 }

88 return h >>> 0;

89 };

90 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

91 const [decision] = useState(() => {

92 const params = new URLSearchParams(location.search);

93 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

94 const force = params.get('gb-force');

95 if (force) {

96 for (const p of force.split(',')) {

97 const [k, v] = p.split(':');

98 if (k === flag) return {

99 variant: v || 'treatment',

100 track: false

101 };

102 }

103 }

104 if (navigator.globalPrivacyControl) {

105 return {

106 variant: 'control',

107 track: false

108 };

109 }

110 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

111 if (prefsMatch) {

112 try {

113 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

114 return {

115 variant: 'control',

116 track: false

117 };

118 }

119 } catch {

120 return {

121 variant: 'control',

122 track: false

123 };

124 }

125 } else {

126 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

127 if (!country || CONSENT_COUNTRIES.has(country)) {

128 return {

129 variant: 'control',

130 track: false

131 };

132 }

133 }

134 let vid;

135 try {

136 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

137 if (ajsMatch) {

138 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

139 } else {

140 vid = localStorage.getItem(VID_KEY);

141 if (!vid) {

142 vid = crypto.randomUUID();

143 }

144 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

145 }

146 try {

147 localStorage.setItem(VID_KEY, vid);

148 } catch {}

149 } catch {

150 return {

151 variant: 'control',

152 track: false

153 };

154 }

155 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

156 return {

157 variant,

158 track: true,

159 vid

160 };

161 });

162 useEffect(() => {

163 if (!decision.track) return;

164 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

165 method: 'POST',

166 headers: {

167 'Content-Type': 'application/json',

168 'x-service-name': 'claude_code_docs'

169 },

170 body: JSON.stringify({

171 events: [{

172 event_type: 'GrowthbookExperimentEvent',

173 event_data: {

174 device_id: decision.vid,

175 anonymous_id: decision.vid,

176 timestamp: new Date().toISOString(),

177 experiment_id: flag,

178 variation_id: decision.variant === 'treatment' ? 1 : 0,

179 environment: 'production'

180 }

181 }]

182 }),

183 keepalive: true

184 }).catch(() => {});

185 }, []);

186 return decision.variant === 'treatment' ? treatment : children;

187};

188 

189<Experiment flag="docs-contact-sales-cta" treatment={<ContactSalesCard surface="vertex" />} />

190 

191## Voraussetzungen

192 

193Bevor Sie Claude Code mit Vertex AI konfigurieren, stellen Sie sicher, dass Sie über Folgendes verfügen:

194 

195* Ein Google Cloud Platform (GCP)-Konto mit aktivierter Abrechnung

196* Ein GCP-Projekt mit aktivierter Vertex AI API

197* Zugriff auf gewünschte Claude-Modelle (z. B. Claude Sonnet 4.6)

198* Google Cloud SDK (`gcloud`) installiert und konfiguriert

199* Kontingent im gewünschten GCP-Bereich zugewiesen

200 

201Um sich mit Ihren eigenen Vertex AI-Anmeldedaten anzumelden, folgen Sie [Anmelden mit Vertex AI](#sign-in-with-vertex-ai) unten. Um Claude Code in einem Team bereitzustellen, verwenden Sie die Schritte zum [manuellen Setup](#set-up-manually) und [fixieren Sie Ihre Modellversionen](#5-pin-model-versions), bevor Sie ausrollen.

202 

203## Anmelden mit Vertex AI

204 

205Wenn Sie Google Cloud-Anmeldedaten haben und Claude Code über Vertex AI verwenden möchten, führt Sie der Anmeldeasistent durch den Prozess. Sie führen die GCP-seitigen Voraussetzungen einmal pro Projekt durch; der Assistent kümmert sich um die Claude Code-Seite.

206 

207<Note>

208 Der Vertex AI-Setup-Assistent erfordert Claude Code v2.1.98 oder später. Führen Sie `claude --version` aus, um dies zu überprüfen.

209</Note>

210 

211<Steps>

212 <Step title="Aktivieren Sie Claude-Modelle in Ihrem GCP-Projekt">

213 [Aktivieren Sie die Vertex AI API](#1-enable-vertex-ai-api) für Ihr Projekt, und fordern Sie dann Zugriff auf die Claude-Modelle an, die Sie im [Vertex AI Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) möchten. Siehe [IAM-Konfiguration](#iam-configuration) für die Berechtigungen, die Ihr Konto benötigt.

214 </Step>

215 

216 <Step title="Starten Sie Claude Code und wählen Sie Vertex AI">

217 Führen Sie `claude` aus. Wählen Sie bei der Anmeldeeingabeaufforderung **3rd-party platform** und dann **Google Vertex AI**.

218 </Step>

219 

220 <Step title="Folgen Sie den Eingabeaufforderungen des Assistenten">

221 Wählen Sie, wie Sie sich bei Google Cloud authentifizieren: Application Default Credentials von `gcloud`, eine Service-Account-Schlüsseldatei oder Anmeldedaten, die bereits in Ihrer Umgebung vorhanden sind. Der Assistent erkennt Ihr Projekt und Ihre Region, überprüft, welche Claude-Modelle Ihr Projekt aufrufen kann, und ermöglicht es Ihnen, diese zu fixieren. Das Ergebnis wird im `env`-Block Ihrer [Benutzereinstellungsdatei](/de/settings) gespeichert, sodass Sie Umgebungsvariablen nicht selbst exportieren müssen.

222 </Step>

223</Steps>

224 

225Nachdem Sie sich angemeldet haben, führen Sie `/setup-vertex` jederzeit aus, um den Assistenten erneut zu öffnen und Ihre Anmeldedaten, Ihr Projekt, Ihre Region oder Ihre Modellpins zu ändern.

226 

227## Regionskonfiguration

228 

229Claude Code unterstützt Vertex AI [globale](https://cloud.google.com/blog/products/ai-machine-learning/global-endpoint-for-claude-models-generally-available-on-vertex-ai), Multi-Region- und regionale Endpunkte. Legen Sie `CLOUD_ML_REGION` auf `global`, einen Multi-Region-Standort wie `eu` oder `us` oder eine bestimmte Region wie `us-east5` fest. Claude Code wählt den korrekten Vertex AI-Hostnamen für jedes Formular aus, einschließlich der Hosts `aiplatform.eu.rep.googleapis.com` und `aiplatform.us.rep.googleapis.com` für Multi-Region-Standorte.

230 

231<Note>

232 Vertex AI unterstützt möglicherweise die Claude Code-Standardmodelle nicht auf jedem Endpunkttyp. Die Modellverfügbarkeit variiert je nach [spezifischen Regionen](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations#genai-partner-models), Multi-Region-Standorten und [globalen Endpunkten](https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models#supported_models). Möglicherweise müssen Sie zu einem unterstützten Standort wechseln oder ein unterstütztes Modell angeben.

233</Note>

234 

235## Manuelles Setup

236 

237Um Vertex AI über Umgebungsvariablen statt über den Assistenten zu konfigurieren, z. B. in CI oder einem skriptgesteuerten Enterprise-Rollout, folgen Sie den folgenden Schritten.

238 

239### 1. Aktivieren Sie die Vertex AI API

240 

241Aktivieren Sie die Vertex AI API in Ihrem GCP-Projekt:

242 

243```bash theme={null}

244# Legen Sie Ihre Projekt-ID fest

245gcloud config set project YOUR-PROJECT-ID

246 

247# Aktivieren Sie die Vertex AI API

248gcloud services enable aiplatform.googleapis.com

249```

250 

251### 2. Fordern Sie Modellzugriff an

252 

253Fordern Sie Zugriff auf Claude-Modelle in Vertex AI an:

254 

2551. Navigieren Sie zum [Vertex AI Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)

2562. Suchen Sie nach 'Claude"-Modellen

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

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

259 

260### 3. Konfigurieren Sie GCP-Anmeldedaten

261 

262Claude Code verwendet die standardmäßige Google Cloud-Authentifizierung.

263 

264Weitere Informationen finden Sie in der [Google Cloud-Authentifizierungsdokumentation](https://cloud.google.com/docs/authentication).

265 

266Claude Code v2.1.121 oder später unterstützt [X.509-zertifikatbasierte Workload Identity Federation](https://cloud.google.com/iam/docs/workload-identity-federation-with-x509-certificates) über die gleiche Application Default Credentials-Kette. Legen Sie `GOOGLE_APPLICATION_CREDENTIALS` auf den Pfad Ihrer Anmeldedaten-Konfigurationsdatei fest.

267 

268<Note>

269 Bei der Authentifizierung verwendet Claude Code automatisch die Projekt-ID aus der Umgebungsvariablen `ANTHROPIC_VERTEX_PROJECT_ID`. Um dies zu überschreiben, legen Sie eine dieser Umgebungsvariablen fest: `GCLOUD_PROJECT`, `GOOGLE_CLOUD_PROJECT` oder `GOOGLE_APPLICATION_CREDENTIALS`.

270</Note>

271 

272### 4. Konfigurieren Sie Claude Code

273 

274Legen Sie die folgenden Umgebungsvariablen fest:

275 

276```bash theme={null}

277# Aktivieren Sie die Vertex AI-Integration

278export CLAUDE_CODE_USE_VERTEX=1

279export CLOUD_ML_REGION=global

280export ANTHROPIC_VERTEX_PROJECT_ID=YOUR-PROJECT-ID

281 

282# Optional: Überschreiben Sie die Vertex-Endpunkt-URL für benutzerdefinierte Endpunkte oder Gateways

283# export ANTHROPIC_VERTEX_BASE_URL=https://aiplatform.googleapis.com

284 

285# Optional: Deaktivieren Sie Prompt Caching bei Bedarf

286export DISABLE_PROMPT_CACHING=1

287 

288# Optional: Fordern Sie eine 1-Stunden-Prompt-Cache-TTL statt des 5-Minuten-Standards an

289export ENABLE_PROMPT_CACHING_1H=1

290 

291# Wenn CLOUD_ML_REGION=global, überschreiben Sie die Region für Modelle, die keine globalen Endpunkte unterstützen

292export VERTEX_REGION_CLAUDE_HAIKU_4_5=us-east5

293export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1

294```

295 

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

297 

298[Prompt Caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) wird automatisch aktiviert. Um es zu deaktivieren, legen Sie `DISABLE_PROMPT_CACHING=1` fest. Um eine 1-Stunden-Cache-TTL statt des 5-Minuten-Standards anzufordern, legen Sie `ENABLE_PROMPT_CACHING_1H=1` fest; Cache-Schreibvorgänge mit einer 1-Stunden-TTL werden mit einem höheren Satz abgerechnet. Für erhöhte Ratenlimits wenden Sie sich an den Google Cloud-Support. Bei Verwendung von Vertex AI sind die Befehle `/login` und `/logout` deaktiviert, da die Authentifizierung über Google Cloud-Anmeldedaten erfolgt.

299 

300[MCP-Toolsuche](/de/mcp#scale-with-mcp-tool-search) ist standardmäßig auf Vertex AI deaktiviert, da der Endpunkt den erforderlichen Beta-Header nicht akzeptiert. Alle MCP-Tool-Definitionen werden stattdessen beim Start geladen. Um sich anzumelden, legen Sie `ENABLE_TOOL_SEARCH=true` fest.

301 

302### 5. Fixieren Sie Modellversionen

303 

304<Warning>

305 Fixieren Sie spezifische Modellversionen bei der Bereitstellung für mehrere Benutzer. Ohne Fixierung werden Modellaliase wie `sonnet` und `opus` zur neuesten Version aufgelöst, die möglicherweise noch nicht in Ihrem Vertex AI-Projekt aktiviert ist, wenn Anthropic ein Update veröffentlicht. Claude Code [fällt zurück](#startup-model-checks) beim Start zur vorherigen Version zurück, wenn die neueste nicht verfügbar ist, aber das Fixieren ermöglicht es Ihnen, zu kontrollieren, wann Ihre Benutzer zu einem neuen Modell wechseln.

306</Warning>

307 

308Legen Sie diese Umgebungsvariablen auf spezifische Vertex AI-Modell-IDs fest.

309 

310Ohne `ANTHROPIC_DEFAULT_OPUS_MODEL` wird der `opus`-Alias auf Vertex zu Opus 4.6 aufgelöst. Legen Sie ihn auf die Opus 4.7-ID fest, um das neueste Modell zu verwenden:

311 

312```bash theme={null}

313export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'

314export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'

315export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'

316```

317 

318Aktuelle und ältere Modell-IDs finden Sie unter [Modellübersicht](https://platform.claude.com/docs/en/about-claude/models/overview). Siehe [Modellkonfiguration](/de/model-config#pin-models-for-third-party-deployments) für die vollständige Liste der Umgebungsvariablen.

319 

320Claude Code verwendet diese Standardmodelle, wenn keine Fixierungsvariablen gesetzt sind:

321 

322| Modelltyp | Standardwert |

323| :----------------------- | :--------------------------- |

324| Primäres Modell | `claude-sonnet-4-5@20250929` |

325| Kleines/schnelles Modell | `claude-haiku-4-5@20251001` |

326 

327Um Modelle weiter anzupassen:

328 

329```bash theme={null}

330export ANTHROPIC_MODEL='claude-opus-4-7'

331export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'

332```

333 

334## Startmodellprüfungen

335 

336Wenn Claude Code mit konfiguriertem Vertex AI startet, überprüft es, dass die Modelle, die es verwenden möchte, in Ihrem Projekt zugänglich sind. Diese Prüfung erfordert Claude Code v2.1.98 oder später.

337 

338Wenn Sie eine Modellversion fixiert haben, die älter als der aktuelle Claude Code-Standard ist, und Ihr Projekt die neuere Version aufrufen kann, fordert Claude Code Sie auf, die Fixierung zu aktualisieren. Das Akzeptieren schreibt die neue Modell-ID in Ihre [Benutzereinstellungsdatei](/de/settings) und startet Claude Code neu. Das Ablehnen wird bis zur nächsten Standardversionänderung beibehalten.

339 

340Wenn Sie ein Modell nicht fixiert haben und der aktuelle Standard in Ihrem Projekt nicht verfügbar ist, fällt Claude Code für die aktuelle Sitzung zur vorherigen Version zurück und zeigt einen Hinweis an. Das Fallback wird nicht beibehalten. Aktivieren Sie das neuere Modell im [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) oder [fixieren Sie eine Version](#5-pin-model-versions), um die Auswahl dauerhaft zu machen.

341 

342## IAM-Konfiguration

343 

344Weisen Sie die erforderlichen IAM-Berechtigungen zu:

345 

346Die Rolle `roles/aiplatform.user` umfasst die erforderlichen Berechtigungen:

347 

348* `aiplatform.endpoints.predict` - Erforderlich für Modellaufrufe und Token-Zählung

349 

350Für restriktivere Berechtigungen erstellen Sie eine benutzerdefinierte Rolle nur mit den oben genannten Berechtigungen.

351 

352Weitere Informationen finden Sie in der [Vertex IAM-Dokumentation](https://cloud.google.com/vertex-ai/docs/general/access-control).

353 

354<Note>

355 Erstellen Sie ein dediziertes GCP-Projekt für Claude Code, um die Kostenverfolgung und Zugriffskontrolle zu vereinfachen.

356</Note>

357 

358## 1M-Token-Kontextfenster

359 

360Claude Opus 4.7, Opus 4.6 und Sonnet 4.6 unterstützen das [1M-Token-Kontextfenster](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) auf Vertex AI. Claude Code aktiviert automatisch das erweiterte Kontextfenster, wenn Sie eine 1M-Modellvariante auswählen.

361 

362Der [Setup-Assistent](#sign-in-with-vertex-ai) bietet eine 1M-Kontextoption an, wenn er Modelle fixiert. Um es stattdessen für ein manuell fixiertes Modell zu aktivieren, hängen Sie `[1m]` an die Modell-ID an. Siehe [Modelle für Drittanbieter-Bereitstellungen fixieren](/de/model-config#pin-models-for-third-party-deployments) für Details.

363 

364## Fehlerbehebung

365 

366Wenn Sie auf Kontingentprobleme stoßen:

367 

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

369 

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

371 

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

373* Ü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

374* 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:

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

376 * Einen regionalen oder Multi-Region-Standort mit `VERTEX_REGION_<MODEL_NAME>`-Umgebungsvariablen festlegen

377 

378Wenn Sie auf 429-Fehler stoßen:

379 

380* Stellen Sie für regionale Endpunkte sicher, dass das primäre Modell und das kleine/schnelle Modell in Ihrer ausgewählten Region unterstützt werden

381* Erwägen Sie, zu `CLOUD_ML_REGION=global` zu wechseln, um bessere Verfügbarkeit zu erreichen

382 

383## Zusätzliche Ressourcen

384 

385* [Vertex AI-Dokumentation](https://cloud.google.com/vertex-ai/docs)

386* [Vertex AI-Preisgestaltung](https://cloud.google.com/vertex-ai/pricing)

387* [Vertex AI-Kontingente und -Limits](https://cloud.google.com/vertex-ai/docs/quotas)

headless.md +225 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code programmgesteuert ausführen

6 

7> Verwenden Sie das Agent SDK, um Claude Code programmgesteuert über die CLI, Python oder TypeScript auszuführen.

8 

9Das [Agent SDK](/de/agent-sdk/overview) bietet Ihnen die gleichen Tools, die Agent-Schleife und das Kontextmanagement, die Claude Code antreiben. Es ist als CLI für Skripte und CI/CD verfügbar oder als [Python](/de/agent-sdk/python)- und [TypeScript](/de/agent-sdk/typescript)-Pakete für vollständige programmgesteuerte Kontrolle.

10 

11<Note>

12 Die CLI hieß früher „Headless-Modus". Das Flag `-p` und alle CLI-Optionen funktionieren auf die gleiche Weise.

13</Note>

14 

15Um Claude Code programmgesteuert über die CLI auszuführen, übergeben Sie `-p` mit Ihrer Eingabeaufforderung und allen [CLI-Optionen](/de/cli-reference):

16 

17```bash theme={null}

18claude -p "Find and fix the bug in auth.py" --allowedTools "Read,Edit,Bash"

19```

20 

21Diese Seite behandelt die Verwendung des Agent SDK über die CLI (`claude -p`). Für die Python- und TypeScript-SDK-Pakete mit strukturierten Ausgaben, Tool-Genehmigungsrückrufen und nativen Nachrichtenobjekten siehe die [vollständige Agent SDK-Dokumentation](/de/agent-sdk/overview).

22 

23## Grundlegende Verwendung

24 

25Fügen Sie das Flag `-p` (oder `--print`) zu jedem `claude`-Befehl hinzu, um ihn nicht interaktiv auszuführen. Alle [CLI-Optionen](/de/cli-reference) funktionieren mit `-p`, einschließlich:

26 

27* `--continue` zum [Fortsetzen von Gesprächen](#continue-conversations)

28* `--allowedTools` zum [automatischen Genehmigen von Tools](#auto-approve-tools)

29* `--output-format` für [strukturierte Ausgabe](#get-structured-output)

30 

31Dieses Beispiel stellt Claude eine Frage zu Ihrer Codebasis und gibt die Antwort aus:

32 

33```bash theme={null}

34claude -p "What does the auth module do?"

35```

36 

37### Schneller starten mit Bare-Modus

38 

39Fügen Sie `--bare` hinzu, um die Startzeit zu verkürzen, indem Sie die automatische Erkennung von hooks, skills, plugins, MCP-Servern, automatischem Speicher und CLAUDE.md überspringen. Ohne diese Option lädt `claude -p` den gleichen [Kontext](/de/how-claude-code-works#the-context-window), den eine interaktive Sitzung hätte, einschließlich alles, was im Arbeitsverzeichnis oder in `~/.claude` konfiguriert ist.

40 

41Der Bare-Modus ist nützlich für CI und Skripte, bei denen Sie auf jedem Computer das gleiche Ergebnis benötigen. Ein hook in der `~/.claude` eines Teamkollegen oder ein MCP-Server in der `.mcp.json` des Projekts werden nicht ausgeführt, da der Bare-Modus diese nie liest. Nur Flags, die Sie explizit übergeben, haben Auswirkungen.

42 

43Dieses Beispiel führt eine einmalige Zusammenfassungsaufgabe im Bare-Modus aus und genehmigt das Read-Tool vorab, damit der Aufruf ohne Berechtigungsaufforderung abgeschlossen wird:

44 

45```bash theme={null}

46claude --bare -p "Summarize this file" --allowedTools "Read"

47```

48 

49Im Bare-Modus hat Claude Zugriff auf die Bash-, Dateilesungs- und Dateibearbeitungstools. Übergeben Sie jeden Kontext, den Sie benötigen, mit einem Flag:

50 

51| Zum Laden | Verwenden Sie |

52| -------------------------- | ------------------------------------------------------- |

53| Systemanfrage-Ergänzungen | `--append-system-prompt`, `--append-system-prompt-file` |

54| Einstellungen | `--settings <file-or-json>` |

55| MCP-Server | `--mcp-config <file-or-json>` |

56| Benutzerdefinierte Agenten | `--agents <json>` |

57| Ein Plugin-Verzeichnis | `--plugin-dir <path>` |

58 

59Der Bare-Modus überspringt OAuth und Keychain-Lesevorgänge. Die Anthropic-Authentifizierung muss von `ANTHROPIC_API_KEY` oder einem `apiKeyHelper` in der an `--settings` übergebenen JSON stammen. Bedrock, Vertex und Foundry verwenden ihre üblichen Anmeldedaten des Anbieters.

60 

61<Note>

62 `--bare` ist der empfohlene Modus für skriptgesteuerte und SDK-Aufrufe und wird in einer zukünftigen Version zum Standard für `-p`.

63</Note>

64 

65## Beispiele

66 

67Diese Beispiele zeigen häufige CLI-Muster. Für CI und andere skriptgesteuerte Aufrufe fügen Sie [`--bare`](#start-faster-with-bare-mode) hinzu, damit sie nicht abhängig von lokalen Konfigurationen sind.

68 

69### Strukturierte Ausgabe abrufen

70 

71Verwenden Sie `--output-format`, um zu steuern, wie Antworten zurückgegeben werden:

72 

73* `text` (Standard): einfache Textausgabe

74* `json`: strukturiertes JSON mit Ergebnis, Sitzungs-ID und Metadaten

75* `stream-json`: zeilengetrennte JSON für Echtzeit-Streaming

76 

77Dieses Beispiel gibt eine Projektzusammenfassung als JSON mit Sitzungsmetadaten zurück, wobei sich das Textergebnis im Feld `result` befindet:

78 

79```bash theme={null}

80claude -p "Summarize this project" --output-format json

81```

82 

83Um eine Ausgabe zu erhalten, die einem bestimmten Schema entspricht, verwenden Sie `--output-format json` mit `--json-schema` und einer [JSON Schema](https://json-schema.org/)-Definition. Die Antwort enthält Metadaten über die Anfrage (Sitzungs-ID, Nutzung usw.) mit der strukturierten Ausgabe im Feld `structured_output`.

84 

85Dieses Beispiel extrahiert Funktionsnamen und gibt sie als Array von Zeichenketten zurück:

86 

87```bash theme={null}

88claude -p "Extract the main function names from auth.py" \

89 --output-format json \

90 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'

91```

92 

93<Tip>

94 Verwenden Sie ein Tool wie [jq](https://jqlang.github.io/jq/), um die Antwort zu analysieren und bestimmte Felder zu extrahieren:

95 

96 ```bash theme={null}

97 # Extract the text result

98 claude -p "Summarize this project" --output-format json | jq -r '.result'

99 

100 # Extract structured output

101 claude -p "Extract function names from auth.py" \

102 --output-format json \

103 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}' \

104 | jq '.structured_output'

105 ```

106</Tip>

107 

108### Antworten streamen

109 

110Verwenden Sie `--output-format stream-json` mit `--verbose` und `--include-partial-messages`, um Token zu empfangen, während sie generiert werden. Jede Zeile ist ein JSON-Objekt, das ein Ereignis darstellt:

111 

112```bash theme={null}

113claude -p "Explain recursion" --output-format stream-json --verbose --include-partial-messages

114```

115 

116Das folgende Beispiel verwendet [jq](https://jqlang.github.io/jq/), um nach Text-Deltas zu filtern und nur den Streaming-Text anzuzeigen. Das Flag `-r` gibt Rohzeichenketten aus (keine Anführungszeichen) und `-j` verbindet ohne Zeilenumbrüche, sodass Token kontinuierlich gestreamt werden:

117 

118```bash theme={null}

119claude -p "Write a poem" --output-format stream-json --verbose --include-partial-messages | \

120 jq -rj 'select(.type == "stream_event" and .event.delta.type? == "text_delta") | .event.delta.text'

121```

122 

123Wenn eine API-Anfrage mit einem wiederholbaren Fehler fehlschlägt, gibt Claude Code ein `system/api_retry`-Ereignis vor dem erneuten Versuch aus. Sie können dies verwenden, um Wiederholungsfortschritt anzuzeigen oder benutzerdefinierte Backoff-Logik zu implementieren.

124 

125| Feld | Typ | Beschreibung |

126| ---------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

127| `type` | `"system"` | Nachrichtentyp |

128| `subtype` | `"api_retry"` | identifiziert dies als Wiederholungsereignis |

129| `attempt` | Ganzzahl | aktuelle Versuchsnummer, beginnend bei 1 |

130| `max_retries` | Ganzzahl | insgesamt zulässige Wiederholungen |

131| `retry_delay_ms` | Ganzzahl | Millisekunden bis zum nächsten Versuch |

132| `error_status` | Ganzzahl oder null | HTTP-Statuscode oder `null` für Verbindungsfehler ohne HTTP-Antwort |

133| `error` | Zeichenkette | Fehlerkategorie: `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `rate_limit`, `invalid_request`, `server_error`, `max_output_tokens` oder `unknown` |

134| `uuid` | Zeichenkette | eindeutige Ereigniskennung |

135| `session_id` | Zeichenkette | Sitzung, zu der das Ereignis gehört |

136 

137Das `system/init`-Ereignis meldet Sitzungsmetadaten einschließlich des Modells, Tools, MCP-Server und geladener Plugins. Es ist das erste Ereignis im Stream, es sei denn, [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/de/env-vars) ist gesetzt. In diesem Fall gehen `plugin_install`-Ereignisse voraus. Verwenden Sie die Plugin-Felder, um CI fehlschlagen zu lassen, wenn ein Plugin nicht geladen wurde:

138 

139| Feld | Typ | Beschreibung |

140| --------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

141| `plugins` | Array | Plugins, die erfolgreich geladen wurden, jeweils mit `name` und `path` |

142| `plugin_errors` | Array | Plugin-Ladefehler wie eine nicht erfüllte Abhängigkeitsversion, jeweils mit `plugin`, `type` und `message`. Betroffene Plugins werden herabgestuft und fehlen in `plugins`. Der Schlüssel wird weggelassen, wenn es keine Fehler gibt |

143 

144Wenn [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/de/env-vars) gesetzt ist, gibt Claude Code `system/plugin_install`-Ereignisse aus, während Marketplace-Plugins vor dem ersten Zug installiert werden. Verwenden Sie diese, um Installationsfortschritt in Ihrer eigenen Benutzeroberfläche anzuzeigen.

145 

146| Feld | Typ | Beschreibung |

147| ------------ | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |

148| `type` | `"system"` | Nachrichtentyp |

149| `subtype` | `"plugin_install"` | identifiziert dies als Plugin-Installationsereignis |

150| `status` | `"started"`, `"installed"`, `"failed"` oder `"completed"` | `started` und `completed` rahmen die Gesamtinstallation ein; `installed` und `failed` melden einzelne Marketplaces |

151| `name` | Zeichenkette, optional | Marketplace-Name, vorhanden bei `installed` und `failed` |

152| `error` | Zeichenkette, optional | Fehlermeldung, vorhanden bei `failed` |

153| `uuid` | Zeichenkette | eindeutige Ereigniskennung |

154| `session_id` | Zeichenkette | Sitzung, zu der das Ereignis gehört |

155 

156Für programmgesteuertes Streaming mit Rückrufen und Nachrichtenobjekten siehe [Antworten in Echtzeit streamen](/de/agent-sdk/streaming-output) in der Agent SDK-Dokumentation.

157 

158### Tools automatisch genehmigen

159 

160Verwenden Sie `--allowedTools`, um Claude die Verwendung bestimmter Tools ohne Aufforderung zu ermöglichen. Dieses Beispiel führt eine Test-Suite aus und behebt Fehler, wobei Claude Bash-Befehle ausführen und Dateien lesen/bearbeiten kann, ohne um Genehmigung zu fragen:

161 

162```bash theme={null}

163claude -p "Run the test suite and fix any failures" \

164 --allowedTools "Bash,Read,Edit"

165```

166 

167Um einen Baseline für die gesamte Sitzung festzulegen, anstatt einzelne Tools aufzulisten, übergeben Sie einen [Berechtigungsmodus](/de/permission-modes). `dontAsk` verweigert alles, das nicht in Ihren `permissions.allow`-Regeln oder dem [schreibgeschützten Befehlssatz](/de/permissions#read-only-commands) enthalten ist, was für gesperrte CI-Läufe nützlich ist. `acceptEdits` ermöglicht Claude, Dateien ohne Aufforderung zu schreiben, und genehmigt auch automatisch häufige Dateisystembefehle wie `mkdir`, `touch`, `mv` und `cp`. Andere Shell-Befehle und Netzwerkanfragen benötigen immer noch einen `--allowedTools`-Eintrag oder eine `permissions.allow`-Regel, andernfalls wird der Lauf abgebrochen, wenn einer versucht wird:

168 

169```bash theme={null}

170claude -p "Apply the lint fixes" --permission-mode acceptEdits

171```

172 

173### Einen Commit erstellen

174 

175Dieses Beispiel überprüft bereitgestellte Änderungen und erstellt einen Commit mit einer angemessenen Nachricht:

176 

177```bash theme={null}

178claude -p "Look at my staged changes and create an appropriate commit" \

179 --allowedTools "Bash(git diff *),Bash(git log *),Bash(git status *),Bash(git commit *)"

180```

181 

182Das Flag `--allowedTools` verwendet [Berechtigungsregelsyntax](/de/settings#permission-rule-syntax). Das nachfolgende ` *` ermöglicht Präfix-Matching, sodass `Bash(git diff *)` jeden Befehl erlaubt, der mit `git diff` beginnt. Das Leerzeichen vor `*` ist wichtig: ohne es würde `Bash(git diff*)` auch `git diff-index` entsprechen.

183 

184<Note>

185 Benutzer-aufgerufene [skills](/de/skills) wie `/commit` und [integrierte Befehle](/de/commands) sind nur im interaktiven Modus verfügbar. Im `-p`-Modus beschreiben Sie stattdessen die Aufgabe, die Sie ausführen möchten.

186</Note>

187 

188### System-Eingabeaufforderung anpassen

189 

190Verwenden Sie `--append-system-prompt`, um Anweisungen hinzuzufügen und dabei das Standardverhalten von Claude Code beizubehalten. Dieses Beispiel leitet einen PR-Diff an Claude weiter und weist ihn an, auf Sicherheitslücken zu überprüfen:

191 

192```bash theme={null}

193gh pr diff "$1" | claude -p \

194 --append-system-prompt "You are a security engineer. Review for vulnerabilities." \

195 --output-format json

196```

197 

198Siehe [System-Eingabeaufforderungs-Flags](/de/cli-reference#system-prompt-flags) für weitere Optionen, einschließlich `--system-prompt`, um die Standardeingabeaufforderung vollständig zu ersetzen.

199 

200### Gespräche fortsetzen

201 

202Verwenden Sie `--continue`, um das neueste Gespräch fortzusetzen, oder `--resume` mit einer Sitzungs-ID, um ein bestimmtes Gespräch fortzusetzen. Dieses Beispiel führt eine Überprüfung durch und sendet dann Folgeeingabeaufforderungen:

203 

204```bash theme={null}

205# First request

206claude -p "Review this codebase for performance issues"

207 

208# Continue the most recent conversation

209claude -p "Now focus on the database queries" --continue

210claude -p "Generate a summary of all issues found" --continue

211```

212 

213Wenn Sie mehrere Gespräche führen, erfassen Sie die Sitzungs-ID, um ein bestimmtes Gespräch fortzusetzen:

214 

215```bash theme={null}

216session_id=$(claude -p "Start a review" --output-format json | jq -r '.session_id')

217claude -p "Continue that review" --resume "$session_id"

218```

219 

220## Nächste Schritte

221 

222* [Agent SDK Schnellstart](/de/agent-sdk/quickstart): Erstellen Sie Ihren ersten Agent mit Python oder TypeScript

223* [CLI-Referenz](/de/cli-reference): alle CLI-Flags und Optionen

224* [GitHub Actions](/de/github-actions): Verwenden Sie das Agent SDK in GitHub-Workflows

225* [GitLab CI/CD](/de/gitlab-ci-cd): Verwenden Sie das Agent SDK in GitLab-Pipelines

hooks.md +2653 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Hooks-Referenz

6 

7> Referenz für Claude Code Hook-Ereignisse, Konfigurationsschema, JSON-Ein-/Ausgabeformate, Exit-Codes, asynchrone Hooks, HTTP-Hooks, Prompt-Hooks und MCP-Tool-Hooks.

8 

9<Tip>

10 Eine Schnellstartanleitung mit Beispielen finden Sie unter [Workflows mit Hooks automatisieren](/de/hooks-guide).

11</Tip>

12 

13Hooks sind benutzerdefinierte Shell-Befehle, HTTP-Endpunkte oder LLM-Prompts, die automatisch an bestimmten Punkten im Lebenszyklus von Claude Code ausgeführt werden. Verwenden Sie diese Referenz, um Ereignisschemas, Konfigurationsoptionen, JSON-Ein-/Ausgabeformate und erweiterte Funktionen wie asynchrone Hooks, HTTP-Hooks und MCP-Tool-Hooks nachzuschlagen. Wenn Sie Hooks zum ersten Mal einrichten, beginnen Sie stattdessen mit der [Anleitung](/de/hooks-guide).

14 

15## Hook-Lebenszyklus

16 

17Hooks werden an bestimmten Punkten während einer Claude Code-Sitzung ausgelöst. Wenn ein Ereignis ausgelöst wird und ein Matcher passt, übergibt Claude Code JSON-Kontext über das Ereignis an Ihren Hook-Handler. Für Command-Hooks kommt die Eingabe über stdin an. Für HTTP-Hooks kommt sie als POST-Request-Body an. Ihr Handler kann dann die Eingabe überprüfen, Maßnahmen ergreifen und optional eine Entscheidung zurückgeben. Ereignisse fallen in drei Rhythmen: einmal pro Sitzung (`SessionStart`, `SessionEnd`), einmal pro Runde (`UserPromptSubmit`, `Stop`, `StopFailure`) und bei jedem Tool-Aufruf innerhalb der agentengesteuerten Schleife (`PreToolUse`, `PostToolUse`):

18 

19<div style={{maxWidth: "500px", margin: "0 auto"}}>

20 <Frame>

21 <img src="https://mintcdn.com/claude-code/ZIW26Z9pnpsXLhbS/images/hooks-lifecycle.svg?fit=max&auto=format&n=ZIW26Z9pnpsXLhbS&q=85&s=ee23691324deb6501df09bfdae560b64" alt="Hook-Lebenszyklus-Diagramm, das optionales Setup zeigt, das in SessionStart führt, dann eine Pro-Runde-Schleife mit UserPromptSubmit, UserPromptExpansion für Slash-Befehle, die verschachtelte agentengesteuerte Schleife (PreToolUse, PermissionRequest, PostToolUse, PostToolUseFailure, PostToolBatch, SubagentStart/Stop, TaskCreated, TaskCompleted) und Stop oder StopFailure, gefolgt von TeammateIdle, PreCompact, PostCompact und SessionEnd, mit Elicitation und ElicitationResult verschachtelt in MCP-Tool-Ausführung, PermissionDenied als Seitenzweig von PermissionRequest für Auto-Mode-Ablehnungen und WorktreeCreate, WorktreeRemove, Notification, ConfigChange, InstructionsLoaded, CwdChanged und FileChanged als eigenständige asynchrone Ereignisse" width="520" height="1228" data-path="images/hooks-lifecycle.svg" />

22 </Frame>

23</div>

24 

25Die folgende Tabelle fasst zusammen, wann jedes Ereignis ausgelöst wird. Der Abschnitt [Hook-Ereignisse](#hook-events) dokumentiert das vollständige Eingabeschema und die Optionen zur Entscheidungskontrolle für jedes Ereignis.

26 

27| Event | When it fires |

28| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |

29| `SessionStart` | When a session begins or resumes |

30| `Setup` | When you start Claude Code with `--init-only`, or with `--init` or `--maintenance` in `-p` mode. For one-time preparation in CI or scripts |

31| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |

32| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |

33| `PreToolUse` | Before a tool call executes. Can block it |

34| `PermissionRequest` | When a permission dialog appears |

35| `PermissionDenied` | When a tool call is denied by the auto mode classifier. Return `{retry: true}` to tell the model it may retry the denied tool call |

36| `PostToolUse` | After a tool call succeeds |

37| `PostToolUseFailure` | After a tool call fails |

38| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |

39| `Notification` | When Claude Code sends a notification |

40| `SubagentStart` | When a subagent is spawned |

41| `SubagentStop` | When a subagent finishes |

42| `TaskCreated` | When a task is being created via `TaskCreate` |

43| `TaskCompleted` | When a task is being marked as completed |

44| `Stop` | When Claude finishes responding |

45| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |

46| `TeammateIdle` | When an [agent team](/en/agent-teams) teammate is about to go idle |

47| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |

48| `ConfigChange` | When a configuration file changes during a session |

49| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |

50| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |

51| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |

52| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |

53| `PreCompact` | Before context compaction |

54| `PostCompact` | After context compaction completes |

55| `Elicitation` | When an MCP server requests user input during a tool call |

56| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |

57| `SessionEnd` | When a session terminates |

58 

59### Wie ein Hook aufgelöst wird

60 

61Um zu sehen, wie diese Teile zusammenpassen, betrachten Sie diesen `PreToolUse`-Hook, der destruktive Shell-Befehle blockiert. Der `matcher` grenzt auf Bash-Tool-Aufrufe ein und die `if`-Bedingung grenzt weiter auf Bash-Unterbefehle ein, die mit `rm *` übereinstimmen, daher wird `block-rm.sh` nur ausgeführt, wenn beide Filter passen:

62 

63```json theme={null}

64{

65 "hooks": {

66 "PreToolUse": [

67 {

68 "matcher": "Bash",

69 "hooks": [

70 {

71 "type": "command",

72 "if": "Bash(rm *)",

73 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-rm.sh"

74 }

75 ]

76 }

77 ]

78 }

79}

80```

81 

82Das Skript liest die JSON-Eingabe von stdin, extrahiert den Befehl und gibt eine `permissionDecision` von `"deny"` zurück, wenn es `rm -rf` enthält:

83 

84```bash theme={null}

85#!/bin/bash

86# .claude/hooks/block-rm.sh

87COMMAND=$(jq -r '.tool_input.command')

88 

89if echo "$COMMAND" | grep -q 'rm -rf'; then

90 jq -n '{

91 hookSpecificOutput: {

92 hookEventName: "PreToolUse",

93 permissionDecision: "deny",

94 permissionDecisionReason: "Destructive command blocked by hook"

95 }

96 }'

97else

98 exit 0 # allow the command

99fi

100```

101 

102Angenommen, Claude Code entscheidet sich, `Bash "rm -rf /tmp/build"` auszuführen. Hier ist, was passiert:

103 

104<Frame>

105 <img src="https://mintcdn.com/claude-code/-tYw1BD_DEqfyyOZ/images/hook-resolution.svg?fit=max&auto=format&n=-tYw1BD_DEqfyyOZ&q=85&s=c73ebc1eeda2037570427d7af1e0a891" alt="Hook-Auflösungsfluss: PreToolUse-Ereignis wird ausgelöst, Matcher prüft auf Bash-Übereinstimmung, if-Bedingung prüft auf Bash(rm *)-Übereinstimmung, Hook-Handler wird ausgeführt, Ergebnis wird an Claude Code zurückgegeben" width="930" height="290" data-path="images/hook-resolution.svg" />

106</Frame>

107 

108<Steps>

109 <Step title="Ereignis wird ausgelöst">

110 Das `PreToolUse`-Ereignis wird ausgelöst. Claude Code sendet die Tool-Eingabe als JSON über stdin an den Hook:

111 

112 ```json theme={null}

113 { "tool_name": "Bash", "tool_input": { "command": "rm -rf /tmp/build" }, ... }

114 ```

115 </Step>

116 

117 <Step title="Matcher prüft">

118 Der Matcher `"Bash"` passt zum Tool-Namen, daher wird diese Hook-Gruppe aktiviert. Wenn Sie den Matcher weglassen oder `"*"` verwenden, wird die Gruppe bei jedem Auftreten des Ereignisses aktiviert.

119 </Step>

120 

121 <Step title="If-Bedingung prüft">

122 Die `if`-Bedingung `"Bash(rm *)"` passt, weil `rm -rf /tmp/build` ein Unterbefehl ist, der mit `rm *` übereinstimmt, daher wird dieser Handler ausgeführt. Wenn der Befehl `npm test` gewesen wäre, würde die `if`-Prüfung fehlschlagen und `block-rm.sh` würde nie ausgeführt, wodurch der Prozess-Spawn-Overhead vermieden wird. Das Feld `if` ist optional; ohne es wird jeder Handler in der passenden Gruppe ausgeführt.

123 </Step>

124 

125 <Step title="Hook-Handler wird ausgeführt">

126 Das Skript überprüft den vollständigen Befehl und findet `rm -rf`, daher gibt es eine Entscheidung auf stdout aus:

127 

128 ```json theme={null}

129 {

130 "hookSpecificOutput": {

131 "hookEventName": "PreToolUse",

132 "permissionDecision": "deny",

133 "permissionDecisionReason": "Destructive command blocked by hook"

134 }

135 }

136 ```

137 

138 Wenn der Befehl eine sicherere `rm`-Variante gewesen wäre, wie `rm file.txt`, würde das Skript stattdessen `exit 0` treffen, was Claude Code mitteilt, den Tool-Aufruf zuzulassen, ohne weitere Maßnahmen zu ergreifen.

139 </Step>

140 

141 <Step title="Claude Code handelt nach dem Ergebnis">

142 Claude Code liest die JSON-Entscheidung, blockiert den Tool-Aufruf und zeigt Claude den Grund an.

143 </Step>

144</Steps>

145 

146Der Abschnitt [Konfiguration](#configuration) unten dokumentiert das vollständige Schema, und jeder Abschnitt [Hook-Ereignis](#hook-events) dokumentiert, welche Eingabe Ihr Befehl erhält und welche Ausgabe er zurückgeben kann.

147 

148## Konfiguration

149 

150Hooks werden in JSON-Einstellungsdateien definiert. Die Konfiguration hat drei Verschachtelungsebenen:

151 

1521. Wählen Sie ein [Hook-Ereignis](#hook-events) aus, auf das Sie reagieren möchten, wie `PreToolUse` oder `Stop`

1532. Fügen Sie eine [Matcher-Gruppe](#matcher-patterns) hinzu, um zu filtern, wann es ausgelöst wird, wie 'nur für das Bash-Tool"

1543. Definieren Sie einen oder mehrere [Hook-Handler](#hook-handler-fields), die ausgeführt werden, wenn sie passen

155 

156Siehe [Wie ein Hook aufgelöst wird](#how-a-hook-resolves) oben für eine vollständige Anleitung mit einem kommentierten Beispiel.

157 

158<Note>

159 Diese Seite verwendet spezifische Begriffe für jede Ebene: **Hook-Ereignis** für den Lebenszyklus-Punkt, **Matcher-Gruppe** für den Filter und **Hook-Handler** für den Shell-Befehl, HTTP-Endpunkt, MCP-Tool, Prompt oder Agent, der ausgeführt wird. „Hook" allein bezieht sich auf die allgemeine Funktion.

160</Note>

161 

162### Hook-Speicherorte

163 

164Der Ort, an dem Sie einen Hook definieren, bestimmt seinen Umfang:

165 

166| Speicherort | Umfang | Freigegeben |

167| :----------------------------------------------------------- | :------------------------------- | :------------------------------------ |

168| `~/.claude/settings.json` | Alle Ihre Projekte | Nein, lokal auf Ihrem Computer |

169| `.claude/settings.json` | Einzelnes Projekt | Ja, kann im Repo committed werden |

170| `.claude/settings.local.json` | Einzelnes Projekt | Nein, gitignored |

171| Verwaltete Richtlinieneinstellungen | Organisationsweit | Ja, von Admin kontrolliert |

172| [Plugin](/de/plugins) `hooks/hooks.json` | Wenn Plugin aktiviert ist | Ja, mit dem Plugin gebündelt |

173| [Skill](/de/skills) oder [Agent](/de/sub-agents) Frontmatter | Während die Komponente aktiv ist | Ja, in der Komponentendatei definiert |

174 

175Weitere Informationen zur Auflösung von Einstellungsdateien finden Sie unter [Einstellungen](/de/settings). Enterprise-Administratoren können `allowManagedHooksOnly` verwenden, um Benutzer-, Projekt- und Plugin-Hooks zu blockieren. Hooks von Plugins, die in verwalteten Einstellungen `enabledPlugins` erzwungen aktiviert sind, sind ausgenommen, daher können Administratoren überprüfte Hooks über einen Organisations-Marketplace verteilen. Siehe [Hook-Konfiguration](/de/settings#hook-configuration).

176 

177### Matcher-Muster

178 

179Das Feld `matcher` filtert, wann Hooks ausgelöst werden. Wie ein Matcher evaluiert wird, hängt von den Zeichen ab, die er enthält:

180 

181| Matcher-Wert | Evaluiert als | Beispiel |

182| :------------------------------------ | :---------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------- |

183| `"*"`, `""` oder weggelassen | Alle treffen | wird bei jedem Auftreten des Ereignisses ausgelöst |

184| Nur Buchstaben, Ziffern, `_` und `\|` | Exakte Zeichenkette oder `\|`-getrennte Liste von exakten Zeichenketten | `Bash` passt nur zum Bash-Tool; `Edit\|Write` passt zu beiden Tools genau |

185| Enthält ein anderes Zeichen | JavaScript-Regex | `^Notebook` passt zu jedem Tool, das mit Notebook beginnt; `mcp__memory__.*` passt zu jedem Tool vom `memory`-Server |

186 

187Das Ereignis `FileChanged` folgt diesen Regeln nicht, wenn es seine Überwachungsliste erstellt. Siehe [FileChanged](#filechanged).

188 

189Jeder Ereignistyp passt auf ein anderes Feld:

190 

191| Ereignis | Worauf der Matcher filtert | Beispiel-Matcher-Werte |

192| :------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------- |

193| `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied` | Tool-Name | `Bash`, `Edit\|Write`, `mcp__.*` |

194| `SessionStart` | Wie die Sitzung gestartet wurde | `startup`, `resume`, `clear`, `compact` |

195| `Setup` | Welches CLI-Flag das Setup ausgelöst hat | `init`, `maintenance` |

196| `SessionEnd` | Warum die Sitzung endete | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |

197| `Notification` | Benachrichtigungstyp | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response` |

198| `SubagentStart` | Agent-Typ | `general-purpose`, `Explore`, `Plan` oder benutzerdefinierte Agent-Namen |

199| `PreCompact`, `PostCompact` | Was die Komprimierung ausgelöst hat | `manual`, `auto` |

200| `SubagentStop` | Agent-Typ | gleiche Werte wie `SubagentStart` |

201| `ConfigChange` | Konfigurationsquelle | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |

202| `CwdChanged` | Keine Matcher-Unterstützung | wird immer bei jedem Verzeichniswechsel ausgelöst |

203| `FileChanged` | Dateinamen zum Überwachen (siehe [FileChanged](#filechanged)) | `.envrc\|.env` |

204| `StopFailure` | Fehlertyp | `rate_limit`, `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `invalid_request`, `server_error`, `max_output_tokens`, `unknown` |

205| `InstructionsLoaded` | Ladegrund | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |

206| `UserPromptExpansion` | Befehlsname | Ihre Skill- oder Befehlsnamen |

207| `Elicitation` | MCP-Server-Name | Ihre konfigurierten MCP-Server-Namen |

208| `ElicitationResult` | MCP-Server-Name | gleiche Werte wie `Elicitation` |

209| `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove` | Keine Matcher-Unterstützung | wird immer bei jedem Auftreten ausgelöst |

210 

211Der Matcher wird gegen ein Feld aus der [JSON-Eingabe](#hook-input-and-output) ausgeführt, die Claude Code an Ihren Hook über stdin sendet. Für Tool-Ereignisse ist dieses Feld `tool_name`. Jeder Abschnitt [Hook-Ereignis](#hook-events) listet den vollständigen Satz von Matcher-Werten und das Eingabeschema für dieses Ereignis auf.

212 

213Dieses Beispiel führt ein Linting-Skript nur aus, wenn Claude eine Datei schreibt oder bearbeitet:

214 

215```json theme={null}

216{

217 "hooks": {

218 "PostToolUse": [

219 {

220 "matcher": "Edit|Write",

221 "hooks": [

222 {

223 "type": "command",

224 "command": "/path/to/lint-check.sh"

225 }

226 ]

227 }

228 ]

229 }

230}

231```

232 

233`UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove` und `CwdChanged` unterstützen keine Matcher und werden immer bei jedem Auftreten ausgelöst. Wenn Sie ein `matcher`-Feld zu diesen Ereignissen hinzufügen, wird es stillschweigend ignoriert.

234 

235Für Tool-Ereignisse können Sie enger filtern, indem Sie das Feld [`if`](#common-fields) auf einzelnen Hook-Handlern setzen. `if` verwendet [Berechtigungsregel-Syntax](/de/permissions), um gegen den Tool-Namen und die Argumente zusammen zu passen, daher wird `"Bash(git *)"` ausgeführt, wenn ein Bash-Befehl mit `git *` übereinstimmt und `"Edit(*.ts)"` wird nur für TypeScript-Dateien ausgeführt.

236 

237#### MCP-Tools abgleichen

238 

239[MCP](/de/mcp) Server-Tools erscheinen als reguläre Tools in Tool-Ereignissen (`PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied`), daher können Sie sie auf die gleiche Weise abgleichen wie jeden anderen Tool-Namen.

240 

241MCP-Tools folgen dem Benennungsmuster `mcp__<server>__<tool>`, zum Beispiel:

242 

243* `mcp__memory__create_entities`: Memory-Server-Tool zum Erstellen von Entitäten

244* `mcp__filesystem__read_file`: Filesystem-Server-Tool zum Lesen von Dateien

245* `mcp__github__search_repositories`: GitHub-Server-Suchtool

246 

247Um jedes Tool von einem Server zu treffen, fügen Sie `.*` zum Server-Präfix hinzu. Das `.*` ist erforderlich: Ein Matcher wie `mcp__memory` enthält nur Buchstaben und Unterstriche, daher wird er als exakte Zeichenkette verglichen und passt zu keinem Tool.

248 

249* `mcp__memory__.*` passt zu allen Tools vom `memory`-Server

250* `mcp__.*__write.*` passt zu jedem Tool, dessen Name mit `write` beginnt, von jedem Server

251 

252Dieses Beispiel protokolliert alle Memory-Server-Operationen und validiert Schreibvorgänge von jedem MCP-Server:

253 

254```json theme={null}

255{

256 "hooks": {

257 "PreToolUse": [

258 {

259 "matcher": "mcp__memory__.*",

260 "hooks": [

261 {

262 "type": "command",

263 "command": "echo 'Memory operation initiated' >> ~/mcp-operations.log"

264 }

265 ]

266 },

267 {

268 "matcher": "mcp__.*__write.*",

269 "hooks": [

270 {

271 "type": "command",

272 "command": "/home/user/scripts/validate-mcp-write.py"

273 }

274 ]

275 }

276 ]

277 }

278}

279```

280 

281### Hook-Handler-Felder

282 

283Jedes Objekt im inneren `hooks`-Array ist ein Hook-Handler: der Shell-Befehl, HTTP-Endpunkt, MCP-Tool, LLM-Prompt oder Agent, der ausgeführt wird, wenn der Matcher passt. Es gibt fünf Typen:

284 

285* **[Command-Hooks](#command-hook-fields)** (`type: "command"`): führen einen Shell-Befehl aus. Ihr Skript erhält die [JSON-Eingabe](#hook-input-and-output) des Ereignisses über stdin und kommuniziert Ergebnisse über Exit-Codes und stdout zurück.

286* **[HTTP-Hooks](#http-hook-fields)** (`type: "http"`): senden die [JSON-Eingabe](#hook-input-and-output) des Ereignisses als HTTP-POST-Request an eine URL. Der Endpunkt kommuniziert Ergebnisse über den Response-Body mit dem gleichen [JSON-Ausgabeformat](#json-output) wie Command-Hooks zurück.

287* **[MCP-Tool-Hooks](#mcp-tool-hook-fields)** (`type: "mcp_tool"`): rufen ein Tool auf einem bereits verbundenen [MCP-Server](/de/mcp) auf. Die Textausgabe des Tools wird wie Command-Hook-stdout behandelt.

288* **[Prompt-Hooks](#prompt-and-agent-hook-fields)** (`type: "prompt"`): senden einen Prompt an ein Claude-Modell für eine Single-Turn-Evaluierung. Das Modell gibt eine Ja/Nein-Entscheidung als JSON zurück. Siehe [Prompt-basierte Hooks](#prompt-based-hooks).

289* **[Agent-Hooks](#prompt-and-agent-hook-fields)** (`type: "agent"`): spawnen einen Subagenten, der Tools wie Read, Grep und Glob verwenden kann, um Bedingungen zu überprüfen, bevor eine Entscheidung zurückgegeben wird. Agent-Hooks sind experimentell und können sich ändern. Siehe [Agent-basierte Hooks](#agent-based-hooks).

290 

291#### Gemeinsame Felder

292 

293Diese Felder gelten für alle Hook-Typen:

294 

295| Feld | Erforderlich | Beschreibung |

296| :-------------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

297| `type` | ja | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"` oder `"agent"` |

298| `if` | nein | Berechtigungsregel-Syntax zum Filtern, wann dieser Hook ausgeführt wird, wie `"Bash(git *)"` oder `"Edit(*.ts)"`. Der Hook wird nur ausgeführt, wenn der Tool-Aufruf dem Muster entspricht, oder wenn ein Bash-Befehl zu komplex zum Analysieren ist. Wird nur auf Tool-Ereignisse evaluiert: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` und `PermissionDenied`. Bei anderen Ereignissen wird ein Hook mit `if` gesetzt nie ausgeführt. Verwendet die gleiche Syntax wie [Berechtigungsregeln](/de/permissions) |

299| `timeout` | nein | Sekunden vor dem Abbruch. Standardwerte: 600 für Command, 30 für Prompt, 60 für Agent |

300| `statusMessage` | nein | Benutzerdefinierte Spinner-Nachricht, die angezeigt wird, während der Hook ausgeführt wird |

301| `once` | nein | Wenn `true`, wird nur einmal pro Sitzung ausgeführt und dann entfernt. Nur für Hooks, die in [Skill-Frontmatter](#hooks-in-skills-and-agents) deklariert sind; wird in Einstellungsdateien und Agent-Frontmatter ignoriert |

302 

303Das Feld `if` enthält genau eine Berechtigungsregel. Es gibt keine `&&`-, `||`- oder List-Syntax zum Kombinieren von Regeln; um mehrere Bedingungen anzuwenden, definieren Sie einen separaten Hook-Handler für jeden. Für Bash wird die Regel gegen jeden Subbefehl der Tool-Eingabe abgeglichen, nachdem führende `VAR=value`-Zuweisungen entfernt wurden, daher passt `if: "Bash(git push *)"` sowohl zu `FOO=bar git push` als auch zu `npm test && git push`. Der Hook wird ausgeführt, wenn ein Subbefehl passt, und wird immer ausgeführt, wenn der Befehl zu komplex zum Analysieren ist.

304 

305#### Command-Hook-Felder

306 

307Zusätzlich zu den [gemeinsamen Feldern](#common-fields) akzeptieren Command-Hooks diese Felder:

308 

309| Feld | Erforderlich | Beschreibung |

310| :------------ | :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

311| `command` | ja | Shell-Befehl zum Ausführen |

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

313| `asyncRewake` | nein | Wenn `true`, wird im Hintergrund ausgeführt und weckt Claude bei Exit-Code 2 auf. Impliziert `async`. Der stderr des Hooks oder stdout, wenn stderr leer ist, wird Claude als Systemerinnerung angezeigt, damit es auf einen lang laufenden Hintergrund-Fehler reagieren kann |

314| `shell` | nein | Shell zum Verwenden für diesen Hook. Akzeptiert `"bash"` (Standard) oder `"powershell"`. Das Setzen von `"powershell"` führt den Befehl über PowerShell unter Windows aus. Erfordert nicht `CLAUDE_CODE_USE_POWERSHELL_TOOL`, da Hooks PowerShell direkt spawnen |

315 

316#### HTTP-Hook-Felder

317 

318Zusätzlich zu den [gemeinsamen Feldern](#common-fields) akzeptieren HTTP-Hooks diese Felder:

319 

320| Feld | Erforderlich | Beschreibung |

321| :--------------- | :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

322| `url` | ja | URL, an die der POST-Request gesendet werden soll |

323| `headers` | nein | Zusätzliche HTTP-Header als Schlüssel-Wert-Paare. Werte unterstützen Umgebungsvariablen-Interpolation mit `$VAR_NAME` oder `${VAR_NAME}` Syntax. Nur Variablen, die in `allowedEnvVars` aufgelistet sind, werden aufgelöst |

324| `allowedEnvVars` | nein | Liste von Umgebungsvariablennamen, die in Header-Werte interpoliert werden dürfen. Verweise auf nicht aufgelistete Variablen werden durch leere Zeichenketten ersetzt. Erforderlich für jede Umgebungsvariablen-Interpolation |

325 

326Claude Code sendet die [JSON-Eingabe](#hook-input-and-output) des Hooks als POST-Request-Body mit `Content-Type: application/json`. Der Response-Body verwendet das gleiche [JSON-Ausgabeformat](#json-output) wie Command-Hooks.

327 

328Die Fehlerbehandlung unterscheidet sich von Command-Hooks: Nicht-2xx-Antworten, Verbindungsfehler und Timeouts führen alle zu nicht-blockierenden Fehlern, die die Ausführung fortsetzen lassen. Um einen Tool-Aufruf zu blockieren oder eine Berechtigung zu verweigern, geben Sie eine 2xx-Antwort mit einem JSON-Body zurück, der `decision: "block"` oder ein `hookSpecificOutput` mit `permissionDecision: "deny"` enthält.

329 

330Dieses Beispiel sendet `PreToolUse`-Ereignisse an einen lokalen Validierungsdienst und authentifiziert sich mit einem Token aus der `MY_TOKEN`-Umgebungsvariable:

331 

332```json theme={null}

333{

334 "hooks": {

335 "PreToolUse": [

336 {

337 "matcher": "Bash",

338 "hooks": [

339 {

340 "type": "http",

341 "url": "http://localhost:8080/hooks/pre-tool-use",

342 "timeout": 30,

343 "headers": {

344 "Authorization": "Bearer $MY_TOKEN"

345 },

346 "allowedEnvVars": ["MY_TOKEN"]

347 }

348 ]

349 }

350 ]

351 }

352}

353```

354 

355#### MCP-Tool-Hook-Felder

356 

357Zusätzlich zu den [gemeinsamen Feldern](#common-fields) akzeptieren MCP-Tool-Hooks diese Felder:

358 

359| Feld | Erforderlich | Beschreibung |

360| :------- | :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

361| `server` | ja | Name eines konfigurierten MCP-Servers. Der Server muss bereits verbunden sein; der Hook löst niemals einen OAuth- oder Verbindungsfluss aus |

362| `tool` | ja | Name des Tools, das auf diesem Server aufgerufen werden soll |

363| `input` | nein | Argumente, die an das Tool übergeben werden. String-Werte unterstützen `${path}`-Substitution aus der [JSON-Eingabe](#hook-input-and-output) des Hooks, wie `"${tool_input.file_path}"` |

364 

365Die Textausgabe des Tools wird wie Command-Hook-stdout behandelt: Wenn sie als gültige [JSON-Ausgabe](#json-output) geparst wird, wird sie als Entscheidung verarbeitet, andernfalls wird sie als Klartext angezeigt. Wenn der benannte Server nicht verbunden ist oder das Tool `isError: true` zurückgibt, erzeugt der Hook einen nicht-blockierenden Fehler und die Ausführung wird fortgesetzt.

366 

367MCP-Tool-Hooks sind auf jedem Hook-Ereignis verfügbar, sobald Claude Code sich mit Ihren MCP-Servern verbunden hat. `SessionStart` und `Setup` werden normalerweise ausgelöst, bevor Server die Verbindung beenden, daher sollten Hooks auf diesen Ereignissen beim ersten Ausführen den Fehler „nicht verbunden" erwarten.

368 

369Dieses Beispiel ruft das Tool `security_scan` auf dem MCP-Server `my_server` nach jedem `Write` oder `Edit` auf und übergibt den Pfad der bearbeiteten Datei:

370 

371```json theme={null}

372{

373 "hooks": {

374 "PostToolUse": [

375 {

376 "matcher": "Write|Edit",

377 "hooks": [

378 {

379 "type": "mcp_tool",

380 "server": "my_server",

381 "tool": "security_scan",

382 "input": { "file_path": "${tool_input.file_path}" }

383 }

384 ]

385 }

386 ]

387 }

388}

389```

390 

391#### Prompt- und Agent-Hook-Felder

392 

393Zusätzlich zu den [gemeinsamen Feldern](#common-fields) akzeptieren Prompt- und Agent-Hooks diese Felder:

394 

395| Feld | Erforderlich | Beschreibung |

396| :------- | :----------- | :--------------------------------------------------------------------------------------------------------- |

397| `prompt` | ja | Prompt-Text zum Senden an das Modell. Verwenden Sie `$ARGUMENTS` als Platzhalter für die Hook-Eingabe JSON |

398| `model` | nein | Modell zur Verwendung für die Evaluierung. Standardwert ist ein schnelles Modell |

399 

400Alle passenden Hooks werden parallel ausgeführt, und identische Handler werden automatisch dedupliziert. Command-Hooks werden nach Befehlszeichenkette dedupliziert, und HTTP-Hooks werden nach URL dedupliziert. Handler werden im aktuellen Verzeichnis mit der Umgebung von Claude Code ausgeführt. Die Umgebungsvariable `$CLAUDE_CODE_REMOTE` wird in Remote-Web-Umgebungen auf `"true"` gesetzt und ist in der lokalen CLI nicht gesetzt.

401 

402### Hooks nach Pfad referenzieren

403 

404Verwenden Sie Umgebungsvariablen, um Hook-Skripte relativ zum Projekt- oder Plugin-Root zu referenzieren, unabhängig vom Arbeitsverzeichnis, wenn der Hook ausgeführt wird:

405 

406* `$CLAUDE_PROJECT_DIR`: das Projekt-Root. In Anführungszeichen setzen, um Pfade mit Leerzeichen zu handhaben.

407* `${CLAUDE_PLUGIN_ROOT}`: das Root-Verzeichnis des Plugins, für Skripte, die mit einem [Plugin](/de/plugins) gebündelt sind. Ändert sich bei jedem Plugin-Update.

408* `${CLAUDE_PLUGIN_DATA}`: das [persistente Datenverzeichnis](/de/plugins-reference#persistent-data-directory) des Plugins, für Abhängigkeiten und Zustand, die Plugin-Updates überstehen sollten.

409 

410<Tabs>

411 <Tab title="Projekt-Skripte">

412 Dieses Beispiel verwendet `$CLAUDE_PROJECT_DIR`, um einen Style-Checker aus dem `.claude/hooks/`-Verzeichnis des Projekts nach jedem `Write`- oder `Edit`-Tool-Aufruf auszuführen:

413 

414 ```json theme={null}

415 {

416 "hooks": {

417 "PostToolUse": [

418 {

419 "matcher": "Write|Edit",

420 "hooks": [

421 {

422 "type": "command",

423 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/check-style.sh"

424 }

425 ]

426 }

427 ]

428 }

429 }

430 ```

431 </Tab>

432 

433 <Tab title="Plugin-Skripte">

434 Definieren Sie Plugin-Hooks in `hooks/hooks.json` mit einem optionalen Top-Level-Feld `description`. Wenn ein Plugin aktiviert ist, werden seine Hooks mit Ihren Benutzer- und Projekt-Hooks zusammengeführt.

435 

436 Dieses Beispiel führt ein Formatierungsskript aus, das mit dem Plugin gebündelt ist:

437 

438 ```json theme={null}

439 {

440 "description": "Automatic code formatting",

441 "hooks": {

442 "PostToolUse": [

443 {

444 "matcher": "Write|Edit",

445 "hooks": [

446 {

447 "type": "command",

448 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/format.sh",

449 "timeout": 30

450 }

451 ]

452 }

453 ]

454 }

455 }

456 ```

457 

458 Siehe die [Plugin-Komponenten-Referenz](/de/plugins-reference#hooks) für Details zum Erstellen von Plugin-Hooks.

459 </Tab>

460</Tabs>

461 

462### Hooks in Skills und Agents

463 

464Zusätzlich zu Einstellungsdateien und Plugins können Hooks direkt in [Skills](/de/skills) und [Subagenten](/de/sub-agents) mit Frontmatter definiert werden. Diese Hooks sind auf den Lebenszyklus der Komponente beschränkt und werden nur ausgeführt, wenn diese Komponente aktiv ist.

465 

466Alle Hook-Ereignisse werden unterstützt. Für Subagenten werden `Stop`-Hooks automatisch in `SubagentStop` konvertiert, da dies das Ereignis ist, das ausgelöst wird, wenn ein Subagent fertig ist.

467 

468Hooks verwenden das gleiche Konfigurationsformat wie einstellungsbasierte Hooks, sind aber auf die Lebensdauer der Komponente beschränkt und werden bereinigt, wenn sie fertig ist.

469 

470Dieser Skill definiert einen `PreToolUse`-Hook, der ein Sicherheitsvalidierungsskript vor jedem `Bash`-Befehl ausführt:

471 

472```yaml theme={null}

473---

474name: secure-operations

475description: Perform operations with security checks

476hooks:

477 PreToolUse:

478 - matcher: "Bash"

479 hooks:

480 - type: command

481 command: "./scripts/security-check.sh"

482---

483```

484 

485Agents verwenden das gleiche Format in ihrem YAML-Frontmatter.

486 

487### Das Menü `/hooks`

488 

489Geben Sie `/hooks` in Claude Code ein, um einen schreibgeschützten Browser für Ihre konfigurierten Hooks zu öffnen. Das Menü zeigt jedes Hook-Ereignis mit einer Anzahl konfigurierter Hooks, ermöglicht es Ihnen, in Matcher zu bohren, und zeigt die vollständigen Details jedes Hook-Handlers. Verwenden Sie es, um die Konfiguration zu überprüfen, zu prüfen, aus welcher Einstellungsdatei ein Hook stammt, oder einen Hook-Befehl, Prompt oder URL zu überprüfen.

490 

491Das Menü zeigt alle fünf Hook-Typen an: `command`, `prompt`, `agent`, `http` und `mcp_tool`. Jeder Hook ist mit einem `[type]`-Präfix und einer Quelle gekennzeichnet, die angibt, wo er definiert wurde:

492 

493* `User`: aus `~/.claude/settings.json`

494* `Project`: aus `.claude/settings.json`

495* `Local`: aus `.claude/settings.local.json`

496* `Plugin`: aus `hooks/hooks.json` eines Plugins

497* `Session`: in Speicher für die aktuelle Sitzung registriert

498* `Built-in`: intern von Claude Code registriert

499 

500Wenn Sie einen Hook auswählen, wird eine Detailansicht geöffnet, die sein Ereignis, Matcher, Typ, Quelldatei und den vollständigen Befehl, Prompt oder URL zeigt. Das Menü ist schreibgeschützt: Um Hooks hinzuzufügen, zu ändern oder zu entfernen, bearbeiten Sie die Einstellungs-JSON direkt oder bitten Sie Claude, die Änderung vorzunehmen.

501 

502### Hooks deaktivieren oder entfernen

503 

504Um einen Hook zu entfernen, löschen Sie seinen Eintrag aus der Einstellungs-JSON-Datei.

505 

506Um alle Hooks vorübergehend zu deaktivieren, ohne sie zu entfernen, setzen Sie `"disableAllHooks": true` in Ihrer Einstellungsdatei. Es gibt keine Möglichkeit, einen einzelnen Hook zu deaktivieren, während er in der Konfiguration bleibt.

507 

508Die Einstellung `disableAllHooks` respektiert die Hierarchie der verwalteten Einstellungen. Wenn ein Administrator Hooks durch verwaltete Richtlinieneinstellungen konfiguriert hat, kann `disableAllHooks`, das in Benutzer-, Projekt- oder lokalen Einstellungen gesetzt ist, diese verwalteten Hooks nicht deaktivieren. Nur `disableAllHooks`, das auf der Ebene der verwalteten Einstellungen gesetzt ist, kann verwaltete Hooks deaktivieren.

509 

510Direkte Bearbeitungen von Hooks in Einstellungsdateien werden normalerweise automatisch vom Datei-Watcher aufgegriffen.

511 

512## Hook-Eingabe und -Ausgabe

513 

514Command-Hooks erhalten JSON-Daten über stdin und kommunizieren Ergebnisse über Exit-Codes, stdout und stderr. HTTP-Hooks erhalten die gleiche JSON als POST-Request-Body und kommunizieren Ergebnisse über den HTTP-Response-Body. Dieser Abschnitt behandelt Felder und Verhalten, die allen Ereignissen gemeinsam sind. Jeder Abschnitt eines Ereignisses unter [Hook-Ereignisse](#hook-events) enthält sein spezifisches Eingabeschema und Optionen zur Entscheidungskontrolle.

515 

516### Gemeinsame Eingabefelder

517 

518Hook-Ereignisse erhalten diese Felder als JSON, zusätzlich zu ereignisspezifischen Feldern, die in jedem Abschnitt [Hook-Ereignis](#hook-events) dokumentiert sind. Für Command-Hooks kommt diese JSON über stdin an. Für HTTP-Hooks kommt sie als POST-Request-Body an.

519 

520| Feld | Beschreibung |

521| :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

522| `session_id` | Aktuelle Sitzungs-ID |

523| `transcript_path` | Pfad zur Gesprächs-JSON |

524| `cwd` | Aktuelles Arbeitsverzeichnis, wenn der Hook aufgerufen wird |

525| `permission_mode` | Aktueller [Berechtigungsmodus](/de/permissions#permission-modes): `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"` oder `"bypassPermissions"`. Nicht alle Ereignisse erhalten dieses Feld: siehe jedes Ereignis-JSON-Beispiel unten, um zu prüfen |

526| `hook_event_name` | Name des ausgelösten Ereignisses |

527 

528Wenn mit `--agent` oder innerhalb eines Subagenten ausgeführt, sind zwei zusätzliche Felder enthalten:

529 

530| Feld | Beschreibung |

531| :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

532| `agent_id` | Eindeutige Kennung für den Subagenten. Nur vorhanden, wenn der Hook innerhalb eines Subagenten-Aufrufs ausgelöst wird. Verwenden Sie dies, um Subagenten-Hook-Aufrufe von Main-Thread-Aufrufen zu unterscheiden. |

533| `agent_type` | Agent-Name (zum Beispiel `"Explore"` oder `"security-reviewer"`). Vorhanden, wenn die Sitzung `--agent` verwendet oder der Hook innerhalb eines Subagenten ausgelöst wird. Für Subagenten hat der Typ des Subagenten Vorrang vor dem `--agent`-Wert der Sitzung. |

534 

535Zum Beispiel erhält ein `PreToolUse`-Hook für einen Bash-Befehl dies über stdin:

536 

537```json theme={null}

538{

539 "session_id": "abc123",

540 "transcript_path": "/home/user/.claude/projects/.../transcript.jsonl",

541 "cwd": "/home/user/my-project",

542 "permission_mode": "default",

543 "hook_event_name": "PreToolUse",

544 "tool_name": "Bash",

545 "tool_input": {

546 "command": "npm test"

547 }

548}

549```

550 

551Die Felder `tool_name` und `tool_input` sind ereignisspezifisch. Jeder Abschnitt [Hook-Ereignis](#hook-events) dokumentiert die zusätzlichen Felder für dieses Ereignis.

552 

553### Exit-Code-Ausgabe

554 

555Der Exit-Code aus Ihrem Hook-Befehl teilt Claude Code mit, ob die Aktion fortgesetzt, blockiert oder ignoriert werden soll.

556 

557**Exit 0** bedeutet Erfolg. Claude Code analysiert stdout auf [JSON-Ausgabefelder](#json-output). JSON-Ausgabe wird nur bei Exit 0 verarbeitet. Für die meisten Ereignisse wird stdout in das Debug-Log geschrieben, aber nicht im Transkript angezeigt. Die Ausnahmen sind `UserPromptSubmit`, `UserPromptExpansion` und `SessionStart`, wo stdout als Kontext hinzugefügt wird, den Claude sehen und darauf reagieren kann.

558 

559**Exit 2** bedeutet ein blockierender Fehler. Claude Code ignoriert stdout und jede JSON darin. Stattdessen wird der stderr-Text an Claude als Fehlermeldung zurückgegeben. Die Auswirkung hängt vom Ereignis ab: `PreToolUse` blockiert den Tool-Aufruf, `UserPromptSubmit` lehnt den Prompt ab, und so weiter. Siehe [Exit-Code-2-Verhalten pro Ereignis](#exit-code-2-behavior-per-event) für die vollständige Liste.

560 

561**Jeder andere Exit-Code** ist ein nicht-blockierender Fehler für die meisten Hook-Ereignisse. Das Transkript zeigt eine `<hook name> hook error`-Benachrichtigung gefolgt von der ersten Zeile von stderr, damit Sie die Ursache ohne `--debug` identifizieren können. Die Ausführung wird fortgesetzt und der vollständige stderr wird in das Debug-Log geschrieben.

562 

563Zum Beispiel ein Hook-Befehlsskript, das gefährliche Bash-Befehle blockiert:

564 

565```bash theme={null}

566#!/bin/bash

567# Liest JSON-Eingabe von stdin, prüft den Befehl

568command=$(jq -r '.tool_input.command' < /dev/stdin)

569 

570if [[ "$command" == rm* ]]; then

571 echo "Blocked: rm commands are not allowed" >&2

572 exit 2 # Blockierender Fehler: Tool-Aufruf wird verhindert

573fi

574 

575exit 0 # Erfolg: Tool-Aufruf wird fortgesetzt

576```

577 

578<Warning>

579 Für die meisten Hook-Ereignisse blockiert nur Exit-Code 2 die Aktion. Claude Code behandelt Exit-Code 1 als nicht-blockierenden Fehler und setzt die Aktion fort, obwohl 1 der konventionelle Unix-Fehlercode ist. Wenn Ihr Hook eine Richtlinie durchsetzen soll, verwenden Sie `exit 2`. Die Ausnahme ist `WorktreeCreate`, wo jeder Nicht-Null-Exit-Code die Worktree-Erstellung abbricht.

580</Warning>

581 

582#### Exit-Code-2-Verhalten pro Ereignis

583 

584Exit-Code 2 ist die Art, wie ein Hook signalisiert „Stopp, mach das nicht." Die Auswirkung hängt vom Ereignis ab, da einige Ereignisse Aktionen darstellen, die blockiert werden können (wie ein Tool-Aufruf, der noch nicht stattgefunden hat), und andere Dinge darstellen, die bereits passiert sind oder nicht verhindert werden können.

585 

586| Hook-Ereignis | Kann blockiert werden? | Was passiert bei Exit 2 |

587| :-------------------- | :--------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

588| `PreToolUse` | Ja | Blockiert den Tool-Aufruf |

589| `PermissionRequest` | Ja | Verweigert die Berechtigung |

590| `UserPromptSubmit` | Ja | Blockiert die Prompt-Verarbeitung und löscht den Prompt |

591| `UserPromptExpansion` | Ja | Blockiert die Erweiterung |

592| `Stop` | Ja | Verhindert, dass Claude stoppt, setzt das Gespräch fort |

593| `SubagentStop` | Ja | Verhindert, dass der Subagent stoppt |

594| `TeammateIdle` | Ja | Verhindert, dass der Teammate untätig wird (Teammate arbeitet weiter) |

595| `TaskCreated` | Ja | Rollback der Aufgabenerstellung |

596| `TaskCompleted` | Ja | Verhindert, dass die Aufgabe als abgeschlossen markiert wird |

597| `ConfigChange` | Ja | Blockiert die Konfigurationsänderung von der Anwendung (außer `policy_settings`) |

598| `StopFailure` | Nein | Ausgabe und Exit-Code werden ignoriert |

599| `PostToolUse` | Nein | Zeigt stderr Claude an (Tool wurde bereits ausgeführt) |

600| `PostToolUseFailure` | Nein | Zeigt stderr Claude an (Tool ist bereits fehlgeschlagen) |

601| `PostToolBatch` | Ja | Stoppt die agentengesteuerte Schleife vor dem nächsten Modellaufruf |

602| `PermissionDenied` | Nein | Exit-Code und stderr werden ignoriert (Ablehnung ist bereits erfolgt). Verwenden Sie JSON `hookSpecificOutput.retry: true`, um dem Modell zu sagen, dass es möglicherweise erneut versuchen kann |

603| `Notification` | Nein | Zeigt stderr nur dem Benutzer an |

604| `SubagentStart` | Nein | Zeigt stderr nur dem Benutzer an |

605| `SessionStart` | Nein | Zeigt stderr nur dem Benutzer an |

606| `Setup` | Nein | Zeigt stderr nur dem Benutzer an |

607| `SessionEnd` | Nein | Zeigt stderr nur dem Benutzer an |

608| `CwdChanged` | Nein | Zeigt stderr nur dem Benutzer an |

609| `FileChanged` | Nein | Zeigt stderr nur dem Benutzer an |

610| `PreCompact` | Ja | Blockiert die Komprimierung |

611| `PostCompact` | Nein | Zeigt stderr nur dem Benutzer an |

612| `Elicitation` | Ja | Verweigert die Elicitation |

613| `ElicitationResult` | Ja | Blockiert die Antwort (Aktion wird Ablehnung) |

614| `WorktreeCreate` | Ja | Jeder Nicht-Null-Exit-Code führt zu Fehler bei der Worktree-Erstellung |

615| `WorktreeRemove` | Nein | Fehler werden nur im Debug-Modus protokolliert |

616| `InstructionsLoaded` | Nein | Exit-Code wird ignoriert |

617 

618### HTTP-Response-Behandlung

619 

620HTTP-Hooks verwenden HTTP-Statuscodes und Response-Bodies anstelle von Exit-Codes und stdout:

621 

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

623* **2xx mit Plain-Text-Body**: Erfolg, der Text wird als Kontext hinzugefügt

624* **2xx mit JSON-Body**: Erfolg, analysiert mit dem gleichen [JSON-Ausgabe](#json-output)-Schema wie Command-Hooks

625* **Nicht-2xx-Status**: Nicht-blockierender Fehler, Ausführung wird fortgesetzt

626* **Verbindungsfehler oder Timeout**: Nicht-blockierender Fehler, Ausführung wird fortgesetzt

627 

628Im Gegensatz zu Command-Hooks können HTTP-Hooks nicht allein durch Statuscodes einen blockierenden Fehler signalisieren. Um einen Tool-Aufruf zu blockieren oder eine Berechtigung zu verweigern, geben Sie eine 2xx-Antwort mit einem JSON-Body zurück, der die entsprechenden Entscheidungsfelder enthält.

629 

630### JSON-Ausgabe

631 

632Exit-Codes ermöglichen es Ihnen, zuzulassen oder zu blockieren, aber JSON-Ausgabe gibt Ihnen eine feinere Kontrolle. Anstatt mit Code 2 zu beenden, um zu blockieren, beenden Sie mit 0 und geben Sie ein JSON-Objekt auf stdout aus. Claude Code liest spezifische Felder aus diesem JSON, um das Verhalten zu steuern, einschließlich [Entscheidungskontrolle](#decision-control) zum Blockieren, Zulassen oder Eskalieren an den Benutzer.

633 

634<Note>

635 Sie müssen einen Ansatz pro Hook wählen, nicht beide: Verwenden Sie entweder Exit-Codes allein zum Signalisieren, oder beenden Sie mit 0 und geben Sie JSON für strukturierte Kontrolle aus. Claude Code verarbeitet JSON nur bei Exit 0. Wenn Sie mit 2 beenden, wird jede JSON ignoriert.

636</Note>

637 

638Die stdout Ihres Hooks darf nur das JSON-Objekt enthalten. Wenn Ihr Shell-Profil beim Start Text ausgibt, kann dies die JSON-Analyse beeinträchtigen. Siehe [JSON-Validierung fehlgeschlagen](/de/hooks-guide#json-validation-failed) in der Fehlerbehebungsanleitung.

639 

640Hook-Ausgabe, die in Kontext injiziert wird (`additionalContext`, `systemMessage` oder Plain-stdout), ist auf 10.000 Zeichen begrenzt. Ausgabe, die dieses Limit überschreitet, wird in einer Datei gespeichert und durch eine Vorschau und einen Dateipfad ersetzt, auf die gleiche Weise wie große Tool-Ergebnisse behandelt werden.

641 

642Das JSON-Objekt unterstützt drei Arten von Feldern:

643 

644* **Universelle Felder** wie `continue` funktionieren über alle Ereignisse hinweg. Diese sind in der Tabelle unten aufgelistet.

645* **Top-Level `decision` und `reason`** werden von einigen Ereignissen verwendet, um zu blockieren oder Feedback zu geben.

646* **`hookSpecificOutput`** ist ein verschachteltes Objekt für Ereignisse, die reichere Kontrolle benötigen. Es erfordert ein `hookEventName`-Feld, das auf den Ereignisnamen gesetzt ist.

647 

648| Feld | Standard | Beschreibung |

649| :--------------- | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- |

650| `continue` | `true` | Wenn `false`, stoppt Claude die Verarbeitung vollständig, nachdem der Hook ausgeführt wurde. Hat Vorrang vor allen ereignisspezifischen Entscheidungsfeldern |

651| `stopReason` | keine | Nachricht, die dem Benutzer angezeigt wird, wenn `continue` `false` ist. Wird Claude nicht angezeigt |

652| `suppressOutput` | `false` | Wenn `true`, verbirgt stdout aus dem Debug-Log |

653| `systemMessage` | keine | Warnmeldung, die dem Benutzer angezeigt wird |

654 

655Um Claude unabhängig vom Ereignistyp vollständig zu stoppen:

656 

657```json theme={null}

658{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }

659```

660 

661#### Kontext für Claude hinzufügen

662 

663Das Feld `additionalContext` übergibt einen String aus Ihrem Hook in Claudes Kontextfenster. Claude Code umhüllt den String in eine Systemerinnerung und fügt ihn in das Gespräch an dem Punkt ein, an dem der Hook ausgelöst wurde. Claude liest die Erinnerung bei der nächsten Modellanfrage, aber sie wird nicht als Chat-Nachricht in der Benutzeroberfläche angezeigt.

664 

665Geben Sie `additionalContext` innerhalb von `hookSpecificOutput` neben dem Ereignisnamen zurück:

666 

667```json theme={null}

668{

669 "hookSpecificOutput": {

670 "hookEventName": "PostToolUse",

671 "additionalContext": "This file is generated. Edit src/schema.ts and run `bun generate` instead."

672 }

673}

674```

675 

676Wo die Erinnerung angezeigt wird, hängt vom Ereignis ab:

677 

678* [SessionStart](#sessionstart), [Setup](#setup) und [SubagentStart](#subagentstart): am Anfang des Gesprächs, vor der ersten Eingabeaufforderung

679* [UserPromptSubmit](#userpromptsubmit) und [UserPromptExpansion](#userpromptexpansion): neben der eingereichten Eingabeaufforderung

680* [PreToolUse](#pretooluse), [PostToolUse](#posttooluse), [PostToolUseFailure](#posttoolusefailure) und [PostToolBatch](#posttoolbatch): neben dem Tool-Ergebnis

681 

682Wenn mehrere Hooks `additionalContext` für das gleiche Ereignis zurückgeben, erhält Claude alle Werte. Wenn ein Wert 10.000 Zeichen überschreitet, schreibt Claude Code den vollständigen Text in eine Datei im Sitzungsverzeichnis und übergibt Claude stattdessen den Dateipfad mit einer kurzen Vorschau.

683 

684Verwenden Sie `additionalContext` für Informationen, die Claude über den aktuellen Zustand Ihrer Umgebung oder die gerade ausgeführte Operation wissen sollte:

685 

686* **Umgebungszustand**: der aktuelle Branch, das Bereitstellungsziel oder aktive Feature-Flags

687* **Bedingte Projektregeln**: welcher Test-Befehl für die gerade bearbeitete Datei gilt, welche Verzeichnisse in diesem Worktree schreibgeschützt sind

688* **Externe Daten**: offene Probleme, die Ihnen zugewiesen sind, aktuelle CI-Ergebnisse, Inhalte, die von einem internen Service abgerufen wurden

689 

690Für Anweisungen, die sich nie ändern, bevorzugen Sie [CLAUDE.md](/de/memory). Es wird ohne Ausführung eines Skripts geladen und ist der Standardort für statische Projektkonventionen.

691 

692Schreiben Sie den Text als sachliche Aussagen statt als imperative Systembefehle. Formulierungen wie „Das Bereitstellungsziel ist Produktion" oder „Dieses Repo verwendet `bun test`" werden als Projektinformationen gelesen. Text, der als Out-of-Band-Systembefehle formuliert ist, kann Claudes Prompt-Injection-Abwehr auslösen, was dazu führt, dass Claude den Text an Sie zurückgibt, anstatt ihn als Kontext zu behandeln.

693 

694Nach der Injektion wird der Text im Sitzungstranskript gespeichert. Für Mid-Session-Ereignisse wie `PostToolUse` oder `UserPromptSubmit` wird beim Fortsetzen mit `--continue` oder `--resume` der gespeicherte Text erneut abgespielt, anstatt den Hook für vergangene Umdrehungen erneut auszuführen, sodass Werte wie Zeitstempel oder Commit-SHAs beim Fortsetzen veraltet werden. `SessionStart`-Hooks werden beim Fortsetzen mit `source` auf `"resume"` gesetzt erneut ausgeführt, sodass sie ihren Kontext aktualisieren können.

695 

696#### Entscheidungskontrolle

697 

698Nicht jedes Ereignis unterstützt das Blockieren oder Steuern des Verhaltens durch JSON. Die Ereignisse, die dies tun, verwenden jeweils einen anderen Satz von Feldern, um diese Entscheidung auszudrücken. Verwenden Sie diese Tabelle als schnelle Referenz, bevor Sie einen Hook schreiben:

699 

700| Ereignisse | Entscheidungsmuster | Schlüsselfelder |

701| :---------------------------------------------------------------------------------------------------------------------------------- | :------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

702| UserPromptSubmit, UserPromptExpansion, PostToolUse, PostToolUseFailure, PostToolBatch, Stop, SubagentStop, ConfigChange, PreCompact | Top-Level `decision` | `decision: "block"`, `reason` |

703| TeammateIdle, TaskCreated, TaskCompleted | Exit-Code oder `continue: false` | Exit-Code 2 blockiert die Aktion mit stderr-Feedback. JSON `{"continue": false, "stopReason": "..."}` stoppt auch den Teammate vollständig, was dem `Stop`-Hook-Verhalten entspricht |

704| PreToolUse | `hookSpecificOutput` | `permissionDecision` (allow/deny/ask/defer), `permissionDecisionReason` |

705| PermissionRequest | `hookSpecificOutput` | `decision.behavior` (allow/deny) |

706| PermissionDenied | `hookSpecificOutput` | `retry: true` teilt dem Modell mit, dass es möglicherweise den verweigerten Tool-Aufruf erneut versuchen kann |

707| WorktreeCreate | Pfad-Rückgabe | Command-Hook gibt Pfad auf stdout aus; HTTP-Hook gibt `hookSpecificOutput.worktreePath` zurück. Hook-Fehler oder fehlender Pfad schlägt die Erstellung fehl |

708| Elicitation | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (Formularfeldwerte für accept) |

709| ElicitationResult | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (Formularfeldwerte überschreiben) |

710| WorktreeRemove, Notification, SessionEnd, PostCompact, InstructionsLoaded, StopFailure, CwdChanged, FileChanged | Keine | Keine Entscheidungskontrolle. Wird für Nebenwirkungen wie Protokollierung oder Bereinigung verwendet |

711 

712Hier sind Beispiele für jedes Muster in Aktion:

713 

714<Tabs>

715 <Tab title="Top-Level-Entscheidung">

716 Wird von `UserPromptSubmit`, `UserPromptExpansion`, `PostToolUse`, `PostToolUseFailure`, `PostToolBatch`, `Stop`, `SubagentStop`, `ConfigChange` und `PreCompact` verwendet. Der einzige Wert ist `"block"`. Um die Aktion fortzusetzen, lassen Sie `decision` aus Ihrem JSON weg, oder beenden Sie mit 0 ohne jede JSON:

717 

718 ```json theme={null}

719 {

720 "decision": "block",

721 "reason": "Test suite must pass before proceeding"

722 }

723 ```

724 </Tab>

725 

726 <Tab title="PreToolUse">

727 Verwendet `hookSpecificOutput` für reichere Kontrolle: zulassen, verweigern oder an den Benutzer eskalieren. Sie können auch die Tool-Eingabe vor der Ausführung ändern oder zusätzlichen Kontext für Claude injizieren. Siehe [PreToolUse-Entscheidungskontrolle](#pretooluse-decision-control) für den vollständigen Satz von Optionen.

728 

729 ```json theme={null}

730 {

731 "hookSpecificOutput": {

732 "hookEventName": "PreToolUse",

733 "permissionDecision": "deny",

734 "permissionDecisionReason": "Database writes are not allowed"

735 }

736 }

737 ```

738 </Tab>

739 

740 <Tab title="PermissionRequest">

741 Verwendet `hookSpecificOutput`, um eine Berechtigungsanfrage im Namen des Benutzers zuzulassen oder zu verweigern. Beim Zulassen können Sie auch die Eingabe des Tools ändern oder Berechtigungsregeln anwenden, damit der Benutzer nicht erneut aufgefordert wird. Siehe [PermissionRequest-Entscheidungskontrolle](#permissionrequest-decision-control) für den vollständigen Satz von Optionen.

742 

743 ```json theme={null}

744 {

745 "hookSpecificOutput": {

746 "hookEventName": "PermissionRequest",

747 "decision": {

748 "behavior": "allow",

749 "updatedInput": {

750 "command": "npm run lint"

751 }

752 }

753 }

754 }

755 ```

756 </Tab>

757</Tabs>

758 

759Erweiterte Beispiele einschließlich Bash-Befehlsvalidierung, Prompt-Filterung und Auto-Genehmigungsskripte finden Sie unter [Was Sie automatisieren können](/de/hooks-guide#what-you-can-automate) in der Anleitung und der [Bash-Befehlsvalidierungs-Referenzimplementierung](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py).

760 

761## Hook-Ereignisse

762 

763Jedes Ereignis entspricht einem Punkt im Lebenszyklus von Claude Code, an dem Hooks ausgeführt werden können. Die folgenden Abschnitte sind in der Reihenfolge des Lebenszyklus angeordnet: von der Sitzungseinrichtung durch die agentengesteuerte Schleife bis zum Sitzungsende. Jeder Abschnitt beschreibt, wann das Ereignis ausgelöst wird, welche Matcher es unterstützt, die JSON-Eingabe, die es erhält, und wie das Verhalten durch die Ausgabe gesteuert wird.

764 

765### SessionStart

766 

767Wird ausgeführt, wenn Claude Code eine neue Sitzung startet oder eine vorhandene Sitzung fortsetzt. Nützlich zum Laden von Entwicklungskontext wie vorhandenen Problemen oder kürzlichen Änderungen an Ihrer Codebasis oder zum Einrichten von Umgebungsvariablen. Für statischen Kontext, der kein Skript erfordert, verwenden Sie stattdessen [CLAUDE.md](/de/memory).

768 

769SessionStart wird bei jeder Sitzung ausgeführt, daher halten Sie diese Hooks schnell. Nur `type: "command"` und `type: "mcp_tool"` Hooks werden unterstützt.

770 

771Der Matcher-Wert entspricht der Art, wie die Sitzung initiiert wurde:

772 

773| Matcher | Wann es ausgelöst wird |

774| :-------- | :-------------------------------------- |

775| `startup` | Neue Sitzung |

776| `resume` | `--resume`, `--continue` oder `/resume` |

777| `clear` | `/clear` |

778| `compact` | Auto- oder manuelle Komprimierung |

779 

780#### SessionStart-Eingabe

781 

782Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten SessionStart-Hooks `source`, `model` und optional `agent_type`. Das Feld `source` gibt an, wie die Sitzung gestartet wurde: `"startup"` für neue Sitzungen, `"resume"` für fortgesetzte Sitzungen, `"clear"` nach `/clear` oder `"compact"` nach Komprimierung. Das Feld `model` enthält die Modell-ID. Wenn Sie Claude Code mit `claude --agent <name>` starten, enthält ein Feld `agent_type` den Agent-Namen.

783 

784```json theme={null}

785{

786 "session_id": "abc123",

787 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

788 "cwd": "/Users/...",

789 "hook_event_name": "SessionStart",

790 "source": "startup",

791 "model": "claude-sonnet-4-6"

792}

793```

794 

795#### SessionStart-Entscheidungskontrolle

796 

797Jeder Text, den Ihr Hook-Skript auf stdout ausgibt, wird als Kontext für Claude hinzugefügt. Zusätzlich zu den [JSON-Ausgabefeldern](#json-output), die für alle Hooks verfügbar sind, können Sie diese ereignisspezifischen Felder zurückgeben:

798 

799| Feld | Beschreibung |

800| :------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

801| `additionalContext` | Zeichenkette, die zu Claudes Kontext am Anfang des Gesprächs hinzugefügt wird, vor dem ersten Prompt. Siehe [Kontext für Claude hinzufügen](#add-context-for-claude), um zu erfahren, wie der Text bereitgestellt wird und was Sie darin einfügen sollten |

802 

803```json theme={null}

804{

805 "hookSpecificOutput": {

806 "hookEventName": "SessionStart",

807 "additionalContext": "Current branch: feat/auth-refactor\nUncommitted changes: src/auth.ts, src/login.tsx\nActive issue: #4211 Migrate to OAuth2"

808 }

809}

810```

811 

812Da einfacher stdout bereits Claude für dieses Ereignis erreicht, kann ein Hook, der nur Kontext lädt, direkt auf stdout drucken, ohne JSON zu erstellen. Verwenden Sie die JSON-Form, wenn Sie Kontext mit anderen Feldern wie `suppressOutput` kombinieren müssen.

813 

814#### Umgebungsvariablen beibehalten

815 

816SessionStart-Hooks haben Zugriff auf die Umgebungsvariable `CLAUDE_ENV_FILE`, die einen Dateipfad bereitstellt, in dem Sie Umgebungsvariablen für nachfolgende Bash-Befehle beibehalten können.

817 

818Um einzelne Umgebungsvariablen zu setzen, schreiben Sie `export`-Anweisungen in `CLAUDE_ENV_FILE`. Verwenden Sie Anhängen (`>>`), um Variablen zu bewahren, die von anderen Hooks gesetzt wurden:

819 

820```bash theme={null}

821#!/bin/bash

822 

823if [ -n "$CLAUDE_ENV_FILE" ]; then

824 echo 'export NODE_ENV=production' >> "$CLAUDE_ENV_FILE"

825 echo 'export DEBUG_LOG=true' >> "$CLAUDE_ENV_FILE"

826 echo 'export PATH="$PATH:./node_modules/.bin"' >> "$CLAUDE_ENV_FILE"

827fi

828 

829exit 0

830```

831 

832Um alle Umgebungsänderungen von Setup-Befehlen zu erfassen, vergleichen Sie die exportierten Variablen vorher und nachher:

833 

834```bash theme={null}

835#!/bin/bash

836 

837ENV_BEFORE=$(export -p | sort)

838 

839# Führen Sie Ihre Setup-Befehle aus, die die Umgebung ändern

840source ~/.nvm/nvm.sh

841nvm use 20

842 

843if [ -n "$CLAUDE_ENV_FILE" ]; then

844 ENV_AFTER=$(export -p | sort)

845 comm -13 <(echo "$ENV_BEFORE") <(echo "$ENV_AFTER") >> "$CLAUDE_ENV_FILE"

846fi

847 

848exit 0

849```

850 

851Alle Variablen, die in diese Datei geschrieben werden, sind in allen nachfolgenden Bash-Befehlen verfügbar, die Claude Code während der Sitzung ausführt.

852 

853<Note>

854 `CLAUDE_ENV_FILE` ist für SessionStart-, [Setup](#setup)-, [CwdChanged](#cwdchanged)- und [FileChanged](#filechanged)-Hooks verfügbar. Andere Hook-Typen haben keinen Zugriff auf diese Variable.

855</Note>

856 

857### Setup

858 

859Wird nur ausgelöst, wenn Sie Claude Code mit `--init-only` starten oder mit `--init` oder `--maintenance` im Print-Modus (`-p`). Es wird nicht beim normalen Start ausgelöst. Verwenden Sie es für einmalige Abhängigkeitsinstallation oder geplante Bereinigung, die Sie explizit von CI oder Skripten aus auslösen, getrennt vom normalen Sitzungsstart. Für Initialisierung pro Sitzung verwenden Sie stattdessen [SessionStart](#sessionstart).

860 

861Der Matcher-Wert entspricht dem CLI-Flag, das den Hook ausgelöst hat:

862 

863| Matcher | Wann es ausgelöst wird |

864| :------------ | :------------------------------------------- |

865| `init` | `claude --init-only` oder `claude -p --init` |

866| `maintenance` | `claude -p --maintenance` |

867 

868`--init-only` führt Setup-Hooks und SessionStart-Hooks mit dem `startup`-Matcher aus und beendet sich dann, ohne ein Gespräch zu starten. `--init` und `--maintenance` lösen Setup-Hooks nur aus, wenn sie mit `-p` (Print-Modus) kombiniert werden; in einer interaktiven Sitzung lösen diese beiden Flags derzeit keine Setup-Hooks aus.

869 

870Da Setup nicht bei jedem Start ausgelöst wird, kann ein Plugin, das eine Abhängigkeit installiert benötigt, sich nicht allein auf Setup verlassen. Das praktische Muster ist, die Abhängigkeit bei der ersten Verwendung zu überprüfen und bei Fehlen zu installieren, zum Beispiel ein Hook oder eine Skill, die auf `${CLAUDE_PLUGIN_DATA}/node_modules` testet und `npm install` ausführt, wenn es fehlt. Siehe das [Verzeichnis für persistente Daten](/de/plugins-reference#persistent-data-directory), um zu erfahren, wo Sie installierte Abhängigkeiten speichern können.

871 

872#### Setup-Eingabe

873 

874Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten Setup-Hooks ein Feld `trigger`, das auf `"init"` oder `"maintenance"` gesetzt ist:

875 

876```json theme={null}

877{

878 "session_id": "abc123",

879 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

880 "cwd": "/Users/...",

881 "hook_event_name": "Setup",

882 "trigger": "init"

883}

884```

885 

886#### Setup-Entscheidungskontrolle

887 

888Setup-Hooks können nicht blockieren. Bei Exit-Code 2 wird stderr dem Benutzer angezeigt; bei jedem anderen Nicht-Null-Exit-Code wird stderr nur angezeigt, wenn Sie mit `--verbose` starten. In beiden Fällen wird die Ausführung fortgesetzt. Um Informationen in Claudes Kontext zu übergeben, geben Sie `additionalContext` in der JSON-Ausgabe zurück; einfacher stdout wird nur in das Debug-Protokoll geschrieben. Zusätzlich zu den [JSON-Ausgabefeldern](#json-output), die für alle Hooks verfügbar sind, können Sie diese ereignisspezifischen Felder zurückgeben:

889 

890| Feld | Beschreibung |

891| :------------------ | :------------------------------------------------------------------------------------------- |

892| `additionalContext` | Zeichenkette, die zu Claudes Kontext hinzugefügt wird. Werte mehrerer Hooks werden verkettet |

893 

894```json theme={null}

895{

896 "hookSpecificOutput": {

897 "hookEventName": "Setup",

898 "additionalContext": "Dependencies installed: node_modules, .venv"

899 }

900}

901```

902 

903Setup-Hooks haben Zugriff auf `CLAUDE_ENV_FILE`. Variablen, die in diese Datei geschrieben werden, bleiben in nachfolgenden Bash-Befehlen für die Sitzung erhalten, genau wie in [SessionStart-Hooks](#persist-environment-variables). Nur `type: "command"` und `type: "mcp_tool"` Hooks werden unterstützt.

904 

905### InstructionsLoaded

906 

907Wird ausgelöst, wenn eine `CLAUDE.md`- oder `.claude/rules/*.md`-Datei in den Kontext geladen wird. Dieses Ereignis wird beim Sitzungsstart für eifrig geladene Dateien ausgelöst und später erneut, wenn Dateien träge geladen werden, zum Beispiel wenn Claude auf ein Unterverzeichnis zugreift, das eine verschachtelte `CLAUDE.md` enthält, oder wenn bedingte Regeln mit `paths:`-Frontmatter passen. Der Hook unterstützt keine Blockierung oder Entscheidungskontrolle. Er wird asynchron zu Beobachtungszwecken ausgeführt.

908 

909Der Matcher wird gegen `load_reason` ausgeführt. Verwenden Sie zum Beispiel `"matcher": "session_start"`, um nur für Dateien zu feuern, die beim Sitzungsstart geladen werden, oder `"matcher": "path_glob_match|nested_traversal"`, um nur für träge Ladevorgänge zu feuern.

910 

911#### InstructionsLoaded-Eingabe

912 

913Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten InstructionsLoaded-Hooks diese Felder:

914 

915| Feld | Beschreibung |

916| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

917| `file_path` | Absoluter Pfad zur Anweisungsdatei, die geladen wurde |

918| `memory_type` | Umfang der Datei: `"User"`, `"Project"`, `"Local"` oder `"Managed"` |

919| `load_reason` | Warum die Datei geladen wurde: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"` oder `"compact"`. Der Wert `"compact"` wird ausgelöst, wenn Anweisungsdateien nach einem Komprimierungsereignis neu geladen werden |

920| `globs` | Pfad-Glob-Muster aus dem `paths:`-Frontmatter der Datei, falls vorhanden. Nur für `path_glob_match`-Ladevorgänge vorhanden |

921| `trigger_file_path` | Pfad zur Datei, deren Zugriff diesen Ladevorgang ausgelöst hat, für träge Ladevorgänge |

922| `parent_file_path` | Pfad zur übergeordneten Anweisungsdatei, die diese eingebunden hat, für `include`-Ladevorgänge |

923 

924```json theme={null}

925{

926 "session_id": "abc123",

927 "transcript_path": "/Users/.../.claude/projects/.../transcript.jsonl",

928 "cwd": "/Users/my-project",

929 "hook_event_name": "InstructionsLoaded",

930 "file_path": "/Users/my-project/CLAUDE.md",

931 "memory_type": "Project",

932 "load_reason": "session_start"

933}

934```

935 

936#### InstructionsLoaded-Entscheidungskontrolle

937 

938InstructionsLoaded-Hooks haben keine Entscheidungskontrolle. Sie können das Laden von Anweisungen nicht blockieren oder ändern. Verwenden Sie dieses Ereignis für Audit-Protokollierung, Compliance-Tracking oder Beobachtbarkeit.

939 

940### UserPromptSubmit

941 

942Wird ausgeführt, wenn der Benutzer einen Prompt einreicht, bevor Claude ihn verarbeitet. Dies ermöglicht es Ihnen, zusätzlichen Kontext basierend auf dem Prompt/Gespräch hinzuzufügen, Prompts zu validieren oder bestimmte Arten von Prompts zu blockieren.

943 

944#### UserPromptSubmit-Eingabe

945 

946Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten UserPromptSubmit-Hooks das Feld `prompt`, das den Text enthält, den der Benutzer eingereicht hat.

947 

948```json theme={null}

949{

950 "session_id": "abc123",

951 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

952 "cwd": "/Users/...",

953 "permission_mode": "default",

954 "hook_event_name": "UserPromptSubmit",

955 "prompt": "Write a function to calculate the factorial of a number"

956}

957```

958 

959#### UserPromptSubmit-Entscheidungskontrolle

960 

961`UserPromptSubmit`-Hooks können steuern, ob ein Benutzer-Prompt verarbeitet wird und Kontext hinzufügen. Alle [JSON-Ausgabefelder](#json-output) sind verfügbar.

962 

963Es gibt zwei Möglichkeiten, Kontext zum Gespräch bei Exit-Code 0 hinzuzufügen:

964 

965* **Plain-Text-stdout**: Jeder Nicht-JSON-Text, der auf stdout geschrieben wird, wird als Kontext hinzugefügt

966* **JSON mit `additionalContext`**: Verwenden Sie das JSON-Format unten für mehr Kontrolle. Das Feld `additionalContext` wird als Kontext hinzugefügt

967 

968Plain-stdout wird als Hook-Ausgabe im Transkript angezeigt. Das Feld `additionalContext` wird diskreter hinzugefügt.

969 

970Um einen Prompt zu blockieren, geben Sie ein JSON-Objekt mit `decision` auf `"block"` zurück:

971 

972| Feld | Beschreibung |

973| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------- |

974| `decision` | `"block"` verhindert die Verarbeitung des Prompts und löscht ihn aus dem Kontext. Weglassen, um den Prompt fortzusetzen |

975| `reason` | Wird dem Benutzer angezeigt, wenn `decision` `"block"` ist. Wird nicht zum Kontext hinzugefügt |

976| `additionalContext` | Zeichenkette, die zu Claudes Kontext hinzugefügt wird, zusammen mit dem eingereichten Prompt. Siehe [Kontext für Claude hinzufügen](#add-context-for-claude) |

977| `sessionTitle` | Setzt den Sitzungstitel, gleiche Auswirkung wie `/rename`. Verwenden Sie, um Sitzungen automatisch basierend auf dem Prompt-Inhalt zu benennen |

978 

979```json theme={null}

980{

981 "decision": "block",

982 "reason": "Explanation for decision",

983 "hookSpecificOutput": {

984 "hookEventName": "UserPromptSubmit",

985 "additionalContext": "My additional context here",

986 "sessionTitle": "My session title"

987 }

988}

989```

990 

991<Note>

992 Das JSON-Format ist nicht erforderlich für einfache Anwendungsfälle. Um Kontext hinzuzufügen, können Sie einfach Plain-Text auf stdout mit Exit-Code 0 ausgeben. Verwenden Sie JSON, wenn Sie Prompts blockieren oder mehr strukturierte Kontrolle benötigen.

993</Note>

994 

995### UserPromptExpansion

996 

997Wird ausgeführt, wenn ein vom Benutzer eingegebener Slash-Befehl vor Erreichen von Claude in einen Prompt erweitert wird. Verwenden Sie dies, um bestimmte Befehle von direkter Aufrufe zu blockieren, Kontext für eine bestimmte Skill einzufügen oder zu protokollieren, welche Befehle Benutzer aufrufen. Zum Beispiel kann ein Hook, der `deploy` passt, `/deploy` blockieren, es sei denn, eine Genehmigungsdatei ist vorhanden, oder ein Hook, der eine Review-Skill passt, kann die Review-Checkliste des Teams als `additionalContext` anhängen.

998 

999Dieses Ereignis deckt den Pfad ab, den `PreToolUse` nicht abdeckt: Ein `PreToolUse`-Hook, der das `Skill`-Tool passt, wird nur ausgelöst, wenn Claude das Tool aufruft, aber das direkte Eingeben von `/skillname` umgeht `PreToolUse`. `UserPromptExpansion` wird auf diesem direkten Pfad ausgelöst.

1000 

1001Passt auf `command_name`. Lassen Sie den Matcher leer, um auf jedem Prompt-Typ-Slash-Befehl zu feuern.

1002 

1003#### UserPromptExpansion-Eingabe

1004 

1005Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten UserPromptExpansion-Hooks `expansion_type`, `command_name`, `command_args`, `command_source` und die ursprüngliche `prompt`-Zeichenkette. Das Feld `expansion_type` ist `slash_command` für Skill- und benutzerdefinierte Befehle oder `mcp_prompt` für MCP-Server-Prompts.

1006 

1007```json theme={null}

1008{

1009 "session_id": "abc123",

1010 "transcript_path": "/Users/.../00893aaf.jsonl",

1011 "cwd": "/Users/...",

1012 "permission_mode": "default",

1013 "hook_event_name": "UserPromptExpansion",

1014 "expansion_type": "slash_command",

1015 "command_name": "example-skill",

1016 "command_args": "arg1 arg2",

1017 "command_source": "plugin",

1018 "prompt": "/example-skill arg1 arg2"

1019}

1020```

1021 

1022#### UserPromptExpansion-Entscheidungskontrolle

1023 

1024`UserPromptExpansion`-Hooks können die Erweiterung blockieren oder Kontext hinzufügen. Alle [JSON-Ausgabefelder](#json-output) sind verfügbar.

1025 

1026| Feld | Beschreibung |

1027| :------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------- |

1028| `decision` | `"block"` verhindert die Erweiterung des Slash-Befehls. Weglassen, um ihn fortzusetzen |

1029| `reason` | Wird dem Benutzer angezeigt, wenn `decision` `"block"` ist |

1030| `additionalContext` | Zeichenkette, die zu Claudes Kontext zusammen mit dem erweiterten Prompt hinzugefügt wird. Siehe [Kontext für Claude hinzufügen](#add-context-for-claude) |

1031 

1032```json theme={null}

1033{

1034 "decision": "block",

1035 "reason": "This slash command is not available",

1036 "hookSpecificOutput": {

1037 "hookEventName": "UserPromptExpansion",

1038 "additionalContext": "Additional context for this expansion"

1039 }

1040}

1041```

1042 

1043### PreToolUse

1044 

1045Wird ausgeführt, nachdem Claude Tool-Parameter erstellt hat und bevor der Tool-Aufruf verarbeitet wird. Passt auf Tool-Namen: `Bash`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `WebFetch`, `WebSearch`, `AskUserQuestion`, `ExitPlanMode` und alle [MCP-Tool-Namen](#match-mcp-tools).

1046 

1047Verwenden Sie [PreToolUse-Entscheidungskontrolle](#pretooluse-decision-control), um die Verwendung des Tools zuzulassen, zu verweigern, um Berechtigung zu bitten oder zu verschieben.

1048 

1049#### PreToolUse-Eingabe

1050 

1051Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten PreToolUse-Hooks `tool_name`, `tool_input` und `tool_use_id`. Die Felder `tool_input` hängen vom Tool ab:

1052 

1053##### Bash

1054 

1055Führt Shell-Befehle aus.

1056 

1057| Feld | Typ | Beispiel | Beschreibung |

1058| :------------------ | :----------- | :----------------- | :-------------------------------------------------- |

1059| `command` | Zeichenkette | `"npm test"` | Der auszuführende Shell-Befehl |

1060| `description` | Zeichenkette | `"Run test suite"` | Optionale Beschreibung, was der Befehl tut |

1061| `timeout` | Zahl | `120000` | Optionales Timeout in Millisekunden |

1062| `run_in_background` | Boolesch | `false` | Ob der Befehl im Hintergrund ausgeführt werden soll |

1063 

1064##### Write

1065 

1066Erstellt oder überschreibt eine Datei.

1067 

1068| Feld | Typ | Beispiel | Beschreibung |

1069| :---------- | :----------- | :-------------------- | :--------------------------------------- |

1070| `file_path` | Zeichenkette | `"/path/to/file.txt"` | Absoluter Pfad zur zu schreibenden Datei |

1071| `content` | Zeichenkette | `"file content"` | Inhalt zum Schreiben in die Datei |

1072 

1073##### Edit

1074 

1075Ersetzt eine Zeichenkette in einer vorhandenen Datei.

1076 

1077| Feld | Typ | Beispiel | Beschreibung |

1078| :------------ | :----------- | :-------------------- | :---------------------------------------- |

1079| `file_path` | Zeichenkette | `"/path/to/file.txt"` | Absoluter Pfad zur zu bearbeitenden Datei |

1080| `old_string` | Zeichenkette | `"original text"` | Text zum Suchen und Ersetzen |

1081| `new_string` | Zeichenkette | `"replacement text"` | Ersatztext |

1082| `replace_all` | Boolesch | `false` | Ob alle Vorkommen ersetzt werden sollen |

1083 

1084##### Read

1085 

1086Liest Dateiinhalte.

1087 

1088| Feld | Typ | Beispiel | Beschreibung |

1089| :---------- | :----------- | :-------------------- | :-------------------------------------------- |

1090| `file_path` | Zeichenkette | `"/path/to/file.txt"` | Absoluter Pfad zur zu lesenden Datei |

1091| `offset` | Zahl | `10` | Optionale Zeilennummer zum Starten des Lesens |

1092| `limit` | Zahl | `50` | Optionale Anzahl der zu lesenden Zeilen |

1093 

1094##### Glob

1095 

1096Findet Dateien, die einem Glob-Muster entsprechen.

1097 

1098| Feld | Typ | Beispiel | Beschreibung |

1099| :-------- | :----------- | :--------------- | :------------------------------------------------------------------------------------ |

1100| `pattern` | Zeichenkette | `"**/*.ts"` | Glob-Muster zum Abgleichen von Dateien |

1101| `path` | Zeichenkette | `"/path/to/dir"` | Optionales Verzeichnis zum Durchsuchen. Standardwert ist aktuelles Arbeitsverzeichnis |

1102 

1103##### Grep

1104 

1105Durchsucht Dateiinhalte mit regulären Ausdrücken.

1106 

1107| Feld | Typ | Beispiel | Beschreibung |

1108| :------------ | :----------- | :--------------- | :------------------------------------------------------------------------------------------ |

1109| `pattern` | Zeichenkette | `"TODO.*fix"` | Regex-Muster zum Suchen |

1110| `path` | Zeichenkette | `"/path/to/dir"` | Optionale Datei oder Verzeichnis zum Durchsuchen |

1111| `glob` | Zeichenkette | `"*.ts"` | Optionales Glob-Muster zum Filtern von Dateien |

1112| `output_mode` | Zeichenkette | `"content"` | `"content"`, `"files_with_matches"` oder `"count"`. Standardwert ist `"files_with_matches"` |

1113| `-i` | Boolesch | `true` | Groß-/Kleinschreibung ignorieren |

1114| `multiline` | Boolesch | `false` | Mehrzeiliges Matching aktivieren |

1115 

1116##### WebFetch

1117 

1118Ruft Web-Inhalte ab und verarbeitet sie.

1119 

1120| Feld | Typ | Beispiel | Beschreibung |

1121| :------- | :----------- | :---------------------------- | :---------------------------------------------- |

1122| `url` | Zeichenkette | `"https://example.com/api"` | URL zum Abrufen von Inhalten |

1123| `prompt` | Zeichenkette | `"Extract the API endpoints"` | Prompt zum Ausführen auf dem abgerufenen Inhalt |

1124 

1125##### WebSearch

1126 

1127Durchsucht das Web.

1128 

1129| Feld | Typ | Beispiel | Beschreibung |

1130| :---------------- | :----------- | :----------------------------- | :------------------------------------------------------ |

1131| `query` | Zeichenkette | `"react hooks best practices"` | Suchanfrage |

1132| `allowed_domains` | Array | `["docs.example.com"]` | Optional: Nur Ergebnisse von diesen Domains einbeziehen |

1133| `blocked_domains` | Array | `["spam.example.com"]` | Optional: Ergebnisse von diesen Domains ausschließen |

1134 

1135##### Agent

1136 

1137Spawnt einen [Subagenten](/de/sub-agents).

1138 

1139| Feld | Typ | Beispiel | Beschreibung |

1140| :-------------- | :----------- | :------------------------- | :------------------------------------------------------ |

1141| `prompt` | Zeichenkette | `"Find all API endpoints"` | Die Aufgabe für den Agent |

1142| `description` | Zeichenkette | `"Find API endpoints"` | Kurze Beschreibung der Aufgabe |

1143| `subagent_type` | Zeichenkette | `"Explore"` | Typ des zu verwendenden spezialisierten Agenten |

1144| `model` | Zeichenkette | `"sonnet"` | Optionaler Modell-Alias zum Überschreiben des Standards |

1145 

1146##### AskUserQuestion

1147 

1148Stellt dem Benutzer eine bis vier Multiple-Choice-Fragen.

1149 

1150| Feld | Typ | Beispiel | Beschreibung |

1151| :---------- | :----- | :----------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1152| `questions` | Array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Fragen zum Präsentieren, jeweils mit einer `question`-Zeichenkette, kurzem `header`, `options`-Array und optionalem `multiSelect`-Flag |

1153| `answers` | Objekt | `{"Which framework?": "React"}` | Optional. Ordnet Fragetext der ausgewählten Option-Bezeichnung zu. Multi-Select-Antworten verbinden Bezeichnungen mit Kommas. Claude setzt dieses Feld nicht; geben Sie es über `updatedInput` an, um programmatisch zu antworten |

1154 

1155#### PreToolUse-Entscheidungskontrolle

1156 

1157`PreToolUse`-Hooks können steuern, ob ein Tool-Aufruf fortgesetzt wird. Im Gegensatz zu anderen Hooks, die ein Top-Level-Feld `decision` verwenden, gibt PreToolUse seine Entscheidung in einem `hookSpecificOutput`-Objekt zurück. Dies gibt ihm reichere Kontrolle: vier Ergebnisse (zulassen, verweigern, fragen oder verschieben) plus die Möglichkeit, die Tool-Eingabe vor der Ausführung zu ändern.

1158 

1159| Feld | Beschreibung |

1160| :------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1161| `permissionDecision` | `"allow"` umgeht die Berechtigungsaufforderung. `"deny"` verhindert den Tool-Aufruf. `"ask"` fordert den Benutzer zur Bestätigung auf. `"defer"` beendet den Hook elegant, damit das Tool später fortgesetzt werden kann. [Deny- und Ask-Regeln](/de/permissions#manage-permissions) gelten weiterhin, wenn ein Hook `"allow"` zurückgibt |

1162| `permissionDecisionReason` | Für `"allow"` und `"ask"`, dem Benutzer angezeigt, aber nicht Claude. Für `"deny"`, Claude angezeigt. Für `"defer"`, ignoriert |

1163| `updatedInput` | Ändert die Tool-Eingabeparameter vor der Ausführung. Ersetzt das gesamte Eingabeobjekt, daher müssen Sie unveränderte Felder zusammen mit geänderten einbeziehen. Kombinieren Sie mit `"allow"`, um automatisch zu genehmigen, oder mit `"ask"`, um die geänderte Eingabe dem Benutzer zu zeigen. Für `"defer"`, ignoriert |

1164| `additionalContext` | Zeichenkette, die zu Claudes Kontext vor der Tool-Ausführung hinzugefügt wird. Für `"defer"`, ignoriert. Siehe [Kontext für Claude hinzufügen](#add-context-for-claude) |

1165 

1166Wenn mehrere PreToolUse-Hooks unterschiedliche Entscheidungen zurückgeben, ist die Priorität `deny` > `defer` > `ask` > `allow`.

1167 

1168Wenn ein Hook `"ask"` zurückgibt, enthält der dem Benutzer angezeigte Berechtigungsprompt ein Label, das angibt, woher der Hook stammt: zum Beispiel `[User]`, `[Project]`, `[Plugin]` oder `[Local]`. Dies hilft Benutzern zu verstehen, welche Konfigurationsquelle eine Bestätigung anfordert.

1169 

1170```json theme={null}

1171{

1172 "hookSpecificOutput": {

1173 "hookEventName": "PreToolUse",

1174 "permissionDecision": "allow",

1175 "permissionDecisionReason": "My reason here",

1176 "updatedInput": {

1177 "field_to_modify": "new value"

1178 },

1179 "additionalContext": "Current environment: production. Proceed with caution."

1180 }

1181}

1182```

1183 

1184`AskUserQuestion` und `ExitPlanMode` erfordern Benutzerinteraktion und blockieren normalerweise im [nicht-interaktiven Modus](/de/headless) mit dem `-p`-Flag. Das Zurückgeben von `permissionDecision: "allow"` zusammen mit `updatedInput` erfüllt diese Anforderung: Der Hook liest die Tool-Eingabe von stdin, erfasst die Antwort über Ihre eigene Benutzeroberfläche und gibt sie in `updatedInput` zurück, damit das Tool ohne Aufforderung ausgeführt wird. Das Zurückgeben von `"allow"` allein ist nicht ausreichend für diese Tools. Für `AskUserQuestion` geben Sie das ursprüngliche `questions`-Array zurück und fügen Sie ein [`answers`](#askuserquestion)-Objekt hinzu, das jede Frage auf die gewählte Antwort abbildet.

1185 

1186<Note>

1187 PreToolUse verwendete zuvor Top-Level-Felder `decision` und `reason`, diese sind jedoch für dieses Ereignis veraltet. Verwenden Sie stattdessen `hookSpecificOutput.permissionDecision` und `hookSpecificOutput.permissionDecisionReason`. Die veralteten Werte `"approve"` und `"block"` werden auf `"allow"` und `"deny"` abgebildet. Andere Ereignisse wie PostToolUse und Stop verwenden weiterhin Top-Level-Felder `decision` und `reason` als ihr aktuelles Format.

1188</Note>

1189 

1190#### Ein Tool-Aufruf verschieben

1191 

1192`"defer"` ist für Integrationen, die `claude -p` als Subprozess ausführen und seine JSON-Ausgabe lesen, wie eine Agent SDK-App oder eine benutzerdefinierte Benutzeroberfläche, die auf Claude Code aufgebaut ist. Es ermöglicht diesem aufrufenden Prozess, Claude bei einem Tool-Aufruf zu pausieren, Eingaben über seine eigene Schnittstelle zu erfassen und dort fortzufahren, wo er aufgehört hat. Claude Code respektiert diesen Wert nur im [nicht-interaktiven Modus](/de/headless) mit dem `-p`-Flag. In interaktiven Sitzungen protokolliert es eine Warnung und ignoriert das Hook-Ergebnis.

1193 

1194<Note>

1195 Der Wert `defer` erfordert Claude Code v2.1.89 oder später. Frühere Versionen erkennen ihn nicht und das Tool wird durch den normalen Berechtigungsfluss fortgesetzt.

1196</Note>

1197 

1198Das Tool `AskUserQuestion` ist der typische Fall: Claude möchte den Benutzer etwas fragen, aber es gibt kein Terminal zum Antworten. Der Roundtrip funktioniert so:

1199 

12001. Claude ruft `AskUserQuestion` auf. Der `PreToolUse`-Hook wird ausgelöst.

12012. Der Hook gibt `permissionDecision: "defer"` zurück. Das Tool wird nicht ausgeführt. Der Prozess beendet sich mit `stop_reason: "tool_deferred"` und dem ausstehenden Tool-Aufruf, der im Transkript erhalten bleibt.

12023. Der aufrufende Prozess liest `deferred_tool_use` aus dem SDK-Ergebnis, zeigt die Frage in seiner eigenen Benutzeroberfläche an und wartet auf eine Antwort.

12034. Der aufrufende Prozess führt `claude -p --resume <session-id>` aus. Der gleiche Tool-Aufruf löst `PreToolUse` erneut aus.

12045. Der Hook gibt `permissionDecision: "allow"` mit der Antwort in `updatedInput` zurück. Das Tool wird ausgeführt und Claude setzt fort.

1205 

1206Das Feld `deferred_tool_use` trägt die `id`, den `name` und die `input` des Tools. Die `input` sind die Parameter, die Claude für den Tool-Aufruf generiert hat, erfasst vor der Ausführung:

1207 

1208```json theme={null}

1209{

1210 "type": "result",

1211 "subtype": "success",

1212 "stop_reason": "tool_deferred",

1213 "session_id": "abc123",

1214 "deferred_tool_use": {

1215 "id": "toolu_01abc",

1216 "name": "AskUserQuestion",

1217 "input": { "questions": [{ "question": "Which framework?", "header": "Framework", "options": [{"label": "React"}, {"label": "Vue"}], "multiSelect": false }] }

1218 }

1219}

1220```

1221 

1222Es gibt kein Timeout oder Wiederholungslimit. Die Sitzung bleibt auf der Festplatte, bis Sie sie fortsetzen, unterliegt aber der [`cleanupPeriodDays`](/de/settings#available-settings)-Aufbewahrungssweep, die Sitzungsdateien nach 30 Tagen standardmäßig löscht. Wenn die Antwort nicht bereit ist, wenn Sie fortsetzen, kann der Hook erneut `"defer"` zurückgeben und der Prozess beendet sich auf die gleiche Weise. Der aufrufende Prozess steuert, wann die Schleife unterbrochen wird, indem er schließlich `"allow"` oder `"deny"` vom Hook zurückgibt.

1223 

1224`"defer"` funktioniert nur, wenn Claude einen einzelnen Tool-Aufruf in der Runde macht. Wenn Claude mehrere Tool-Aufrufe gleichzeitig macht, wird `"defer"` mit einer Warnung ignoriert und das Tool wird durch den normalen Berechtigungsfluss fortgesetzt. Die Einschränkung existiert, weil Resume nur einen Tool-Aufruf erneut ausführen kann: Es gibt keine Möglichkeit, einen Aufruf aus einem Batch zu verschieben, ohne die anderen ungelöst zu lassen.

1225 

1226Wenn das verschobene Tool nicht mehr verfügbar ist, wenn Sie fortsetzen, beendet sich der Prozess mit `stop_reason: "tool_deferred_unavailable"` und `is_error: true` bevor der Hook ausgelöst wird. Dies geschieht, wenn ein MCP-Server, der das Tool bereitgestellt hat, für die fortgesetzte Sitzung nicht verbunden ist. Die Nutzlast `deferred_tool_use` ist immer noch enthalten, damit Sie identifizieren können, welches Tool fehlte.

1227 

1228<Warning>

1229 `--resume` stellt den Berechtigungsmodus aus der vorherigen Sitzung nicht wieder her. Übergeben Sie das gleiche `--permission-mode`-Flag bei der Wiederaufnahme, das aktiv war, als das Tool verschoben wurde. Claude Code protokolliert eine Warnung, wenn sich die Modi unterscheiden.

1230</Warning>

1231 

1232### PermissionRequest

1233 

1234Wird ausgeführt, wenn dem Benutzer ein Berechtigungsdialog angezeigt wird.

1235Verwenden Sie [PermissionRequest-Entscheidungskontrolle](#permissionrequest-decision-control), um im Namen des Benutzers zuzulassen oder zu verweigern.

1236 

1237Passt auf Tool-Namen, gleiche Werte wie PreToolUse.

1238 

1239#### PermissionRequest-Eingabe

1240 

1241PermissionRequest-Hooks erhalten `tool_name`- und `tool_input`-Felder wie PreToolUse-Hooks, aber ohne `tool_use_id`. Ein optionales Array `permission_suggestions` enthält die Optionen „Immer zulassen", die der Benutzer normalerweise im Berechtigungsdialog sehen würde. Der Unterschied liegt darin, wann der Hook ausgelöst wird: PermissionRequest-Hooks werden ausgeführt, wenn ein Berechtigungsdialog dem Benutzer angezeigt werden soll, während PreToolUse-Hooks vor der Tool-Ausführung unabhängig vom Berechtigungsstatus ausgeführt werden.

1242 

1243```json theme={null}

1244{

1245 "session_id": "abc123",

1246 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1247 "cwd": "/Users/...",

1248 "permission_mode": "default",

1249 "hook_event_name": "PermissionRequest",

1250 "tool_name": "Bash",

1251 "tool_input": {

1252 "command": "rm -rf node_modules",

1253 "description": "Remove node_modules directory"

1254 },

1255 "permission_suggestions": [

1256 {

1257 "type": "addRules",

1258 "rules": [{ "toolName": "Bash", "ruleContent": "rm -rf node_modules" }],

1259 "behavior": "allow",

1260 "destination": "localSettings"

1261 }

1262 ]

1263}

1264```

1265 

1266#### PermissionRequest-Entscheidungskontrolle

1267 

1268`PermissionRequest`-Hooks können Berechtigungsanfragen zulassen oder verweigern. Zusätzlich zu den [JSON-Ausgabefeldern](#json-output), die für alle Hooks verfügbar sind, kann Ihr Hook-Skript ein `decision`-Objekt mit diesen ereignisspezifischen Feldern zurückgeben:

1269 

1270| Feld | Beschreibung |

1271| :------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1272| `behavior` | `"allow"` gewährt die Berechtigung, `"deny"` verweigert sie. [Deny- und Ask-Regeln](/de/permissions#manage-permissions) gelten weiterhin, daher überschreibt ein Hook, der `"allow"` zurückgibt, keine passende Deny-Regel |

1273| `updatedInput` | Nur für `"allow"`: ändert die Tool-Eingabeparameter vor der Ausführung. Ersetzt das gesamte Eingabeobjekt, daher müssen Sie unveränderte Felder zusammen mit geänderten einbeziehen. Die geänderte Eingabe wird erneut gegen Deny- und Ask-Regeln evaluiert |

1274| `updatedPermissions` | Nur für `"allow"`: Array von [Berechtigungsupdate-Einträgen](#permission-update-entries) zum Anwenden, wie das Hinzufügen einer Allow-Regel oder das Ändern des Session-Berechtigungsmodus |

1275| `message` | Nur für `"deny"`: teilt Claude mit, warum die Berechtigung verweigert wurde |

1276| `interrupt` | Nur für `"deny"`: wenn `true`, stoppt Claude |

1277 

1278```json theme={null}

1279{

1280 "hookSpecificOutput": {

1281 "hookEventName": "PermissionRequest",

1282 "decision": {

1283 "behavior": "allow",

1284 "updatedInput": {

1285 "command": "npm run lint"

1286 }

1287 }

1288 }

1289}

1290```

1291 

1292#### Berechtigungsupdate-Einträge

1293 

1294Das Ausgabefeld `updatedPermissions` und das [`permission_suggestions`-Eingabefeld](#permissionrequest-input) verwenden beide das gleiche Array von Einträgen. Jeder Eintrag hat einen `type`, der seine anderen Felder bestimmt, und ein `destination`, das steuert, wo die Änderung geschrieben wird.

1295 

1296| `type` | Felder | Effekt |

1297| :------------------ | :--------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1298| `addRules` | `rules`, `behavior`, `destination` | Fügt Berechtigungsregeln hinzu. `rules` ist ein Array von `{toolName, ruleContent?}` Objekten. Lassen Sie `ruleContent` weg, um das ganze Tool zu treffen. `behavior` ist `"allow"`, `"deny"` oder `"ask"` |

1299| `replaceRules` | `rules`, `behavior`, `destination` | Ersetzt alle Regeln des gegebenen `behavior` am `destination` mit den bereitgestellten `rules` |

1300| `removeRules` | `rules`, `behavior`, `destination` | Entfernt passende Regeln des gegebenen `behavior` |

1301| `setMode` | `mode`, `destination` | Ändert den Berechtigungsmodus. Gültige Modi sind `default`, `acceptEdits`, `dontAsk`, `bypassPermissions` und `plan` |

1302| `addDirectories` | `directories`, `destination` | Fügt Arbeitsverzeichnisse hinzu. `directories` ist ein Array von Pfad-Zeichenketten |

1303| `removeDirectories` | `directories`, `destination` | Entfernt Arbeitsverzeichnisse |

1304 

1305<Note>

1306 `setMode` mit `bypassPermissions` nimmt nur Auswirkungen an, wenn die Sitzung mit Bypass-Modus bereits verfügbar gestartet wurde: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions` oder `permissions.defaultMode: "bypassPermissions"` in Einstellungen, und der Modus ist nicht durch [`permissions.disableBypassPermissionsMode`](/de/permissions#managed-settings) deaktiviert. Andernfalls ist das Update ein No-Op. `bypassPermissions` wird niemals als `defaultMode` persistiert, unabhängig von `destination`.

1307</Note>

1308 

1309Das Feld `destination` auf jedem Eintrag bestimmt, ob die Änderung im Speicher bleibt oder in einer Einstellungsdatei persistiert wird.

1310 

1311| `destination` | Schreibt zu |

1312| :---------------- | :------------------------------------------------------ |

1313| `session` | Nur im Speicher, wird verworfen, wenn die Sitzung endet |

1314| `localSettings` | `.claude/settings.local.json` |

1315| `projectSettings` | `.claude/settings.json` |

1316| `userSettings` | `~/.claude/settings.json` |

1317 

1318Ein Hook kann eines der `permission_suggestions` widerspiegeln, die er als seine eigene `updatedPermissions`-Ausgabe erhalten hat, was gleichbedeutend mit der Auswahl dieser Option „Immer zulassen" durch den Benutzer im Dialog ist.

1319 

1320### PostToolUse

1321 

1322Wird unmittelbar nach erfolgreichem Abschluss eines Tools ausgeführt.

1323 

1324Passt auf Tool-Namen, gleiche Werte wie PreToolUse.

1325 

1326#### PostToolUse-Eingabe

1327 

1328`PostToolUse`-Hooks werden ausgelöst, nachdem ein Tool bereits erfolgreich ausgeführt wurde. Die Eingabe enthält sowohl `tool_input`, die an das Tool gesendeten Argumente, als auch `tool_response`, das Ergebnis, das es zurückgegeben hat. Das genaue Schema für beide hängt vom Tool ab.

1329 

1330```json theme={null}

1331{

1332 "session_id": "abc123",

1333 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1334 "cwd": "/Users/...",

1335 "permission_mode": "default",

1336 "hook_event_name": "PostToolUse",

1337 "tool_name": "Write",

1338 "tool_input": {

1339 "file_path": "/path/to/file.txt",

1340 "content": "file content"

1341 },

1342 "tool_response": {

1343 "filePath": "/path/to/file.txt",

1344 "success": true

1345 },

1346 "tool_use_id": "toolu_01ABC123...",

1347 "duration_ms": 12

1348}

1349```

1350 

1351| Feld | Beschreibung |

1352| :------------ | :----------------------------------------------------------------------------------------------------------------------------------------- |

1353| `duration_ms` | Optional. Tool-Ausführungszeit in Millisekunden. Schließt Zeit aus, die in Berechtigungsaufforderungen und PreToolUse-Hooks verbracht wird |

1354 

1355#### PostToolUse-Entscheidungskontrolle

1356 

1357`PostToolUse`-Hooks können Claude nach der Tool-Ausführung Feedback geben. Zusätzlich zu den [JSON-Ausgabefeldern](#json-output), die für alle Hooks verfügbar sind, kann Ihr Hook-Skript diese ereignisspezifischen Felder zurückgeben:

1358 

1359| Feld | Beschreibung |

1360| :--------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------- |

1361| `decision` | `"block"` fordert Claude mit dem `reason` auf. Weglassen, um die Aktion fortzusetzen |

1362| `reason` | Erklärung, die Claude angezeigt wird, wenn `decision` `"block"` ist |

1363| `additionalContext` | Zeichenkette, die zu Claudes Kontext zusammen mit dem Tool-Ergebnis hinzugefügt wird. Siehe [Kontext für Claude hinzufügen](#add-context-for-claude) |

1364| `updatedToolOutput` | Ersetzt die Ausgabe des Tools durch den bereitgestellten Wert vor dem Senden an Claude. Der Wert muss der Ausgabeform des Tools entsprechen |

1365| `updatedMCPToolOutput` | Ersetzt die Ausgabe nur für [MCP-Tools](#match-mcp-tools). Bevorzugen Sie `updatedToolOutput`, das für alle Tools funktioniert |

1366 

1367Das Beispiel unten ersetzt die Ausgabe eines `Bash`-Aufrufs. Der Ersatzwert entspricht der Ausgabeform des `Bash`-Tools:

1368 

1369```json theme={null}

1370{

1371 "hookSpecificOutput": {

1372 "hookEventName": "PostToolUse",

1373 "additionalContext": "Additional information for Claude",

1374 "updatedToolOutput": {

1375 "stdout": "[redacted]",

1376 "stderr": "",

1377 "interrupted": false,

1378 "isImage": false

1379 }

1380 }

1381}

1382```

1383 

1384<Warning>

1385 `updatedToolOutput` ändert nur das, was Claude sieht. Das Tool ist bereits ausgeführt worden, wenn der Hook ausgelöst wird, daher haben alle geschriebenen Dateien, ausgeführten Befehle oder gesendeten Netzwerkanfragen bereits Auswirkungen. Telemetrie wie OpenTelemetry-Tool-Spans und Analyseereignisse erfassen auch die ursprüngliche Ausgabe, bevor der Hook ausgeführt wird. Um einen Tool-Aufruf zu verhindern oder zu ändern, bevor er ausgeführt wird, verwenden Sie stattdessen einen [PreToolUse](#pretooluse)-Hook.

1386 

1387 Der Ersatzwert muss der Ausgabeform des Tools entsprechen. Eingebaute Tools geben strukturierte Objekte anstelle von einfachen Zeichenketten zurück. Zum Beispiel gibt `Bash` ein Objekt mit `stdout`-, `stderr`-, `interrupted`- und `isImage`-Feldern zurück. Für eingebaute Tools wird ein Wert, der nicht dem Ausgabeschema des Tools entspricht, ignoriert und die ursprüngliche Ausgabe wird verwendet. MCP-Tool-Ausgabe wird ohne Schema-Validierung durchgeleitet. Das Entfernen von Fehlerdetails, die Claude benötigt, kann dazu führen, dass er bei einer falschen Annahme fortfährt.

1388</Warning>

1389 

1390### PostToolUseFailure

1391 

1392Wird ausgeführt, wenn eine Tool-Ausführung fehlschlägt. Dieses Ereignis wird für Tool-Aufrufe ausgelöst, die Fehler werfen oder Fehlerergebnisse zurückgeben. Verwenden Sie dies, um Fehler zu protokollieren, Warnungen zu senden oder korrektes Feedback an Claude zu geben.

1393 

1394Passt auf Tool-Namen, gleiche Werte wie PreToolUse.

1395 

1396#### PostToolUseFailure-Eingabe

1397 

1398PostToolUseFailure-Hooks erhalten die gleichen `tool_name`- und `tool_input`-Felder wie PostToolUse, zusammen mit Fehlerinformationen als Top-Level-Felder:

1399 

1400```json theme={null}

1401{

1402 "session_id": "abc123",

1403 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1404 "cwd": "/Users/...",

1405 "permission_mode": "default",

1406 "hook_event_name": "PostToolUseFailure",

1407 "tool_name": "Bash",

1408 "tool_input": {

1409 "command": "npm test",

1410 "description": "Run test suite"

1411 },

1412 "tool_use_id": "toolu_01ABC123...",

1413 "error": "Command exited with non-zero status code 1",

1414 "is_interrupt": false,

1415 "duration_ms": 4187

1416}

1417```

1418 

1419| Feld | Beschreibung |

1420| :------------- | :----------------------------------------------------------------------------------------------------------------------------------------- |

1421| `error` | Zeichenkette, die beschreibt, was schief gelaufen ist |

1422| `is_interrupt` | Optionaler Boolesch, der angibt, ob der Fehler durch Benutzerunterbrechung verursacht wurde |

1423| `duration_ms` | Optional. Tool-Ausführungszeit in Millisekunden. Schließt Zeit aus, die in Berechtigungsaufforderungen und PreToolUse-Hooks verbracht wird |

1424 

1425#### PostToolUseFailure-Entscheidungskontrolle

1426 

1427`PostToolUseFailure`-Hooks können Claude nach einem Tool-Fehler Kontext geben. Zusätzlich zu den [JSON-Ausgabefeldern](#json-output), die für alle Hooks verfügbar sind, kann Ihr Hook-Skript diese ereignisspezifischen Felder zurückgeben:

1428 

1429| Feld | Beschreibung |

1430| :------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------- |

1431| `additionalContext` | Zeichenkette, die zu Claudes Kontext zusammen mit dem Fehler hinzugefügt wird. Siehe [Kontext für Claude hinzufügen](#add-context-for-claude) |

1432 

1433```json theme={null}

1434{

1435 "hookSpecificOutput": {

1436 "hookEventName": "PostToolUseFailure",

1437 "additionalContext": "Additional information about the failure for Claude"

1438 }

1439}

1440```

1441 

1442### PostToolBatch

1443 

1444Wird einmal ausgeführt, nachdem jeder Tool-Aufruf in einem Batch aufgelöst wurde, bevor Claude Code die nächste Anfrage an das Modell sendet. `PostToolUse` wird einmal pro Tool ausgeführt, was bedeutet, dass es gleichzeitig ausgeführt wird, wenn Claude parallele Tool-Aufrufe macht. `PostToolBatch` wird genau einmal mit dem vollständigen Batch ausgeführt, daher ist es der richtige Ort, um Kontext einzufügen, der von der Menge der Tools abhängt, die ausgeführt wurden, anstatt von einem einzelnen Tool. Es gibt keinen Matcher für dieses Ereignis.

1445 

1446#### PostToolBatch-Eingabe

1447 

1448Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten PostToolBatch-Hooks `tool_calls`, ein Array, das jeden Tool-Aufruf im Batch beschreibt:

1449 

1450```json theme={null}

1451{

1452 "session_id": "abc123",

1453 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1454 "cwd": "/Users/...",

1455 "permission_mode": "default",

1456 "hook_event_name": "PostToolBatch",

1457 "tool_calls": [

1458 {

1459 "tool_name": "Read",

1460 "tool_input": {"file_path": "/.../ledger/accounts.py"},

1461 "tool_use_id": "toolu_01...",

1462 "tool_response": " 1\tfrom __future__ import annotations\n 2\t..."

1463 },

1464 {

1465 "tool_name": "Read",

1466 "tool_input": {"file_path": "/.../ledger/transactions.py"},

1467 "tool_use_id": "toolu_02...",

1468 "tool_response": " 1\tfrom __future__ import annotations\n 2\t..."

1469 }

1470 ]

1471}

1472```

1473 

1474`tool_response` enthält den gleichen Inhalt, den das Modell im entsprechenden `tool_result`-Block erhält. Der Wert ist eine serialisierte Zeichenkette oder ein Content-Block-Array, genau wie das Tool es ausgegeben hat. Für `Read` bedeutet das Zeilennummern-Präfix-Text anstelle von rohen Dateiinhalten. Antworten können groß sein, daher analysieren Sie nur die Felder, die Sie benötigen.

1475 

1476<Note>

1477 Die Form von `tool_response` unterscheidet sich von der von `PostToolUse`. `PostToolUse` übergibt das strukturierte `Output`-Objekt des Tools, wie `{filePath: "...", success: true}` für `Write`; `PostToolBatch` übergibt den serialisierten `tool_result`-Inhalt, den das Modell sieht.

1478</Note>

1479 

1480#### PostToolBatch-Entscheidungskontrolle

1481 

1482`PostToolBatch`-Hooks können Kontext für Claude einfügen. Zusätzlich zu den [JSON-Ausgabefeldern](#json-output), die für alle Hooks verfügbar sind, kann Ihr Hook-Skript diese ereignisspezifischen Felder zurückgeben:

1483 

1484| Feld | Beschreibung |

1485| :------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1486| `additionalContext` | Kontext-Zeichenkette, die einmal vor dem nächsten Modell-Aufruf eingefügt wird. Siehe [Kontext für Claude hinzufügen](#add-context-for-claude) für Lieferdetails, was Sie darin einfügen sollten und wie fortgesetzte Sitzungen vergangene Werte handhaben |

1487 

1488```json theme={null}

1489{

1490 "hookSpecificOutput": {

1491 "hookEventName": "PostToolBatch",

1492 "additionalContext": "These files are part of the ledger module. Run pytest before marking the task complete."

1493 }

1494}

1495```

1496 

1497Das Zurückgeben von `decision: "block"` oder `continue: false` stoppt die agentengesteuerte Schleife vor dem nächsten Modell-Aufruf.

1498 

1499### PermissionDenied

1500 

1501Wird ausgeführt, wenn der [Auto-Mode](/de/permission-modes#eliminate-prompts-with-auto-mode)-Klassifizierer einen Tool-Aufruf verweigert. Dieser Hook wird nur im Auto-Mode ausgelöst: Er wird nicht ausgeführt, wenn Sie einen Berechtigungsdialog manuell verweigern, wenn ein `PreToolUse`-Hook einen Aufruf blockiert oder wenn eine `deny`-Regel passt. Verwenden Sie ihn, um Klassifizierer-Ablehnungen zu protokollieren, die Konfiguration anzupassen oder dem Modell zu sagen, dass es den Tool-Aufruf möglicherweise erneut versuchen kann.

1502 

1503Passt auf Tool-Namen, gleiche Werte wie PreToolUse.

1504 

1505#### PermissionDenied-Eingabe

1506 

1507Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten PermissionDenied-Hooks `tool_name`, `tool_input`, `tool_use_id` und `reason`.

1508 

1509```json theme={null}

1510{

1511 "session_id": "abc123",

1512 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1513 "cwd": "/Users/...",

1514 "permission_mode": "auto",

1515 "hook_event_name": "PermissionDenied",

1516 "tool_name": "Bash",

1517 "tool_input": {

1518 "command": "rm -rf /tmp/build",

1519 "description": "Clean build directory"

1520 },

1521 "tool_use_id": "toolu_01ABC123...",

1522 "reason": "Auto mode denied: command targets a path outside the project"

1523}

1524```

1525 

1526| Feld | Beschreibung |

1527| :------- | :------------------------------------------------------------------------ |

1528| `reason` | Die Erklärung des Klassifizierers, warum der Tool-Aufruf verweigert wurde |

1529 

1530#### PermissionDenied-Entscheidungskontrolle

1531 

1532PermissionDenied-Hooks können dem Modell sagen, dass es den verweigerten Tool-Aufruf möglicherweise erneut versuchen kann. Geben Sie ein JSON-Objekt mit `hookSpecificOutput.retry` auf `true` zurück:

1533 

1534```json theme={null}

1535{

1536 "hookSpecificOutput": {

1537 "hookEventName": "PermissionDenied",

1538 "retry": true

1539 }

1540}

1541```

1542 

1543Wenn `retry` `true` ist, fügt Claude Code eine Nachricht zum Gespräch hinzu, die dem Modell mitteilt, dass es den Tool-Aufruf möglicherweise erneut versuchen kann. Die Ablehnung selbst wird nicht rückgängig gemacht. Wenn Ihr Hook keine JSON zurückgibt oder `retry: false` zurückgibt, bleibt die Ablehnung bestehen und das Modell erhält die ursprüngliche Ablehnungsmeldung.

1544 

1545### Notification

1546 

1547Wird ausgeführt, wenn Claude Code Benachrichtigungen sendet. Passt auf Benachrichtigungstyp: `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response`. Matcher weglassen, um Hooks für alle Benachrichtigungstypen auszuführen.

1548 

1549Verwenden Sie separate Matcher, um verschiedene Handler je nach Benachrichtigungstyp auszuführen. Diese Konfiguration löst ein berechtigungsspezifisches Warnungsskript aus, wenn Claude Genehmigung benötigt, und eine andere Benachrichtigung, wenn Claude untätig war:

1550 

1551```json theme={null}

1552{

1553 "hooks": {

1554 "Notification": [

1555 {

1556 "matcher": "permission_prompt",

1557 "hooks": [

1558 {

1559 "type": "command",

1560 "command": "/path/to/permission-alert.sh"

1561 }

1562 ]

1563 },

1564 {

1565 "matcher": "idle_prompt",

1566 "hooks": [

1567 {

1568 "type": "command",

1569 "command": "/path/to/idle-notification.sh"

1570 }

1571 ]

1572 }

1573 ]

1574 }

1575}

1576```

1577 

1578#### Notification-Eingabe

1579 

1580Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten Notification-Hooks `message` mit dem Benachrichtigungstext, ein optionales `title` und `notification_type`, das angibt, welcher Typ ausgelöst wurde.

1581 

1582```json theme={null}

1583{

1584 "session_id": "abc123",

1585 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1586 "cwd": "/Users/...",

1587 "hook_event_name": "Notification",

1588 "message": "Claude needs your permission to use Bash",

1589 "title": "Permission needed",

1590 "notification_type": "permission_prompt"

1591}

1592```

1593 

1594Notification-Hooks können Benachrichtigungen nicht blockieren oder ändern. Sie sind für Nebenwirkungen wie das Weiterleiten der Benachrichtigung an einen externen Service vorgesehen. Die [gemeinsamen JSON-Ausgabefelder](#json-output) wie `systemMessage` gelten.

1595 

1596### SubagentStart

1597 

1598Wird ausgeführt, wenn ein Claude Code-Subagent über das Agent-Tool spawnt wird. Unterstützt Matcher zum Filtern nach Agent-Typname (eingebaute Agents wie `general-purpose`, `Explore`, `Plan` oder benutzerdefinierte Agent-Namen aus `.claude/agents/`).

1599 

1600#### SubagentStart-Eingabe

1601 

1602Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten SubagentStart-Hooks `agent_id` mit der eindeutigen Kennung für den Subagenten und `agent_type` mit dem Agent-Namen (eingebaute Agents wie `"general-purpose"`, `"Explore"`, `"Plan"` oder benutzerdefinierte Agent-Namen).

1603 

1604```json theme={null}

1605{

1606 "session_id": "abc123",

1607 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1608 "cwd": "/Users/...",

1609 "hook_event_name": "SubagentStart",

1610 "agent_id": "agent-abc123",

1611 "agent_type": "Explore"

1612}

1613```

1614 

1615SubagentStart-Hooks können die Subagenten-Erstellung nicht blockieren, können aber Kontext in den Subagenten injizieren. Zusätzlich zu den [JSON-Ausgabefeldern](#json-output), die für alle Hooks verfügbar sind, können Sie zurückgeben:

1616 

1617| Feld | Beschreibung |

1618| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1619| `additionalContext` | Zeichenkette, die zu Claudes Kontext am Anfang des Gesprächs des Subagenten hinzugefügt wird, vor seinem ersten Prompt. Siehe [Kontext für Claude hinzufügen](#add-context-for-claude) |

1620 

1621```json theme={null}

1622{

1623 "hookSpecificOutput": {

1624 "hookEventName": "SubagentStart",

1625 "additionalContext": "Follow security guidelines for this task"

1626 }

1627}

1628```

1629 

1630### SubagentStop

1631 

1632Wird ausgeführt, wenn ein Claude Code-Subagent fertig mit der Antwort ist. Passt auf Agent-Typ, gleiche Werte wie SubagentStart.

1633 

1634#### SubagentStop-Eingabe

1635 

1636Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten SubagentStop-Hooks `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path` und `last_assistant_message`. Das Feld `agent_type` ist der Wert, der zum Filtern von Matchern verwendet wird. Der `transcript_path` ist das Transkript der Hauptsitzung, während `agent_transcript_path` das eigene Transkript des Subagenten ist, das in einem verschachtelten `subagents/`-Ordner gespeichert ist. Das Feld `last_assistant_message` enthält den Textinhalt der letzten Antwort des Subagenten, daher können Hooks darauf zugreifen, ohne die Transkript-Datei zu analysieren.

1637 

1638```json theme={null}

1639{

1640 "session_id": "abc123",

1641 "transcript_path": "~/.claude/projects/.../abc123.jsonl",

1642 "cwd": "/Users/...",

1643 "permission_mode": "default",

1644 "hook_event_name": "SubagentStop",

1645 "stop_hook_active": false,

1646 "agent_id": "def456",

1647 "agent_type": "Explore",

1648 "agent_transcript_path": "~/.claude/projects/.../abc123/subagents/agent-def456.jsonl",

1649 "last_assistant_message": "Analysis complete. Found 3 potential issues..."

1650}

1651```

1652 

1653SubagentStop-Hooks verwenden das gleiche Entscheidungskontrollformat wie [Stop-Hooks](#stop-decision-control).

1654 

1655### TaskCreated

1656 

1657Wird ausgeführt, wenn eine Aufgabe über das `TaskCreate`-Tool erstellt wird. Verwenden Sie dies, um Benennungskonventionen durchzusetzen, Aufgabenbeschreibungen zu erfordern oder zu verhindern, dass bestimmte Aufgaben erstellt werden.

1658 

1659Wenn ein `TaskCreated`-Hook mit Code 2 beendet wird, wird die Aufgabe nicht erstellt und die stderr-Nachricht wird dem Modell als Feedback zurückgegeben. Um den Teammate stattdessen vollständig zu stoppen, geben Sie JSON mit `{"continue": false, "stopReason": "..."}` zurück. TaskCreated-Hooks unterstützen keine Matcher und werden bei jedem Auftreten ausgelöst.

1660 

1661#### TaskCreated-Eingabe

1662 

1663Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten TaskCreated-Hooks `task_id`, `task_subject` und optional `task_description`, `teammate_name` und `team_name`.

1664 

1665```json theme={null}

1666{

1667 "session_id": "abc123",

1668 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1669 "cwd": "/Users/...",

1670 "permission_mode": "default",

1671 "hook_event_name": "TaskCreated",

1672 "task_id": "task-001",

1673 "task_subject": "Implement user authentication",

1674 "task_description": "Add login and signup endpoints",

1675 "teammate_name": "implementer",

1676 "team_name": "my-project"

1677}

1678```

1679 

1680| Feld | Beschreibung |

1681| :----------------- | :-------------------------------------------------------- |

1682| `task_id` | Kennung der zu erstellenden Aufgabe |

1683| `task_subject` | Titel der Aufgabe |

1684| `task_description` | Detaillierte Beschreibung der Aufgabe. Kann fehlen |

1685| `teammate_name` | Name des Teammates, das die Aufgabe erstellt. Kann fehlen |

1686| `team_name` | Name des Teams. Kann fehlen |

1687 

1688#### TaskCreated-Entscheidungskontrolle

1689 

1690TaskCreated-Hooks unterstützen zwei Möglichkeiten, die Aufgabenerstellung zu steuern:

1691 

1692* **Exit-Code 2**: Die Aufgabe wird nicht erstellt und die stderr-Nachricht wird dem Modell als Feedback zurückgegeben.

1693* **JSON `{"continue": false, "stopReason": "..."}`**: Stoppt den Teammate vollständig, was dem `Stop`-Hook-Verhalten entspricht. Der `stopReason` wird dem Benutzer angezeigt.

1694 

1695Dieses Beispiel blockiert Aufgaben, deren Betreff nicht dem erforderlichen Format entspricht:

1696 

1697```bash theme={null}

1698#!/bin/bash

1699INPUT=$(cat)

1700TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')

1701 

1702if [[ ! "$TASK_SUBJECT" =~ ^\[TICKET-[0-9]+\] ]]; then

1703 echo "Task subject must start with a ticket number, e.g. '[TICKET-123] Add feature'" >&2

1704 exit 2

1705fi

1706 

1707exit 0

1708```

1709 

1710### TaskCompleted

1711 

1712Wird ausgeführt, wenn eine Aufgabe als abgeschlossen markiert wird. Dies wird in zwei Situationen ausgelöst: wenn ein Agent eine Aufgabe explizit über das TaskUpdate-Tool als abgeschlossen markiert, oder wenn ein [Agent-Team](/de/agent-teams)-Teammate seine Runde mit laufenden Aufgaben beendet. Verwenden Sie dies, um Abschluss-Kriterien wie bestandene Tests oder Lint-Checks durchzusetzen, bevor eine Aufgabe geschlossen werden kann.

1713 

1714Wenn ein `TaskCompleted`-Hook mit Code 2 beendet wird, wird die Aufgabe nicht als abgeschlossen markiert und die stderr-Nachricht wird dem Modell als Feedback zurückgegeben. Um den Teammate stattdessen vollständig zu stoppen, geben Sie JSON mit `{"continue": false, "stopReason": "..."}` zurück. TaskCompleted-Hooks unterstützen keine Matcher und werden bei jedem Auftreten ausgelöst.

1715 

1716#### TaskCompleted-Eingabe

1717 

1718Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten TaskCompleted-Hooks `task_id`, `task_subject` und optional `task_description`, `teammate_name` und `team_name`.

1719 

1720```json theme={null}

1721{

1722 "session_id": "abc123",

1723 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1724 "cwd": "/Users/...",

1725 "permission_mode": "default",

1726 "hook_event_name": "TaskCompleted",

1727 "task_id": "task-001",

1728 "task_subject": "Implement user authentication",

1729 "task_description": "Add login and signup endpoints",

1730 "teammate_name": "implementer",

1731 "team_name": "my-project"

1732}

1733```

1734 

1735| Feld | Beschreibung |

1736| :----------------- | :---------------------------------------------------------- |

1737| `task_id` | Kennung der abgeschlossenen Aufgabe |

1738| `task_subject` | Titel der Aufgabe |

1739| `task_description` | Detaillierte Beschreibung der Aufgabe. Kann fehlen |

1740| `teammate_name` | Name des Teammates, das die Aufgabe abschließt. Kann fehlen |

1741| `team_name` | Name des Teams. Kann fehlen |

1742 

1743#### TaskCompleted-Entscheidungskontrolle

1744 

1745TaskCompleted-Hooks unterstützen zwei Möglichkeiten, den Aufgabenabschluss zu steuern:

1746 

1747* **Exit-Code 2**: Die Aufgabe wird nicht als abgeschlossen markiert und die stderr-Nachricht wird dem Modell als Feedback zurückgegeben.

1748* **JSON `{"continue": false, "stopReason": "..."}`**: Stoppt den Teammate vollständig, was dem `Stop`-Hook-Verhalten entspricht. Der `stopReason` wird dem Benutzer angezeigt.

1749 

1750Dieses Beispiel führt Tests aus und blockiert den Aufgabenabschluss, wenn sie fehlschlagen:

1751 

1752```bash theme={null}

1753#!/bin/bash

1754INPUT=$(cat)

1755TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')

1756 

1757# Führen Sie die Test-Suite aus

1758if ! npm test 2>&1; then

1759 echo "Tests not passing. Fix failing tests before completing: $TASK_SUBJECT" >&2

1760 exit 2

1761fi

1762 

1763exit 0

1764```

1765 

1766### Stop

1767 

1768Wird ausgeführt, wenn der Haupt-Claude Code-Agent fertig mit der Antwort ist. Wird nicht ausgeführt, wenn der Stopp durch eine Benutzerunterbrechung verursacht wurde. API-Fehler lösen stattdessen [StopFailure](#stopfailure) aus.

1769 

1770#### Stop-Eingabe

1771 

1772Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten Stop-Hooks `stop_hook_active` und `last_assistant_message`. Das Feld `stop_hook_active` ist `true`, wenn Claude Code bereits als Ergebnis eines Stop-Hooks fortgesetzt wird. Überprüfen Sie diesen Wert oder verarbeiten Sie das Transkript, um zu verhindern, dass Claude Code unbegrenzt läuft. Das Feld `last_assistant_message` enthält den Textinhalt von Claudes letzter Antwort, daher können Hooks darauf zugreifen, ohne die Transkript-Datei zu analysieren.

1773 

1774```json theme={null}

1775{

1776 "session_id": "abc123",

1777 "transcript_path": "~/.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1778 "cwd": "/Users/...",

1779 "permission_mode": "default",

1780 "hook_event_name": "Stop",

1781 "stop_hook_active": true,

1782 "last_assistant_message": "I've completed the refactoring. Here's a summary..."

1783}

1784```

1785 

1786#### Stop-Entscheidungskontrolle

1787 

1788`Stop`- und `SubagentStop`-Hooks können steuern, ob Claude fortgesetzt wird. Zusätzlich zu den [JSON-Ausgabefeldern](#json-output), die für alle Hooks verfügbar sind, kann Ihr Hook-Skript diese ereignisspezifischen Felder zurückgeben:

1789 

1790| Feld | Beschreibung |

1791| :--------- | :------------------------------------------------------------------------------------------------ |

1792| `decision` | `"block"` verhindert, dass Claude stoppt. Weglassen, um Claude zu stoppen |

1793| `reason` | Erforderlich, wenn `decision` `"block"` ist. Teilt Claude mit, warum es fortgesetzt werden sollte |

1794 

1795```json theme={null}

1796{

1797 "decision": "block",

1798 "reason": "Must be provided when Claude is blocked from stopping"

1799}

1800```

1801 

1802### StopFailure

1803 

1804Wird stattdessen von [Stop](#stop) ausgeführt, wenn die Runde aufgrund eines API-Fehlers endet. Ausgabe und Exit-Code werden ignoriert. Verwenden Sie dies, um Fehler zu protokollieren, Warnungen zu senden oder Wiederherstellungsmaßnahmen zu ergreifen, wenn Claude aufgrund von Ratenlimits, Authentifizierungsproblemen oder anderen API-Fehlern keine Antwort abschließen kann.

1805 

1806#### StopFailure-Eingabe

1807 

1808Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten StopFailure-Hooks `error`, optionales `error_details` und optionales `last_assistant_message`. Das Feld `error` identifiziert den Fehlertyp und wird zum Filtern von Matchern verwendet.

1809 

1810| Feld | Beschreibung |

1811| :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1812| `error` | Fehlertyp: `rate_limit`, `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `invalid_request`, `server_error`, `max_output_tokens` oder `unknown` |

1813| `error_details` | Zusätzliche Details zum Fehler, falls verfügbar |

1814| `last_assistant_message` | Der gerenderte Fehlertext, der in der Konversation angezeigt wird. Im Gegensatz zu `Stop` und `SubagentStop`, wo dieses Feld Claudes Gesprächsausgabe enthält, enthält es für `StopFailure` die API-Fehlerzeichenkette selbst, wie `"API Error: Rate limit reached"` |

1815 

1816```json theme={null}

1817{

1818 "session_id": "abc123",

1819 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1820 "cwd": "/Users/...",

1821 "hook_event_name": "StopFailure",

1822 "error": "rate_limit",

1823 "error_details": "429 Too Many Requests",

1824 "last_assistant_message": "API Error: Rate limit reached"

1825}

1826```

1827 

1828StopFailure-Hooks haben keine Entscheidungskontrolle. Sie werden nur zu Benachrichtigungs- und Protokollierungszwecken ausgeführt.

1829 

1830### TeammateIdle

1831 

1832Wird ausgeführt, wenn ein [Agent-Team](/de/agent-teams)-Teammate nach Abschluss seiner Runde untätig werden soll. Verwenden Sie dies, um Qualitätsgates vor dem Stoppen eines Teammates durchzusetzen, wie das Erfordern von bestandenen Lint-Checks oder das Überprüfen, dass Ausgabedateien vorhanden sind.

1833 

1834Wenn ein `TeammateIdle`-Hook mit Code 2 beendet wird, erhält der Teammate die stderr-Nachricht als Feedback und arbeitet weiter, anstatt untätig zu werden. Um den Teammate stattdessen vollständig zu stoppen, geben Sie JSON mit `{"continue": false, "stopReason": "..."}` zurück. TeammateIdle-Hooks unterstützen keine Matcher und werden bei jedem Auftreten ausgelöst.

1835 

1836#### TeammateIdle-Eingabe

1837 

1838Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten TeammateIdle-Hooks `teammate_name` und `team_name`.

1839 

1840```json theme={null}

1841{

1842 "session_id": "abc123",

1843 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1844 "cwd": "/Users/...",

1845 "permission_mode": "default",

1846 "hook_event_name": "TeammateIdle",

1847 "teammate_name": "researcher",

1848 "team_name": "my-project"

1849}

1850```

1851 

1852| Feld | Beschreibung |

1853| :-------------- | :------------------------------------------ |

1854| `teammate_name` | Name des Teammates, das untätig werden soll |

1855| `team_name` | Name des Teams |

1856 

1857#### TeammateIdle-Entscheidungskontrolle

1858 

1859TeammateIdle-Hooks unterstützen zwei Möglichkeiten, das Teammate-Verhalten zu steuern:

1860 

1861* **Exit-Code 2**: Der Teammate erhält die stderr-Nachricht als Feedback und arbeitet weiter, anstatt untätig zu werden.

1862* **JSON `{"continue": false, "stopReason": "..."}`**: Stoppt den Teammate vollständig, was dem `Stop`-Hook-Verhalten entspricht. Der `stopReason` wird dem Benutzer angezeigt.

1863 

1864Dieses Beispiel prüft, dass ein Build-Artefakt vorhanden ist, bevor ein Teammate untätig werden darf:

1865 

1866```bash theme={null}

1867#!/bin/bash

1868 

1869if [ ! -f "./dist/output.js" ]; then

1870 echo "Build artifact missing. Run the build before stopping." >&2

1871 exit 2

1872fi

1873 

1874exit 0

1875```

1876 

1877### ConfigChange

1878 

1879Wird ausgeführt, wenn sich eine Konfigurationsdatei während einer Sitzung ändert. Verwenden Sie dies, um Einstellungsänderungen zu überprüfen, Sicherheitsrichtlinien durchzusetzen oder nicht autorisierte Änderungen an Konfigurationsdateien zu blockieren.

1880 

1881ConfigChange-Hooks werden für Änderungen an Einstellungsdateien, verwalteten Richtlinieneinstellungen und Skill-Dateien ausgelöst. Das Feld `source` in der Eingabe teilt Ihnen mit, welche Art von Konfiguration sich geändert hat, und das optionale Feld `file_path` gibt den Pfad zur geänderten Datei an.

1882 

1883Der Matcher filtert auf die Konfigurationsquelle:

1884 

1885| Matcher | Wann es ausgelöst wird |

1886| :----------------- | :------------------------------------------------ |

1887| `user_settings` | `~/.claude/settings.json` ändert sich |

1888| `project_settings` | `.claude/settings.json` ändert sich |

1889| `local_settings` | `.claude/settings.local.json` ändert sich |

1890| `policy_settings` | Verwaltete Richtlinieneinstellungen ändern sich |

1891| `skills` | Eine Skill-Datei in `.claude/skills/` ändert sich |

1892 

1893Dieses Beispiel protokolliert alle Konfigurationsänderungen für Sicherheitsaudits:

1894 

1895```json theme={null}

1896{

1897 "hooks": {

1898 "ConfigChange": [

1899 {

1900 "hooks": [

1901 {

1902 "type": "command",

1903 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/audit-config-change.sh"

1904 }

1905 ]

1906 }

1907 ]

1908 }

1909}

1910```

1911 

1912#### ConfigChange-Eingabe

1913 

1914Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten ConfigChange-Hooks `source` und optional `file_path`. Das Feld `source` gibt an, welche Konfigurationsart sich geändert hat, und `file_path` gibt den Pfad zur spezifischen Datei an, die geändert wurde.

1915 

1916```json theme={null}

1917{

1918 "session_id": "abc123",

1919 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1920 "cwd": "/Users/...",

1921 "hook_event_name": "ConfigChange",

1922 "source": "project_settings",

1923 "file_path": "/Users/.../my-project/.claude/settings.json"

1924}

1925```

1926 

1927#### ConfigChange-Entscheidungskontrolle

1928 

1929ConfigChange-Hooks können Konfigurationsänderungen von der Anwendung blockieren. Verwenden Sie Exit-Code 2 oder ein JSON `decision`, um die Änderung zu verhindern. Wenn blockiert, werden die neuen Einstellungen nicht auf die laufende Sitzung angewendet.

1930 

1931| Feld | Beschreibung |

1932| :--------- | :--------------------------------------------------------------------------------------------------- |

1933| `decision` | `"block"` verhindert die Anwendung der Konfigurationsänderung. Weglassen, um die Änderung zuzulassen |

1934| `reason` | Erklärung, die dem Benutzer angezeigt wird, wenn `decision` `"block"` ist |

1935 

1936```json theme={null}

1937{

1938 "decision": "block",

1939 "reason": "Configuration changes to project settings require admin approval"

1940}

1941```

1942 

1943`policy_settings`-Änderungen können nicht blockiert werden. Hooks werden immer noch für `policy_settings`-Quellen ausgelöst, daher können Sie sie für Audit-Protokollierung verwenden, aber jede Blockierungsentscheidung wird ignoriert. Dies stellt sicher, dass von Unternehmen verwaltete Einstellungen immer wirksam werden.

1944 

1945### CwdChanged

1946 

1947Wird ausgeführt, wenn das Arbeitsverzeichnis während einer Sitzung wechselt, zum Beispiel wenn Claude einen `cd`-Befehl ausführt. Verwenden Sie dies, um auf Verzeichniswechsel zu reagieren: Laden Sie Umgebungsvariablen neu, aktivieren Sie projektspezifische Toolchains oder führen Sie Setup-Skripte automatisch aus. Paare mit [FileChanged](#filechanged) für Tools wie [direnv](https://direnv.net/), die verzeichnisspezifische Umgebungen verwalten.

1948 

1949CwdChanged-Hooks haben Zugriff auf `CLAUDE_ENV_FILE`. Variablen, die in diese Datei geschrieben werden, bleiben in nachfolgenden Bash-Befehlen für die Sitzung erhalten, genau wie in [SessionStart-Hooks](#persist-environment-variables).

1950 

1951CwdChanged unterstützt keine Matcher und wird bei jedem Verzeichniswechsel ausgelöst.

1952 

1953#### CwdChanged-Eingabe

1954 

1955Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten CwdChanged-Hooks `old_cwd` und `new_cwd`.

1956 

1957```json theme={null}

1958{

1959 "session_id": "abc123",

1960 "transcript_path": "/Users/.../.claude/projects/.../transcript.jsonl",

1961 "cwd": "/Users/my-project/src",

1962 "hook_event_name": "CwdChanged",

1963 "old_cwd": "/Users/my-project",

1964 "new_cwd": "/Users/my-project/src"

1965}

1966```

1967 

1968#### CwdChanged-Ausgabe

1969 

1970Zusätzlich zu den [JSON-Ausgabefeldern](#json-output), die für alle Hooks verfügbar sind, können CwdChanged-Hooks `watchPaths` zurückgeben, um dynamisch zu setzen, welche Dateipfade [FileChanged](#filechanged) überwacht:

1971 

1972| Feld | Beschreibung |

1973| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

1974| `watchPaths` | Array von absoluten Pfaden. Ersetzt die aktuelle dynamische Überwachungsliste (Pfade aus Ihrer `matcher`-Konfiguration werden immer überwacht). Das Zurückgeben eines leeren Arrays löscht die dynamische Liste, was typisch ist, wenn Sie ein neues Verzeichnis betreten |

1975 

1976CwdChanged-Hooks haben keine Entscheidungskontrolle. Sie können den Verzeichniswechsel nicht blockieren.

1977 

1978### FileChanged

1979 

1980Wird ausgeführt, wenn sich eine überwachte Datei auf der Festplatte ändert. Nützlich zum Neuladen von Umgebungsvariablen, wenn Projekt-Konfigurationsdateien geändert werden.

1981 

1982Das Feld `matcher` für dieses Ereignis dient zwei Zwecken:

1983 

1984* **Erstellen Sie die Überwachungsliste**: Der Wert wird auf `|` aufgeteilt und jedes Segment wird als Dateiname im Arbeitsverzeichnis registriert, daher überwacht `".envrc|.env"` genau diese zwei Dateien. Regex-Muster sind hier nicht nützlich: Ein Wert wie `^\.env` würde eine Datei überwachen, die buchstäblich `^\.env` heißt.

1985* **Filtern Sie, welche Hooks ausgeführt werden**: Wenn sich eine überwachte Datei ändert, wird der gleiche Wert verwendet, um zu filtern, welche Hook-Gruppen ausgeführt werden, wobei die Standard-[Matcher-Regeln](#matcher-patterns) gegen den Basename der geänderten Datei verwendet werden.

1986 

1987FileChanged-Hooks haben Zugriff auf `CLAUDE_ENV_FILE`. Variablen, die in diese Datei geschrieben werden, bleiben in nachfolgenden Bash-Befehlen für die Sitzung erhalten, genau wie in [SessionStart-Hooks](#persist-environment-variables).

1988 

1989#### FileChanged-Eingabe

1990 

1991Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten FileChanged-Hooks `file_path` und `event`.

1992 

1993| Feld | Beschreibung |

1994| :---------- | :------------------------------------------------------------------------------------------------------- |

1995| `file_path` | Absoluter Pfad zur Datei, die sich geändert hat |

1996| `event` | Was passiert ist: `"change"` (Datei geändert), `"add"` (Datei erstellt) oder `"unlink"` (Datei gelöscht) |

1997 

1998```json theme={null}

1999{

2000 "session_id": "abc123",

2001 "transcript_path": "/Users/.../.claude/projects/.../transcript.jsonl",

2002 "cwd": "/Users/my-project",

2003 "hook_event_name": "FileChanged",

2004 "file_path": "/Users/my-project/.envrc",

2005 "event": "change"

2006}

2007```

2008 

2009#### FileChanged-Ausgabe

2010 

2011Zusätzlich zu den [JSON-Ausgabefeldern](#json-output), die für alle Hooks verfügbar sind, können FileChanged-Hooks `watchPaths` zurückgeben, um dynamisch zu aktualisieren, welche Dateipfade überwacht werden:

2012 

2013| Feld | Beschreibung |

2014| :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2015| `watchPaths` | Array von absoluten Pfaden. Ersetzt die aktuelle dynamische Überwachungsliste (Pfade aus Ihrer `matcher`-Konfiguration werden immer überwacht). Verwenden Sie dies, wenn Ihr Hook-Skript basierend auf der geänderten Datei zusätzliche Dateien zum Überwachen entdeckt |

2016 

2017FileChanged-Hooks haben keine Entscheidungskontrolle. Sie können die Dateiänderung nicht blockieren.

2018 

2019### WorktreeCreate

2020 

2021Wenn Sie `claude --worktree` ausführen oder ein [Subagent `isolation: "worktree"` verwendet](/de/sub-agents#choose-the-subagent-scope), erstellt Claude Code eine isolierte Arbeitskopie mit `git worktree`. Wenn Sie einen WorktreeCreate-Hook konfigurieren, ersetzt er das Standard-Git-Verhalten und ermöglicht es Ihnen, ein anderes Versionskontrollsystem wie SVN, Perforce oder Mercurial zu verwenden.

2022 

2023Da der Hook das Standard-Verhalten vollständig ersetzt, wird [`.worktreeinclude`](/de/worktrees#copy-gitignored-files-into-worktrees) nicht verarbeitet. Wenn Sie lokale Konfigurationsdateien wie `.env` in den neuen Worktree kopieren müssen, tun Sie dies in Ihrem Hook-Skript.

2024 

2025Der Hook muss den absoluten Pfad zum erstellten Worktree-Verzeichnis zurückgeben. Claude Code verwendet diesen Pfad als Arbeitsverzeichnis für die isolierte Sitzung. Command-Hooks geben ihn auf stdout aus; HTTP-Hooks geben ihn über `hookSpecificOutput.worktreePath` zurück.

2026 

2027Dieses Beispiel erstellt eine SVN-Arbeitskopie und gibt den Pfad aus, damit Claude Code ihn verwenden kann. Ersetzen Sie die Repository-URL durch Ihre eigene:

2028 

2029```json theme={null}

2030{

2031 "hooks": {

2032 "WorktreeCreate": [

2033 {

2034 "hooks": [

2035 {

2036 "type": "command",

2037 "command": "bash -c 'NAME=$(jq -r .name); DIR=\"$HOME/.claude/worktrees/$NAME\"; svn checkout https://svn.example.com/repo/trunk \"$DIR\" >&2 && echo \"$DIR\"'"

2038 }

2039 ]

2040 }

2041 ]

2042 }

2043}

2044```

2045 

2046Der Hook liest den Worktree-`name` aus der JSON-Eingabe auf stdin, checkt eine frische Kopie in ein neues Verzeichnis aus und gibt den Verzeichnispath aus. Das `echo` in der letzten Zeile ist das, was Claude Code als Worktree-Pfad liest. Leiten Sie jede andere Ausgabe zu stderr um, damit sie nicht mit dem Pfad interferiert.

2047 

2048#### WorktreeCreate-Eingabe

2049 

2050Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten WorktreeCreate-Hooks das Feld `name`. Dies ist eine Slug-Kennung für den neuen Worktree, entweder vom Benutzer angegeben oder automatisch generiert (zum Beispiel `bold-oak-a3f2`).

2051 

2052```json theme={null}

2053{

2054 "session_id": "abc123",

2055 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2056 "cwd": "/Users/...",

2057 "hook_event_name": "WorktreeCreate",

2058 "name": "feature-auth"

2059}

2060```

2061 

2062#### WorktreeCreate-Ausgabe

2063 

2064WorktreeCreate-Hooks verwenden nicht das Standard-Allow/Block-Entscheidungsmodell. Stattdessen bestimmt der Erfolg oder Misserfolg des Hooks das Ergebnis. Der Hook muss den absoluten Pfad zum erstellten Worktree-Verzeichnis zurückgeben:

2065 

2066* **Command-Hooks** (`type: "command"`): geben den Pfad auf stdout aus.

2067* **HTTP-Hooks** (`type: "http"`): geben `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` im Response-Body zurück.

2068 

2069Wenn der Hook fehlschlägt oder keinen Pfad erzeugt, schlägt die Worktree-Erstellung mit einem Fehler fehl.

2070 

2071### WorktreeRemove

2072 

2073Das Bereinigungspendant zu [WorktreeCreate](#worktreecreate). Dieser Hook wird ausgelöst, wenn ein Worktree entfernt wird, entweder wenn Sie eine `--worktree`-Sitzung beenden und wählen, sie zu entfernen, oder wenn ein Subagent mit `isolation: "worktree"` fertig ist. Für Git-basierte Worktrees handhabt Claude die Bereinigung automatisch mit `git worktree remove`. Wenn Sie einen WorktreeCreate-Hook für ein nicht-Git-Versionskontrollsystem konfiguriert haben, koppeln Sie ihn mit einem WorktreeRemove-Hook, um die Bereinigung zu handhaben. Ohne einen wird das Worktree-Verzeichnis auf der Festplatte belassen.

2074 

2075Claude Code übergibt den Pfad, den WorktreeCreate auf stdout ausgegeben hat, als `worktree_path` in der Hook-Eingabe. Dieses Beispiel liest diesen Pfad und entfernt das Verzeichnis:

2076 

2077```json theme={null}

2078{

2079 "hooks": {

2080 "WorktreeRemove": [

2081 {

2082 "hooks": [

2083 {

2084 "type": "command",

2085 "command": "bash -c 'jq -r .worktree_path | xargs rm -rf'"

2086 }

2087 ]

2088 }

2089 ]

2090 }

2091}

2092```

2093 

2094#### WorktreeRemove-Eingabe

2095 

2096Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten WorktreeRemove-Hooks das Feld `worktree_path`, das der absolute Pfad zum entfernten Worktree ist.

2097 

2098```json theme={null}

2099{

2100 "session_id": "abc123",

2101 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2102 "cwd": "/Users/...",

2103 "hook_event_name": "WorktreeRemove",

2104 "worktree_path": "/Users/.../my-project/.claude/worktrees/feature-auth"

2105}

2106```

2107 

2108WorktreeRemove-Hooks haben keine Entscheidungskontrolle. Sie können die Worktree-Entfernung nicht blockieren, können aber Bereinigungsaufgaben wie das Entfernen von Versionskontrollstatus oder das Archivieren von Änderungen durchführen. Hook-Fehler werden nur im Debug-Modus protokolliert.

2109 

2110### PreCompact

2111 

2112Wird ausgeführt, bevor Claude Code einen Komprimierungsvorgang ausführen soll.

2113 

2114Der Matcher-Wert gibt an, ob die Komprimierung manuell oder automatisch ausgelöst wurde:

2115 

2116| Matcher | Wann es ausgelöst wird |

2117| :------- | :--------------------------------------------------- |

2118| `manual` | `/compact` |

2119| `auto` | Auto-Komprimierung, wenn das Kontextfenster voll ist |

2120 

2121Exit mit Code 2, um die Komprimierung zu blockieren. Für ein manuelles `/compact` wird die stderr-Nachricht dem Benutzer angezeigt. Sie können auch blockieren, indem Sie JSON mit `"decision": "block"` zurückgeben.

2122 

2123Das Blockieren der automatischen Komprimierung hat unterschiedliche Auswirkungen, je nachdem, wann es ausgelöst wird. Wenn die Komprimierung proaktiv ausgelöst wurde, bevor das Kontextlimit erreicht wurde, überspringt Claude Code sie und das Gespräch wird unkomprimiert fortgesetzt. Wenn die Komprimierung ausgelöst wurde, um sich von einem Kontextlimit-Fehler zu erholen, der bereits von der API zurückgegeben wurde, wird der zugrunde liegende Fehler angezeigt und die aktuelle Anfrage schlägt fehl.

2124 

2125#### PreCompact-Eingabe

2126 

2127Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten PreCompact-Hooks `trigger` und `custom_instructions`. Für `manual` enthält `custom_instructions` das, was der Benutzer in `/compact` übergibt. Für `auto` ist `custom_instructions` leer.

2128 

2129```json theme={null}

2130{

2131 "session_id": "abc123",

2132 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2133 "cwd": "/Users/...",

2134 "hook_event_name": "PreCompact",

2135 "trigger": "manual",

2136 "custom_instructions": ""

2137}

2138```

2139 

2140### PostCompact

2141 

2142Wird ausgeführt, nachdem Claude Code einen Komprimierungsvorgang abgeschlossen hat. Verwenden Sie dieses Ereignis, um auf den neuen komprimierten Zustand zu reagieren, zum Beispiel um die generierte Zusammenfassung zu protokollieren oder den externen Zustand zu aktualisieren.

2143 

2144Die gleichen Matcher-Werte gelten wie für `PreCompact`:

2145 

2146| Matcher | Wann es ausgelöst wird |

2147| :------- | :-------------------------------------------------------- |

2148| `manual` | Nach `/compact` |

2149| `auto` | Nach Auto-Komprimierung, wenn das Kontextfenster voll ist |

2150 

2151#### PostCompact-Eingabe

2152 

2153Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten PostCompact-Hooks `trigger` und `compact_summary`. Das Feld `compact_summary` enthält die Gesprächszusammenfassung, die durch den Komprimierungsvorgang generiert wurde.

2154 

2155```json theme={null}

2156{

2157 "session_id": "abc123",

2158 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2159 "cwd": "/Users/...",

2160 "hook_event_name": "PostCompact",

2161 "trigger": "manual",

2162 "compact_summary": "Summary of the compacted conversation..."

2163}

2164```

2165 

2166PostCompact-Hooks haben keine Entscheidungskontrolle. Sie können das Komprimierungsergebnis nicht beeinflussen, können aber Folgaufgaben durchführen.

2167 

2168### SessionEnd

2169 

2170Wird ausgeführt, wenn eine Claude Code-Sitzung endet. Nützlich für Bereinigungsaufgaben, Protokollierung von Sitzungsstatistiken oder Speicherung des Sitzungsstatus. Unterstützt Matcher zum Filtern nach Ausstiegsgrund.

2171 

2172Das Feld `reason` in der Hook-Eingabe gibt an, warum die Sitzung endete:

2173 

2174| Grund | Beschreibung |

2175| :---------------------------- | :------------------------------------------------------------ |

2176| `clear` | Sitzung mit `/clear`-Befehl gelöscht |

2177| `resume` | Sitzung über interaktives `/resume` gewechselt |

2178| `logout` | Benutzer hat sich abgemeldet |

2179| `prompt_input_exit` | Benutzer hat beendet, während die Prompt-Eingabe sichtbar war |

2180| `bypass_permissions_disabled` | Bypass-Berechtigungsmodus wurde deaktiviert |

2181| `other` | Andere Ausstiegsgründe |

2182 

2183#### SessionEnd-Eingabe

2184 

2185Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten SessionEnd-Hooks ein Feld `reason`, das angibt, warum die Sitzung endete. Siehe die [Grundtabelle](#sessionend) oben für alle Werte.

2186 

2187```json theme={null}

2188{

2189 "session_id": "abc123",

2190 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2191 "cwd": "/Users/...",

2192 "hook_event_name": "SessionEnd",

2193 "reason": "other"

2194}

2195```

2196 

2197SessionEnd-Hooks haben keine Entscheidungskontrolle. Sie können die Sitzungsbeendigung nicht blockieren, können aber Bereinigungsaufgaben durchführen.

2198 

2199SessionEnd-Hooks haben ein Standard-Timeout von 1,5 Sekunden. Dies gilt sowohl für den Sitzungsausstieg als auch für `/clear` und das Wechseln von Sitzungen über interaktives `/resume`. Wenn ein Hook mehr Zeit benötigt, setzen Sie eine Pro-Hook-`timeout` in der Hook-Konfiguration. Das Gesamtbudget wird automatisch auf das höchste Pro-Hook-Timeout erhöht, das in Einstellungsdateien konfiguriert ist, bis zu 60 Sekunden. Timeouts, die auf Plugin-bereitgestellten Hooks gesetzt sind, erhöhen das Budget nicht. Um das Budget explizit zu überschreiben, setzen Sie die Umgebungsvariable `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` in Millisekunden.

2200 

2201```bash theme={null}

2202CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude

2203```

2204 

2205### Elicitation

2206 

2207Wird ausgeführt, wenn ein MCP-Server Benutzereingaben während einer Aufgabe anfordert. Standardmäßig zeigt Claude Code einen interaktiven Dialog für die Benutzerantwort an. Hooks können diese Anfrage abfangen und programmatisch antworten, wodurch der Dialog vollständig übersprungen wird.

2208 

2209Das Matcher-Feld passt auf den MCP-Server-Namen.

2210 

2211#### Elicitation-Eingabe

2212 

2213Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten Elicitation-Hooks `mcp_server_name`, `message` und optionale Felder `mode`, `url`, `elicitation_id` und `requested_schema`.

2214 

2215Für Form-Mode-Elicitation (der häufigste Fall):

2216 

2217```json theme={null}

2218{

2219 "session_id": "abc123",

2220 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2221 "cwd": "/Users/...",

2222 "permission_mode": "default",

2223 "hook_event_name": "Elicitation",

2224 "mcp_server_name": "my-mcp-server",

2225 "message": "Please provide your credentials",

2226 "mode": "form",

2227 "requested_schema": {

2228 "type": "object",

2229 "properties": {

2230 "username": { "type": "string", "title": "Username" }

2231 }

2232 }

2233}

2234```

2235 

2236Für URL-Mode-Elicitation (Browser-basierte Authentifizierung):

2237 

2238```json theme={null}

2239{

2240 "session_id": "abc123",

2241 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2242 "cwd": "/Users/...",

2243 "permission_mode": "default",

2244 "hook_event_name": "Elicitation",

2245 "mcp_server_name": "my-mcp-server",

2246 "message": "Please authenticate",

2247 "mode": "url",

2248 "url": "https://auth.example.com/login"

2249}

2250```

2251 

2252#### Elicitation-Ausgabe

2253 

2254Um programmatisch ohne Anzeige des Dialogs zu antworten, geben Sie ein JSON-Objekt mit `hookSpecificOutput` zurück:

2255 

2256```json theme={null}

2257{

2258 "hookSpecificOutput": {

2259 "hookEventName": "Elicitation",

2260 "action": "accept",

2261 "content": {

2262 "username": "alice"

2263 }

2264 }

2265}

2266```

2267 

2268| Feld | Werte | Beschreibung |

2269| :-------- | :---------------------------- | :------------------------------------------------------------------------------- |

2270| `action` | `accept`, `decline`, `cancel` | Ob die Anfrage akzeptiert, abgelehnt oder abgebrochen werden soll |

2271| `content` | Objekt | Formularfeldwerte zum Einreichen. Wird nur verwendet, wenn `action` `accept` ist |

2272 

2273Exit-Code 2 verweigert die Elicitation und zeigt stderr dem Benutzer an.

2274 

2275### ElicitationResult

2276 

2277Wird ausgeführt, nachdem ein Benutzer auf eine MCP-Elicitation antwortet. Hooks können die Antwort beobachten, ändern oder blockieren, bevor sie an den MCP-Server zurückgesendet wird.

2278 

2279Das Matcher-Feld passt auf den MCP-Server-Namen.

2280 

2281#### ElicitationResult-Eingabe

2282 

2283Zusätzlich zu den [gemeinsamen Eingabefeldern](#common-input-fields) erhalten ElicitationResult-Hooks `mcp_server_name`, `action` und optionale Felder `mode`, `elicitation_id` und `content`.

2284 

2285```json theme={null}

2286{

2287 "session_id": "abc123",

2288 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2289 "cwd": "/Users/...",

2290 "permission_mode": "default",

2291 "hook_event_name": "ElicitationResult",

2292 "mcp_server_name": "my-mcp-server",

2293 "action": "accept",

2294 "content": { "username": "alice" },

2295 "mode": "form",

2296 "elicitation_id": "elicit-123"

2297}

2298```

2299 

2300#### ElicitationResult-Ausgabe

2301 

2302Um die Antwort des Benutzers zu überschreiben, geben Sie ein JSON-Objekt mit `hookSpecificOutput` zurück:

2303 

2304```json theme={null}

2305{

2306 "hookSpecificOutput": {

2307 "hookEventName": "ElicitationResult",

2308 "action": "decline",

2309 "content": {}

2310 }

2311}

2312```

2313 

2314| Feld | Werte | Beschreibung |

2315| :-------- | :---------------------------- | :----------------------------------------------------------------------------- |

2316| `action` | `accept`, `decline`, `cancel` | Überschreibt die Aktion des Benutzers |

2317| `content` | Objekt | Überschreibt Formularfeldwerte. Nur aussagekräftig, wenn `action` `accept` ist |

2318 

2319Exit-Code 2 blockiert die Antwort, wodurch die effektive Aktion zu `decline` wird.

2320 

2321## Prompt-basierte Hooks

2322 

2323Zusätzlich zu Command-, HTTP- und MCP-Tool-Hooks unterstützt Claude Code Prompt-basierte Hooks (`type: "prompt"`), die ein LLM verwenden, um zu evaluieren, ob eine Aktion zuzulassen oder zu blockieren ist, und Agent-Hooks (`type: "agent"`), die einen agentengesteuerten Verifizierer mit Tool-Zugriff spawnen. Nicht alle Ereignisse unterstützen jeden Hook-Typ.

2324 

2325Ereignisse, die alle fünf Hook-Typen unterstützen (`command`, `http`, `mcp_tool`, `prompt` und `agent`):

2326 

2327* `PermissionRequest`

2328* `PostToolBatch`

2329* `PostToolUse`

2330* `PostToolUseFailure`

2331* `PreToolUse`

2332* `Stop`

2333* `SubagentStop`

2334* `TaskCompleted`

2335* `TaskCreated`

2336* `UserPromptExpansion`

2337* `UserPromptSubmit`

2338 

2339Ereignisse, die `command`, `http` und `mcp_tool` Hooks unterstützen, aber nicht `prompt` oder `agent`:

2340 

2341* `ConfigChange`

2342* `CwdChanged`

2343* `Elicitation`

2344* `ElicitationResult`

2345* `FileChanged`

2346* `InstructionsLoaded`

2347* `Notification`

2348* `PermissionDenied`

2349* `PostCompact`

2350* `PreCompact`

2351* `SessionEnd`

2352* `StopFailure`

2353* `SubagentStart`

2354* `TeammateIdle`

2355* `WorktreeCreate`

2356* `WorktreeRemove`

2357 

2358`SessionStart` und `Setup` unterstützen `command` und `mcp_tool` Hooks. Sie unterstützen keine `http`, `prompt` oder `agent` Hooks.

2359 

2360### Wie Prompt-basierte Hooks funktionieren

2361 

2362Anstatt einen Bash-Befehl auszuführen, Prompt-basierte Hooks:

2363 

23641. Senden die Hook-Eingabe und Ihren Prompt an ein Claude-Modell, standardmäßig Haiku

23652. Das LLM antwortet mit strukturiertem JSON, das eine Entscheidung enthält

23663. Claude Code verarbeitet die Entscheidung automatisch

2367 

2368### Prompt-Hook-Konfiguration

2369 

2370Setzen Sie `type` auf `"prompt"` und geben Sie eine `prompt`-Zeichenkette anstelle eines `command` an. Verwenden Sie den Platzhalter `$ARGUMENTS`, um die Hook-Eingabedaten in Ihren Prompt-Text einzufügen. Claude Code sendet den kombinierten Prompt und die Eingabe an ein schnelles Claude-Modell, das eine JSON-Entscheidung zurückgibt.

2371 

2372Dieser `Stop`-Hook fragt das LLM, ob Claude stoppen sollte, bevor Claude beendet wird:

2373 

2374```json theme={null}

2375{

2376 "hooks": {

2377 "Stop": [

2378 {

2379 "hooks": [

2380 {

2381 "type": "prompt",

2382 "prompt": "Evaluate if Claude should stop: $ARGUMENTS. Check if all tasks are complete."

2383 }

2384 ]

2385 }

2386 ]

2387 }

2388}

2389```

2390 

2391| Feld | Erforderlich | Beschreibung |

2392| :-------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

2393| `type` | ja | Muss `"prompt"` sein |

2394| `prompt` | ja | Der Prompt-Text zum Senden an das LLM. Verwenden Sie `$ARGUMENTS` als Platzhalter für die Hook-Eingabe JSON. Wenn `$ARGUMENTS` nicht vorhanden ist, wird die Eingabe JSON an den Prompt angehängt |

2395| `model` | nein | Modell zur Verwendung für die Evaluierung. Standardwert ist ein schnelles Modell |

2396| `timeout` | nein | Timeout in Sekunden. Standard: 30 |

2397 

2398### Response-Schema

2399 

2400Das LLM muss mit JSON antworten, das Folgendes enthält:

2401 

2402```json theme={null}

2403{

2404 "ok": true | false,

2405 "reason": "Explanation for the decision"

2406}

2407```

2408 

2409| Feld | Beschreibung |

2410| :------- | :----------------------------------------------------------------- |

2411| `ok` | `true` erlaubt die Aktion, `false` verhindert sie |

2412| `reason` | Erforderlich, wenn `ok` `false` ist. Erklärung für die Blockierung |

2413 

2414Was bei `ok: false` passiert, hängt vom Ereignis ab:

2415 

2416* `Stop` und `SubagentStop`: der Grund wird an Claude als nächste Anweisung zurückgegeben und der Turn wird fortgesetzt

2417* `PreToolUse`: der Tool-Aufruf wird verweigert und der Grund wird an Claude als Tool-Fehler zurückgegeben, gleichbedeutend mit einem Command-Hook mit `permissionDecision: "deny"`

2418* `PostToolUse`, `PostToolBatch`, `UserPromptSubmit` und `UserPromptExpansion`: der Turn endet und der Grund wird im Chat als Warnzeile angezeigt, gleichbedeutend mit der Rückgabe von `"continue": false` aus einem Command-Hook

2419* `PostToolUseFailure`, `TaskCreated` und `TaskCompleted`: der Grund wird an Claude als Tool-Fehler zurückgegeben, ähnlich wie `PreToolUse`

2420* `PermissionRequest`: `ok: false` hat keine Auswirkung. Um eine Genehmigung von einem Hook zu verweigern, verwenden Sie einen [Command-Hook](#command-hook-fields) mit `hookSpecificOutput.decision.behavior: "deny"`

2421 

2422Wenn Sie eine feinere Kontrolle bei einem Ereignis benötigen, verwenden Sie einen [Command-Hook](#command-hook-fields) mit den ereignisspezifischen Feldern, die in [Entscheidungskontrolle](#decision-control) beschrieben sind.

2423 

2424### Beispiel: Multi-Kriterien-Stop-Hook

2425 

2426Dieser `Stop`-Hook verwendet einen detaillierten Prompt, um drei Bedingungen zu überprüfen, bevor Claude stoppen darf. Wenn `"ok"` `false` ist, setzt Claude die Arbeit mit dem bereitgestellten Grund als nächste Anweisung fort. `SubagentStop`-Hooks verwenden das gleiche Format, um zu evaluieren, ob ein [Subagent](/de/sub-agents) stoppen sollte:

2427 

2428```json theme={null}

2429{

2430 "hooks": {

2431 "Stop": [

2432 {

2433 "hooks": [

2434 {

2435 "type": "prompt",

2436 "prompt": "You are evaluating whether Claude should stop working. Context: $ARGUMENTS\n\nAnalyze the conversation and determine if:\n1. All user-requested tasks are complete\n2. Any errors need to be addressed\n3. Follow-up work is needed\n\nRespond with JSON: {\"ok\": true} to allow stopping, or {\"ok\": false, \"reason\": \"your explanation\"} to continue working.",

2437 "timeout": 30

2438 }

2439 ]

2440 }

2441 ]

2442 }

2443}

2444```

2445 

2446## Agent-basierte Hooks

2447 

2448<Warning>

2449 Agent-Hooks sind experimentell. Das Verhalten und die Konfiguration können sich in zukünftigen Versionen ändern. Für Produktions-Workflows bevorzugen Sie [Command Hooks](#command-hook-fields).

2450</Warning>

2451 

2452Agent-basierte Hooks (`type: "agent"`) sind wie Prompt-basierte Hooks, aber mit Multi-Turn-Tool-Zugriff. Anstelle eines einzelnen LLM-Aufrufs spawnt ein Agent-Hook einen Subagenten, der Dateien lesen, Code durchsuchen und die Codebasis überprüfen kann, um Bedingungen zu überprüfen. Agent-Hooks unterstützen die gleichen Ereignisse wie Prompt-basierte Hooks.

2453 

2454### Wie Agent-Hooks funktionieren

2455 

2456Wenn ein Agent-Hook ausgelöst wird:

2457 

24581. Claude Code spawnt einen Subagenten mit Ihrem Prompt und der Hook-Eingabe

24592. Der Subagent kann Tools wie Read, Grep und Glob verwenden, um zu untersuchen

24603. Nach bis zu 50 Turns gibt der Subagent eine strukturierte `{ "ok": true/false }`-Entscheidung zurück

24614. Claude Code verarbeitet die Entscheidung auf die gleiche Weise wie ein Prompt-Hook

2462 

2463Agent-Hooks sind nützlich, wenn die Überprüfung das Überprüfen tatsächlicher Dateien oder Test-Ausgabe erfordert, nicht nur die Evaluierung der Hook-Eingabedaten allein.

2464 

2465### Agent-Hook-Konfiguration

2466 

2467Setzen Sie `type` auf `"agent"` und geben Sie eine `prompt`-Zeichenkette an. Die Konfigurationsfelder sind die gleichen wie [Prompt-Hooks](#prompt-hook-configuration), mit einem längeren Standard-Timeout:

2468 

2469| Feld | Erforderlich | Beschreibung |

2470| :-------- | :----------- | :------------------------------------------------------------------------------------------------------------------ |

2471| `type` | ja | Muss `"agent"` sein |

2472| `prompt` | ja | Prompt, der beschreibt, was zu überprüfen ist. Verwenden Sie `$ARGUMENTS` als Platzhalter für die Hook-Eingabe JSON |

2473| `model` | nein | Modell zur Verwendung. Standardwert ist ein schnelles Modell |

2474| `timeout` | nein | Timeout in Sekunden. Standard: 60 |

2475 

2476Das Response-Schema ist das gleiche wie Prompt-Hooks: `{ "ok": true }` zum Zulassen oder `{ "ok": false, "reason": "..." }` zum Blockieren.

2477 

2478Dieser `Stop`-Hook überprüft, dass alle Unit-Tests bestanden sind, bevor Claude fertig ist:

2479 

2480```json theme={null}

2481{

2482 "hooks": {

2483 "Stop": [

2484 {

2485 "hooks": [

2486 {

2487 "type": "agent",

2488 "prompt": "Verify that all unit tests pass. Run the test suite and check the results. $ARGUMENTS",

2489 "timeout": 120

2490 }

2491 ]

2492 }

2493 ]

2494 }

2495}

2496```

2497 

2498## Hooks im Hintergrund ausführen

2499 

2500Standardmäßig blockieren Hooks die Ausführung von Claude, bis sie abgeschlossen sind. Für lang laufende Aufgaben wie Bereitstellungen, Test-Suites oder externe API-Aufrufe setzen Sie `"async": true`, um den Hook im Hintergrund auszuführen, während Claude weiterarbeitet. Asynchrone Hooks können nicht blockieren oder das Verhalten von Claude steuern: Response-Felder wie `decision`, `permissionDecision` und `continue` haben keine Auswirkung, da die Aktion, die sie steuern würden, bereits abgeschlossen ist.

2501 

2502### Konfigurieren Sie einen asynchronen Hook

2503 

2504Fügen Sie `"async": true` zur Konfiguration eines Command-Hooks hinzu, um ihn im Hintergrund auszuführen, ohne Claude zu blockieren. Dieses Feld ist nur auf `type: "command"`-Hooks verfügbar.

2505 

2506Dieser Hook führt ein Test-Skript nach jedem `Write`-Tool-Aufruf aus. Claude arbeitet sofort weiter, während `run-tests.sh` bis zu 120 Sekunden ausgeführt wird. Wenn das Skript fertig ist, wird seine Ausgabe beim nächsten Gesprächsturn geliefert:

2507 

2508```json theme={null}

2509{

2510 "hooks": {

2511 "PostToolUse": [

2512 {

2513 "matcher": "Write",

2514 "hooks": [

2515 {

2516 "type": "command",

2517 "command": "/path/to/run-tests.sh",

2518 "async": true,

2519 "timeout": 120

2520 }

2521 ]

2522 }

2523 ]

2524 }

2525}

2526```

2527 

2528Das Feld `timeout` setzt die maximale Zeit in Sekunden für den Hintergrund-Prozess. Wenn nicht angegeben, verwenden asynchrone Hooks das gleiche 10-Minuten-Standard wie synchrone Hooks.

2529 

2530### Wie asynchrone Hooks ausgeführt werden

2531 

2532Wenn ein asynchroner Hook ausgelöst wird, startet Claude Code den Hook-Prozess und setzt sofort fort, ohne auf den Abschluss zu warten. Der Hook erhält die gleiche JSON-Eingabe über stdin wie ein synchroner Hook.

2533 

2534Nachdem der Hintergrund-Prozess beendet ist, wenn der Hook eine JSON-Response mit einem `systemMessage`- oder `additionalContext`-Feld erzeugt hat, wird dieser Inhalt Claude beim nächsten Gesprächsturn als Kontext geliefert.

2535 

2536Benachrichtigungen über den Abschluss asynchroner Hooks werden standardmäßig unterdrückt. Um sie zu sehen, aktivieren Sie den ausführlichen Modus mit `Ctrl+O` oder starten Sie Claude Code mit `--verbose`.

2537 

2538### Beispiel: Tests nach Dateiänderungen ausführen

2539 

2540Dieser Hook startet eine Test-Suite im Hintergrund, wenn Claude eine Datei schreibt, und meldet die Ergebnisse Claude, wenn die Tests fertig sind. Speichern Sie dieses Skript unter `.claude/hooks/run-tests-async.sh` in Ihrem Projekt und machen Sie es mit `chmod +x` ausführbar:

2541 

2542```bash theme={null}

2543#!/bin/bash

2544# run-tests-async.sh

2545 

2546# Hook-Eingabe von stdin lesen

2547INPUT=$(cat)

2548FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

2549 

2550# Tests nur für Quelldateien ausführen

2551if [[ "$FILE_PATH" != *.ts && "$FILE_PATH" != *.js ]]; then

2552 exit 0

2553fi

2554 

2555# Tests ausführen und Ergebnisse über systemMessage melden

2556RESULT=$(npm test 2>&1)

2557EXIT_CODE=$?

2558 

2559if [ $EXIT_CODE -eq 0 ]; then

2560 echo "{\"systemMessage\": \"Tests passed after editing $FILE_PATH\"}"

2561else

2562 echo "{\"systemMessage\": \"Tests failed after editing $FILE_PATH: $RESULT\"}"

2563fi

2564```

2565 

2566Fügen Sie dann diese Konfiguration zu `.claude/settings.json` im Projekt-Root hinzu. Das Flag `async: true` ermöglicht es Claude, weiterarbeiten zu können, während Tests ausgeführt werden:

2567 

2568```json theme={null}

2569{

2570 "hooks": {

2571 "PostToolUse": [

2572 {

2573 "matcher": "Write|Edit",

2574 "hooks": [

2575 {

2576 "type": "command",

2577 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/run-tests-async.sh",

2578 "async": true,

2579 "timeout": 300

2580 }

2581 ]

2582 }

2583 ]

2584 }

2585}

2586```

2587 

2588### Einschränkungen

2589 

2590Asynchrone Hooks haben mehrere Einschränkungen im Vergleich zu synchronen Hooks:

2591 

2592* Nur `type: "command"`-Hooks unterstützen `async`. Prompt-basierte Hooks können nicht asynchron ausgeführt werden.

2593* Asynchrone Hooks können nicht blockieren oder Entscheidungen zurückgeben. Zu dem Zeitpunkt, an dem der Hook abgeschlossen ist, hat die auslösende Aktion bereits stattgefunden.

2594* Hook-Ausgabe wird beim nächsten Gesprächsturn geliefert. Wenn die Sitzung untätig ist, wartet die Response, bis die nächste Benutzerinteraktion erfolgt. Ausnahme: Ein `asyncRewake`-Hook, der mit Code 2 beendet wird, weckt Claude sofort auf, auch wenn die Sitzung untätig ist.

2595* Jede Ausführung erstellt einen separaten Hintergrund-Prozess. Es gibt keine Deduplizierung über mehrere Auslösungen des gleichen asynchronen Hooks.

2596 

2597## Sicherheitsüberlegungen

2598 

2599### Haftungsausschluss

2600 

2601Command-Hooks werden mit den vollständigen Berechtigungen Ihres System-Benutzers ausgeführt.

2602 

2603<Warning>

2604 Command-Hooks führen Shell-Befehle mit Ihren vollständigen Benutzerberechtigungen aus. Sie können alle Dateien ändern, löschen oder zugreifen, auf die Ihr Benutzerkonto zugreifen kann. Überprüfen und testen Sie alle Hook-Befehle, bevor Sie sie zu Ihrer Konfiguration hinzufügen.

2605</Warning>

2606 

2607### Best Practices für Sicherheit

2608 

2609Beachten Sie diese Praktiken beim Schreiben von Hooks:

2610 

2611* **Validieren und bereinigen Sie Eingaben**: Vertrauen Sie niemals blind auf Eingabedaten

2612* **Zitieren Sie immer Shell-Variablen**: Verwenden Sie `"$VAR"` nicht `$VAR`

2613* **Blockieren Sie Pfad-Traversal**: Prüfen Sie auf `..` in Dateipfaden

2614* **Verwenden Sie absolute Pfade**: Geben Sie vollständige Pfade für Skripte an, verwenden Sie `"$CLAUDE_PROJECT_DIR"` für das Projekt-Root

2615* **Überspringen Sie sensible Dateien**: Vermeiden Sie `.env`, `.git/`, Schlüssel, etc.

2616 

2617## Windows PowerShell-Tool

2618 

2619Unter Windows können Sie einzelne Hooks in PowerShell ausführen, indem Sie `"shell": "powershell"` auf einem Command-Hook setzen. Hooks spawnen PowerShell direkt, daher funktioniert dies unabhängig davon, ob `CLAUDE_CODE_USE_POWERSHELL_TOOL` gesetzt ist. Claude Code erkennt automatisch `pwsh.exe` (PowerShell 7+) mit einem Fallback auf `powershell.exe` (5.1).

2620 

2621```json theme={null}

2622{

2623 "hooks": {

2624 "PostToolUse": [

2625 {

2626 "matcher": "Write",

2627 "hooks": [

2628 {

2629 "type": "command",

2630 "shell": "powershell",

2631 "command": "Write-Host 'File written'"

2632 }

2633 ]

2634 }

2635 ]

2636 }

2637}

2638```

2639 

2640## Debug-Hooks

2641 

2642Hook-Ausführungsdetails, einschließlich welche Hooks passten, ihre Exit-Codes und vollständige stdout und stderr, werden in die Debug-Log-Datei geschrieben. Starten Sie Claude Code mit `claude --debug-file <path>`, um das Log in einen bekannten Speicherort zu schreiben, oder führen Sie `claude --debug` aus und lesen Sie das Log unter `~/.claude/debug/<session-id>.txt`. Das Flag `--debug` gibt nicht auf dem Terminal aus.

2643 

2644```text theme={null}

2645[DEBUG] Executing hooks for PostToolUse:Write

2646[DEBUG] Found 1 hook commands to execute

2647[DEBUG] Executing hook command: <Your command> with timeout 600000ms

2648[DEBUG] Hook command completed with status 0: <Your stdout>

2649```

2650 

2651Für granularere Hook-Matching-Details setzen Sie `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose`, um zusätzliche Log-Zeilen wie Hook-Matcher-Zählungen und Query-Matching zu sehen.

2652 

2653Zur Fehlerbehebung häufiger Probleme wie Hooks, die nicht ausgelöst werden, unendliche Stop-Hook-Schleifen oder Konfigurationsfehler, siehe [Einschränkungen und Fehlerbehebung](/de/hooks-guide#limitations-and-troubleshooting) in der Anleitung. Für eine umfassendere diagnostische Anleitung, die `/context`, `/doctor` und Einstellungspriorität abdeckt, siehe [Debug your config](/de/debug-your-config).

hooks-guide.md +927 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Automatisieren Sie Workflows mit Hooks

6 

7> Führen Sie Shell-Befehle automatisch aus, wenn Claude Code Dateien bearbeitet, Aufgaben abschließt oder Eingaben benötigt. Formatieren Sie Code, senden Sie Benachrichtigungen, validieren Sie Befehle und erzwingen Sie Projektregeln.

8 

9Hooks sind benutzerdefinierte Shell-Befehle, die an bestimmten Punkten im Lebenszyklus von Claude Code ausgeführt werden. Sie bieten deterministische Kontrolle über das Verhalten von Claude Code und stellen sicher, dass bestimmte Aktionen immer stattfinden, anstatt sich darauf zu verlassen, dass das LLM sich dafür entscheidet, sie auszuführen. Verwenden Sie Hooks, um Projektregeln durchzusetzen, sich wiederholende Aufgaben zu automatisieren und Claude Code mit Ihren vorhandenen Tools zu integrieren.

10 

11Für Entscheidungen, die Urteilsvermögen erfordern, anstatt deterministischer Regeln, können Sie auch [Prompt-basierte Hooks](#prompt-based-hooks) oder [Agent-basierte Hooks](#agent-based-hooks) verwenden, die ein Claude-Modell zur Bewertung von Bedingungen nutzen.

12 

13Für andere Möglichkeiten, Claude Code zu erweitern, siehe [skills](/de/skills) zum Geben zusätzlicher Anweisungen und ausführbarer Befehle, [subagents](/de/sub-agents) zum Ausführen von Aufgaben in isolierten Kontexten und [plugins](/de/plugins) zum Verpacken von Erweiterungen, die über Projekte hinweg freigegeben werden können.

14 

15<Tip>

16 Dieser Leitfaden behandelt häufige Anwendungsfälle und wie Sie anfangen. Für vollständige Event-Schemas, JSON-Ein-/Ausgabeformate und erweiterte Funktionen wie asynchrone Hooks und MCP-Tool-Hooks siehe die [Hooks-Referenz](/de/hooks).

17</Tip>

18 

19## Richten Sie Ihren ersten Hook ein

20 

21Um einen Hook zu erstellen, fügen Sie einen `hooks`-Block zu einer [Einstellungsdatei](#configure-hook-location) hinzu. Diese Anleitung erstellt einen Desktop-Benachrichtigungs-Hook, damit Sie benachrichtigt werden, wenn Claude auf Ihre Eingabe wartet, anstatt das Terminal zu beobachten.

22 

23<Steps>

24 <Step title="Fügen Sie den Hook zu Ihren Einstellungen hinzu">

25 Öffnen Sie `~/.claude/settings.json` und fügen Sie einen `Notification`-Hook hinzu. Das Beispiel unten verwendet `osascript` für macOS; siehe [Benachrichtigung erhalten, wenn Claude Eingaben benötigt](#get-notified-when-claude-needs-input) für Linux- und Windows-Befehle.

26 

27 ```json theme={null}

28 {

29 "hooks": {

30 "Notification": [

31 {

32 "matcher": "",

33 "hooks": [

34 {

35 "type": "command",

36 "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"

37 }

38 ]

39 }

40 ]

41 }

42 }

43 ```

44 

45 Wenn Ihre Einstellungsdatei bereits einen `hooks`-Schlüssel hat, fügen Sie `Notification` als Geschwister der vorhandenen Event-Schlüssel hinzu, anstatt das ganze Objekt zu ersetzen. Jeder Event-Name ist ein Schlüssel innerhalb des einzelnen `hooks`-Objekts:

46 

47 ```json theme={null}

48 {

49 "hooks": {

50 "PostToolUse": [

51 {

52 "matcher": "Edit|Write",

53 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write" }]

54 }

55 ],

56 "Notification": [

57 {

58 "matcher": "",

59 "hooks": [{ "type": "command", "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'" }]

60 }

61 ]

62 }

63 }

64 ```

65 

66 Sie können auch Claude bitten, den Hook für Sie zu schreiben, indem Sie beschreiben, was Sie in der CLI möchten.

67 </Step>

68 

69 <Step title="Überprüfen Sie die Konfiguration">

70 Geben Sie `/hooks` ein, um den Hooks-Browser zu öffnen. Sie sehen eine Liste aller verfügbaren Hook-Events mit einer Anzahl neben jedem Event, das Hooks konfiguriert hat. Wählen Sie `Notification` aus, um zu bestätigen, dass Ihr neuer Hook in der Liste angezeigt wird. Wenn Sie den Hook auswählen, werden seine Details angezeigt: das Event, der Matcher, der Typ, die Quelldatei und der Befehl.

71 </Step>

72 

73 <Step title="Testen Sie den Hook">

74 Drücken Sie `Esc`, um zur CLI zurückzukehren. Bitten Sie Claude, etwas zu tun, das eine Berechtigung erfordert, und wechseln Sie dann weg vom Terminal. Sie sollten eine Desktop-Benachrichtigung erhalten.

75 </Step>

76</Steps>

77 

78<Tip>

79 Das Menü `/hooks` ist schreibgeschützt. Um Hooks hinzuzufügen, zu ändern oder zu entfernen, bearbeiten Sie Ihre Einstellungs-JSON direkt oder bitten Sie Claude, die Änderung vorzunehmen.

80</Tip>

81 

82## Was Sie automatisieren können

83 

84Hooks ermöglichen es Ihnen, Code an Schlüsselpunkten im Lebenszyklus von Claude Code auszuführen: Dateien nach Bearbeitungen formatieren, Befehle vor der Ausführung blockieren, Benachrichtigungen senden, wenn Claude Eingaben benötigt, Kontext beim Sitzungsstart injizieren und vieles mehr. Für die vollständige Liste der Hook-Events siehe die [Hooks-Referenz](/de/hooks#hook-lifecycle).

85 

86Jedes Beispiel enthält einen einsatzbereiten Konfigurationsblock, den Sie einer [Einstellungsdatei](#configure-hook-location) hinzufügen. Die häufigsten Muster:

87 

88* [Benachrichtigung erhalten, wenn Claude Eingaben benötigt](#get-notified-when-claude-needs-input)

89* [Code nach Bearbeitungen automatisch formatieren](#auto-format-code-after-edits)

90* [Bearbeitungen geschützter Dateien blockieren](#block-edits-to-protected-files)

91* [Kontext nach Komprimierung erneut injizieren](#re-inject-context-after-compaction)

92* [Konfigurationsänderungen prüfen](#audit-configuration-changes)

93* [Umgebung neu laden, wenn sich Verzeichnis oder Dateien ändern](#reload-environment-when-directory-or-files-change)

94* [Bestimmte Berechtigungsaufforderungen automatisch genehmigen](#auto-approve-specific-permission-prompts)

95 

96### Benachrichtigung erhalten, wenn Claude Eingaben benötigt

97 

98Erhalten Sie eine Desktop-Benachrichtigung, wenn Claude die Arbeit beendet und Ihre Eingabe benötigt, damit Sie zu anderen Aufgaben wechseln können, ohne das Terminal zu überprüfen.

99 

100Dieser Hook verwendet das `Notification`-Event, das ausgelöst wird, wenn Claude auf Eingaben oder Berechtigungen wartet. Jede Registerkarte unten verwendet den nativen Benachrichtigungsbefehl der Plattform. Fügen Sie dies zu `~/.claude/settings.json` hinzu:

101 

102<Tabs>

103 <Tab title="macOS">

104 ```json theme={null}

105 {

106 "hooks": {

107 "Notification": [

108 {

109 "matcher": "",

110 "hooks": [

111 {

112 "type": "command",

113 "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"

114 }

115 ]

116 }

117 ]

118 }

119 }

120 ```

121 

122 <Accordion title="Wenn keine Benachrichtigung angezeigt wird">

123 `osascript` leitet Benachrichtigungen über die integrierte Script Editor-App weiter. Wenn Script Editor keine Benachrichtigungsberechtigung hat, schlägt der Befehl stillschweigend fehl, und macOS fordert Sie nicht auf, sie zu gewähren. Führen Sie dies einmal im Terminal aus, um Script Editor in Ihren Benachrichtigungseinstellungen angezeigt zu bekommen:

124 

125 ```bash theme={null}

126 osascript -e 'display notification "test"'

127 ```

128 

129 Es wird noch nichts angezeigt. Öffnen Sie **Systemeinstellungen > Benachrichtigungen**, suchen Sie **Script Editor** in der Liste und aktivieren Sie **Benachrichtigungen zulassen**. Führen Sie den Befehl erneut aus, um zu bestätigen, dass die Test-Benachrichtigung angezeigt wird.

130 </Accordion>

131 </Tab>

132 

133 <Tab title="Linux">

134 ```json theme={null}

135 {

136 "hooks": {

137 "Notification": [

138 {

139 "matcher": "",

140 "hooks": [

141 {

142 "type": "command",

143 "command": "notify-send 'Claude Code' 'Claude Code needs your attention'"

144 }

145 ]

146 }

147 ]

148 }

149 }

150 ```

151 </Tab>

152 

153 <Tab title="Windows (PowerShell)">

154 ```json theme={null}

155 {

156 "hooks": {

157 "Notification": [

158 {

159 "matcher": "",

160 "hooks": [

161 {

162 "type": "command",

163 "command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude Code needs your attention', 'Claude Code')\""

164 }

165 ]

166 }

167 ]

168 }

169 }

170 ```

171 </Tab>

172</Tabs>

173 

174Der leere `matcher` wird bei allen Benachrichtigungstypen ausgelöst. Um nur bei bestimmten Events ausgelöst zu werden, setzen Sie ihn auf einen dieser Werte:

175 

176| Matcher | Wird ausgelöst, wenn |

177| :--------------------- | :------------------------------------------------------------- |

178| `permission_prompt` | Claude benötigt Ihre Genehmigung für einen Tool-Einsatz |

179| `idle_prompt` | Claude ist fertig und wartet auf Ihre nächste Eingabe |

180| `auth_success` | Authentifizierung ist abgeschlossen |

181| `elicitation_dialog` | Ein MCP-Server öffnet ein Elicitation-Formular |

182| `elicitation_complete` | Ein MCP-Elicitation-Formular wird eingereicht oder verworfen |

183| `elicitation_response` | Eine MCP-Elicitation-Antwort wird an den Server zurückgesendet |

184 

185Geben Sie `/hooks` ein und wählen Sie `Notification` aus, um zu bestätigen, dass der Hook registriert ist. Für das vollständige Event-Schema siehe die [Notification-Referenz](/de/hooks#notification).

186 

187### Code nach Bearbeitungen automatisch formatieren

188 

189Führen Sie [Prettier](https://prettier.io/) automatisch auf jeder Datei aus, die Claude bearbeitet, damit die Formatierung konsistent bleibt, ohne manuelle Eingriffe.

190 

191Dieser Hook verwendet das `PostToolUse`-Event mit einem `Edit|Write`-Matcher, sodass er nur nach Datei-Bearbeitungs-Tools ausgeführt wird. Der Befehl extrahiert den bearbeiteten Dateipfad mit [`jq`](https://jqlang.github.io/jq/) und übergibt ihn an Prettier. Fügen Sie dies zu `.claude/settings.json` in Ihrem Projektverzeichnis hinzu:

192 

193```json theme={null}

194{

195 "hooks": {

196 "PostToolUse": [

197 {

198 "matcher": "Edit|Write",

199 "hooks": [

200 {

201 "type": "command",

202 "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"

203 }

204 ]

205 }

206 ]

207 }

208}

209```

210 

211<Note>

212 Die Bash-Beispiele auf dieser Seite verwenden `jq` zum Parsen von JSON. Installieren Sie es mit `brew install jq` (macOS), `apt-get install jq` (Debian/Ubuntu), oder siehe [`jq`-Downloads](https://jqlang.github.io/jq/download/).

213</Note>

214 

215### Bearbeitungen geschützter Dateien blockieren

216 

217Verhindern Sie, dass Claude sensible Dateien wie `.env`, `package-lock.json` oder alles in `.git/` ändert. Claude erhält Feedback, das erklärt, warum die Bearbeitung blockiert wurde, sodass es seinen Ansatz anpassen kann.

218 

219Dieses Beispiel verwendet eine separate Skriptdatei, die der Hook aufruft. Das Skript überprüft den Zieldateipfad gegen eine Liste geschützter Muster und beendet sich mit Code 2, um die Bearbeitung zu blockieren.

220 

221<Steps>

222 <Step title="Erstellen Sie das Hook-Skript">

223 Speichern Sie dies unter `.claude/hooks/protect-files.sh`:

224 

225 ```bash theme={null}

226 #!/bin/bash

227 # protect-files.sh

228 

229 INPUT=$(cat)

230 FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

231 

232 PROTECTED_PATTERNS=(".env" "package-lock.json" ".git/")

233 

234 for pattern in "${PROTECTED_PATTERNS[@]}"; do

235 if [[ "$FILE_PATH" == *"$pattern"* ]]; then

236 echo "Blocked: $FILE_PATH matches protected pattern '$pattern'" >&2

237 exit 2

238 fi

239 done

240 

241 exit 0

242 ```

243 </Step>

244 

245 <Step title="Machen Sie das Skript ausführbar (macOS/Linux)">

246 Hook-Skripte müssen ausführbar sein, damit Claude Code sie ausführen kann:

247 

248 ```bash theme={null}

249 chmod +x .claude/hooks/protect-files.sh

250 ```

251 </Step>

252 

253 <Step title="Registrieren Sie den Hook">

254 Fügen Sie einen `PreToolUse`-Hook zu `.claude/settings.json` hinzu, der das Skript vor jedem `Edit`- oder `Write`-Tool-Aufruf ausführt:

255 

256 ```json theme={null}

257 {

258 "hooks": {

259 "PreToolUse": [

260 {

261 "matcher": "Edit|Write",

262 "hooks": [

263 {

264 "type": "command",

265 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/protect-files.sh"

266 }

267 ]

268 }

269 ]

270 }

271 }

272 ```

273 </Step>

274</Steps>

275 

276### Kontext nach Komprimierung erneut injizieren

277 

278Wenn Claudes Kontextfenster voll wird, fasst die Komprimierung das Gespräch zusammen, um Platz freizugeben. Dies kann wichtige Details verlieren. Verwenden Sie einen `SessionStart`-Hook mit einem `compact`-Matcher, um nach jeder Komprimierung kritischen Kontext erneut zu injizieren.

279 

280Jeder Text, den Ihr Befehl auf stdout schreibt, wird zu Claudes Kontext hinzugefügt. Dieses Beispiel erinnert Claude an Projektkonventionen und aktuelle Arbeiten. Fügen Sie dies zu `.claude/settings.json` in Ihrem Projektverzeichnis hinzu:

281 

282```json theme={null}

283{

284 "hooks": {

285 "SessionStart": [

286 {

287 "matcher": "compact",

288 "hooks": [

289 {

290 "type": "command",

291 "command": "echo 'Reminder: use Bun, not npm. Run bun test before committing. Current sprint: auth refactor.'"

292 }

293 ]

294 }

295 ]

296 }

297}

298```

299 

300Sie können das `echo` durch jeden Befehl ersetzen, der dynamische Ausgabe erzeugt, wie `git log --oneline -5`, um aktuelle Commits anzuzeigen. Zum Injizieren von Kontext bei jedem Sitzungsstart sollten Sie stattdessen [CLAUDE.md](/de/memory) verwenden. Für Umgebungsvariablen siehe [`CLAUDE_ENV_FILE`](/de/hooks#persist-environment-variables) in der Referenz.

301 

302### Konfigurationsänderungen prüfen

303 

304Verfolgen Sie, wenn sich Einstellungs- oder Skills-Dateien während einer Sitzung ändern. Das `ConfigChange`-Event wird ausgelöst, wenn ein externer Prozess oder Editor eine Konfigurationsdatei ändert, sodass Sie Änderungen für Compliance protokollieren oder nicht autorisierte Änderungen blockieren können.

305 

306Dieses Beispiel hängt jede Änderung an ein Audit-Protokoll an. Fügen Sie dies zu `~/.claude/settings.json` hinzu:

307 

308```json theme={null}

309{

310 "hooks": {

311 "ConfigChange": [

312 {

313 "matcher": "",

314 "hooks": [

315 {

316 "type": "command",

317 "command": "jq -c '{timestamp: now | todate, source: .source, file: .file_path}' >> ~/claude-config-audit.log"

318 }

319 ]

320 }

321 ]

322 }

323}

324```

325 

326Der Matcher filtert nach Konfigurationstyp: `user_settings`, `project_settings`, `local_settings`, `policy_settings` oder `skills`. Um eine Änderung zu blockieren, beenden Sie mit Code 2 oder geben Sie `{"decision": "block"}` zurück. Siehe die [ConfigChange-Referenz](/de/hooks#configchange) für das vollständige Eingabe-Schema.

327 

328### Umgebung neu laden, wenn sich Verzeichnis oder Dateien ändern

329 

330Einige Projekte setzen unterschiedliche Umgebungsvariablen je nachdem, in welchem Verzeichnis Sie sich befinden. Tools wie [direnv](https://direnv.net/) tun dies automatisch in Ihrer Shell, aber Claudes Bash-Tool übernimmt diese Änderungen nicht automatisch.

331 

332Das Pairing eines `SessionStart`-Hooks mit einem `CwdChanged`-Hook behebt dies. `SessionStart` lädt die Variablen für das Verzeichnis, in dem Sie starten, und `CwdChanged` lädt sie jedes Mal neu, wenn Claude das Verzeichnis wechselt. Beide schreiben in `CLAUDE_ENV_FILE`, die Claude Code vor jedem Bash-Befehl als Skript-Präambel ausführt. Fügen Sie dies zu `~/.claude/settings.json` hinzu:

333 

334```json theme={null}

335{

336 "hooks": {

337 "SessionStart": [

338 {

339 "hooks": [

340 {

341 "type": "command",

342 "command": "direnv export bash > \"$CLAUDE_ENV_FILE\""

343 }

344 ]

345 }

346 ],

347 "CwdChanged": [

348 {

349 "hooks": [

350 {

351 "type": "command",

352 "command": "direnv export bash > \"$CLAUDE_ENV_FILE\""

353 }

354 ]

355 }

356 ]

357 }

358}

359```

360 

361Führen Sie `direnv allow` einmal in jedem Verzeichnis aus, das eine `.envrc` hat, damit direnv berechtigt ist, sie zu laden. Wenn Sie devbox oder nix statt direnv verwenden, funktioniert das gleiche Muster mit `devbox shellenv` oder `devbox global shellenv` anstelle von `direnv export bash`.

362 

363Um auf bestimmte Dateien statt auf jeden Verzeichniswechsel zu reagieren, verwenden Sie `FileChanged` mit einem `matcher`, der die zu überwachenden Dateinamen auflistet, getrennt durch `|`. Um die Überwachungsliste zu erstellen, wird dieser Wert in Dateinamen aufgeteilt, anstatt als Regex ausgewertet zu werden. Siehe [FileChanged](/de/hooks#filechanged) für die Funktionsweise desselben Werts, der auch filtert, welche Hook-Gruppen ausgeführt werden, wenn sich eine Datei ändert. Dieses Beispiel überwacht `.envrc` und `.env` im Arbeitsverzeichnis:

364 

365```json theme={null}

366{

367 "hooks": {

368 "FileChanged": [

369 {

370 "matcher": ".envrc|.env",

371 "hooks": [

372 {

373 "type": "command",

374 "command": "direnv export bash > \"$CLAUDE_ENV_FILE\""

375 }

376 ]

377 }

378 ]

379 }

380}

381```

382 

383Siehe die [CwdChanged](/de/hooks#cwdchanged)- und [FileChanged](/de/hooks#filechanged)-Referenzeinträge für Eingabe-Schemas, `watchPaths`-Ausgabe und `CLAUDE_ENV_FILE`-Details.

384 

385### Bestimmte Berechtigungsaufforderungen automatisch genehmigen

386 

387Überspringen Sie den Genehmigungsdialog für Tool-Aufrufe, die Sie immer zulassen. Dieses Beispiel genehmigt automatisch `ExitPlanMode`, das Tool, das Claude aufruft, wenn es fertig ist, einen Plan zu präsentieren und fragt, ob es fortfahren soll, sodass Sie nicht jedes Mal aufgefordert werden, wenn ein Plan bereit ist.

388 

389Im Gegensatz zu den Exit-Code-Beispielen oben erfordert die automatische Genehmigung, dass Ihr Hook eine JSON-Entscheidung auf stdout schreibt. Ein `PermissionRequest`-Hook wird ausgelöst, wenn Claude Code einen Berechtigungsdialog anzeigen wird, und die Rückgabe von `"behavior": "allow"` beantwortet ihn in Ihrem Namen.

390 

391Der Matcher beschränkt den Hook nur auf `ExitPlanMode`, sodass keine anderen Aufforderungen betroffen sind. Fügen Sie dies zu `~/.claude/settings.json` hinzu:

392 

393```json theme={null}

394{

395 "hooks": {

396 "PermissionRequest": [

397 {

398 "matcher": "ExitPlanMode",

399 "hooks": [

400 {

401 "type": "command",

402 "command": "echo '{\"hookSpecificOutput\": {\"hookEventName\": \"PermissionRequest\", \"decision\": {\"behavior\": \"allow\"}}}'"

403 }

404 ]

405 }

406 ]

407 }

408}

409```

410 

411Wenn der Hook genehmigt, beendet Claude Code den Plan-Modus und stellt den Berechtigungsmodus wieder her, der vor dem Eintritt in den Plan-Modus aktiv war. Das Transkript zeigt „Allowed by PermissionRequest hook" an der Stelle, an der der Dialog angezeigt worden wäre. Der Hook-Pfad behält immer das aktuelle Gespräch: Er kann den Kontext nicht löschen und eine neue Implementierungssitzung auf die Weise starten, wie der Dialog es kann.

412 

413Um stattdessen einen bestimmten Berechtigungsmodus festzulegen, kann die Ausgabe Ihres Hooks ein Array `updatedPermissions` mit einem `setMode`-Eintrag enthalten. Der Wert `mode` ist ein beliebiger Berechtigungsmodus wie `default`, `acceptEdits` oder `bypassPermissions`, und `destination: "session"` wendet ihn nur für die aktuelle Sitzung an.

414 

415<Note>

416 `bypassPermissions` gilt nur, wenn die Sitzung mit bereits verfügbarem Bypass-Modus gestartet wurde: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions` oder `permissions.defaultMode: "bypassPermissions"` in Einstellungen, und nicht deaktiviert durch [`permissions.disableBypassPermissionsMode`](/de/permissions#managed-settings). Es wird niemals als `defaultMode` beibehalten.

417</Note>

418 

419Um die Sitzung zu `acceptEdits` zu wechseln, schreibt Ihr Hook dieses JSON auf stdout:

420 

421```json theme={null}

422{

423 "hookSpecificOutput": {

424 "hookEventName": "PermissionRequest",

425 "decision": {

426 "behavior": "allow",

427 "updatedPermissions": [

428 { "type": "setMode", "mode": "acceptEdits", "destination": "session" }

429 ]

430 }

431 }

432}

433```

434 

435Halten Sie den Matcher so eng wie möglich. Das Abgleichen von `.*` oder das Lassen des Matchers leer würde jede Berechtigungsaufforderung automatisch genehmigen, einschließlich Dateischreibvorgänge und Shell-Befehle. Siehe die [PermissionRequest-Referenz](/de/hooks#permissionrequest-decision-control) für den vollständigen Satz von Entscheidungsfeldern.

436 

437## Wie Hooks funktionieren

438 

439Hook-Events werden an bestimmten Lebenszykluspunkten in Claude Code ausgelöst. Wenn ein Event ausgelöst wird, werden alle übereinstimmenden Hooks parallel ausgeführt, und identische Hook-Befehle werden automatisch dedupliziert. Die folgende Tabelle zeigt jedes Event und wann es ausgelöst wird:

440 

441| Event | When it fires |

442| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |

443| `SessionStart` | When a session begins or resumes |

444| `Setup` | When you start Claude Code with `--init-only`, or with `--init` or `--maintenance` in `-p` mode. For one-time preparation in CI or scripts |

445| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |

446| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |

447| `PreToolUse` | Before a tool call executes. Can block it |

448| `PermissionRequest` | When a permission dialog appears |

449| `PermissionDenied` | When a tool call is denied by the auto mode classifier. Return `{retry: true}` to tell the model it may retry the denied tool call |

450| `PostToolUse` | After a tool call succeeds |

451| `PostToolUseFailure` | After a tool call fails |

452| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |

453| `Notification` | When Claude Code sends a notification |

454| `SubagentStart` | When a subagent is spawned |

455| `SubagentStop` | When a subagent finishes |

456| `TaskCreated` | When a task is being created via `TaskCreate` |

457| `TaskCompleted` | When a task is being marked as completed |

458| `Stop` | When Claude finishes responding |

459| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |

460| `TeammateIdle` | When an [agent team](/en/agent-teams) teammate is about to go idle |

461| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |

462| `ConfigChange` | When a configuration file changes during a session |

463| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |

464| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |

465| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |

466| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |

467| `PreCompact` | Before context compaction |

468| `PostCompact` | After context compaction completes |

469| `Elicitation` | When an MCP server requests user input during a tool call |

470| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |

471| `SessionEnd` | When a session terminates |

472 

473Wenn mehrere Hooks übereinstimmen, gibt jeder sein eigenes Ergebnis zurück. Für Entscheidungen wählt Claude Code die restriktivste Antwort. Ein `PreToolUse`-Hook, der `deny` zurückgibt, bricht den Tool-Aufruf ab, egal was die anderen zurückgeben. Ein Hook, der `ask` zurückgibt, erzwingt die Berechtigungsaufforderung, auch wenn der Rest `allow` zurückgibt. Text aus `additionalContext` wird von jedem Hook beibehalten und zusammen an Claude übergeben.

474 

475Jeder Hook hat einen `type`, der bestimmt, wie er ausgeführt wird. Die meisten Hooks verwenden `"type": "command"`, was einen Shell-Befehl ausführt. Vier weitere Typen sind verfügbar:

476 

477* `"type": "http"`: Event-Daten an eine URL POSTen. Siehe [HTTP-Hooks](#http-hooks).

478* `"type": "mcp_tool"`: ein Tool auf einem bereits verbundenen MCP-Server aufrufen. Siehe [MCP-Tool-Hooks](/de/hooks#mcp-tool-hook-fields).

479* `"type": "prompt"`: Single-Turn-LLM-Bewertung. Siehe [Prompt-basierte Hooks](#prompt-based-hooks).

480* `"type": "agent"`: Multi-Turn-Verifizierung mit Tool-Zugriff. Agent-Hooks sind experimentell und können sich ändern. Siehe [Agent-basierte Hooks](#agent-based-hooks).

481 

482### Eingabe lesen und Ausgabe zurückgeben

483 

484Hooks kommunizieren mit Claude Code über stdin, stdout, stderr und Exit-Codes. Wenn ein Event ausgelöst wird, übergibt Claude Code Event-spezifische Daten als JSON an stdin Ihres Skripts. Ihr Skript liest diese Daten, führt seine Arbeit aus und teilt Claude Code mit, was als nächstes zu tun ist, über den Exit-Code.

485 

486#### Hook-Eingabe

487 

488Jedes Event enthält gemeinsame Felder wie `session_id` und `cwd`, aber jeder Event-Typ fügt unterschiedliche Daten hinzu. Wenn Claude beispielsweise einen Bash-Befehl ausführt, erhält ein `PreToolUse`-Hook etwa folgendes auf stdin:

489 

490```json theme={null}

491{

492 "session_id": "abc123", // eindeutige ID für diese Sitzung

493 "cwd": "/Users/sarah/myproject", // Arbeitsverzeichnis, wenn das Event ausgelöst wurde

494 "hook_event_name": "PreToolUse", // welches Event diesen Hook ausgelöst hat

495 "tool_name": "Bash", // das Tool, das Claude verwenden wird

496 "tool_input": { // die Argumente, die Claude an das Tool übergeben hat

497 "command": "npm test" // für Bash ist dies der Shell-Befehl

498 }

499}

500```

501 

502Ihr Skript kann dieses JSON parsen und auf alle diese Felder reagieren. `UserPromptSubmit`-Hooks erhalten stattdessen den `prompt`-Text, `SessionStart`-Hooks erhalten die `source` (startup, resume, clear, compact) und so weiter. Siehe [Gemeinsame Eingabefelder](/de/hooks#common-input-fields) in der Referenz für gemeinsame Felder und jeden Event-Abschnitt für Event-spezifische Schemas.

503 

504#### Hook-Ausgabe

505 

506Ihr Skript teilt Claude Code mit, was als nächstes zu tun ist, indem es auf stdout oder stderr schreibt und mit einem bestimmten Code beendet wird. Beispielsweise ein `PreToolUse`-Hook, der einen Befehl blockieren möchte:

507 

508```bash theme={null}

509#!/bin/bash

510INPUT=$(cat)

511COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command')

512 

513if echo "$COMMAND" | grep -q "drop table"; then

514 echo "Blocked: dropping tables is not allowed" >&2 # stderr wird zu Claudes Feedback

515 exit 2 # exit 2 = Aktion blockieren

516fi

517 

518exit 0 # exit 0 = fortfahren

519```

520 

521Der Exit-Code bestimmt, was als nächstes passiert:

522 

523* **Exit 0**: die Aktion wird fortgesetzt. Für `UserPromptSubmit`, `UserPromptExpansion` und `SessionStart`-Hooks wird alles, was Sie auf stdout schreiben, zu Claudes Kontext hinzugefügt.

524* **Exit 2**: die Aktion wird blockiert. Schreiben Sie einen Grund auf stderr, und Claude erhält ihn als Feedback, sodass er sich anpassen kann. Einige Events können nicht blockiert werden: Für `SessionStart`, `Setup`, `Notification` und andere zeigt exit 2 stderr dem Benutzer an und die Ausführung wird fortgesetzt. Siehe [Exit-Code-2-Verhalten pro Event](/de/hooks#exit-code-2-behavior-per-event) für die vollständige Liste.

525* **Jeder andere Exit-Code**: die Aktion wird fortgesetzt. Das Transkript zeigt eine `<hook name> hook error`-Meldung gefolgt von der ersten Zeile von stderr; das vollständige stderr geht in das [Debug-Protokoll](/de/hooks#debug-hooks).

526 

527#### Strukturierte JSON-Ausgabe

528 

529Exit-Codes geben Ihnen zwei Optionen: zulassen oder blockieren. Für mehr Kontrolle beenden Sie mit 0 und geben stattdessen ein JSON-Objekt auf stdout aus.

530 

531<Note>

532 Verwenden Sie exit 2, um mit einer stderr-Meldung zu blockieren, oder exit 0 mit JSON für strukturierte Kontrolle. Mischen Sie sie nicht: Claude Code ignoriert JSON, wenn Sie mit 2 beenden.

533</Note>

534 

535Beispielsweise kann ein `PreToolUse`-Hook einen Tool-Aufruf ablehnen und Claude mitteilen, warum, oder ihn dem Benutzer zur Genehmigung eskalieren:

536 

537```json theme={null}

538{

539 "hookSpecificOutput": {

540 "hookEventName": "PreToolUse",

541 "permissionDecision": "deny",

542 "permissionDecisionReason": "Use rg instead of grep for better performance"

543 }

544}

545```

546 

547Mit `"deny"` bricht Claude Code den Tool-Aufruf ab und gibt `permissionDecisionReason` an Claude als Feedback zurück. Diese `permissionDecision`-Werte sind spezifisch für `PreToolUse`:

548 

549* `"allow"`: die interaktive Berechtigungsaufforderung überspringen. Deny- und Ask-Regeln, einschließlich verwalteter Deny-Listen, gelten weiterhin

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

551* `"ask"`: Berechtigungsaufforderung dem Benutzer wie gewohnt anzeigen

552 

553Ein vierter Wert, `"defer"`, ist im [nicht-interaktiven Modus](/de/headless) mit dem Flag `-p` verfügbar. Er beendet den Prozess mit dem beibehaltenen Tool-Aufruf, sodass ein Agent SDK-Wrapper Eingaben sammeln und fortfahren kann. Siehe [Einen Tool-Aufruf für später aufschieben](/de/hooks#defer-a-tool-call-for-later) in der Referenz.

554 

555Die Rückgabe von `"allow"` überspringt die interaktive Aufforderung, überschreibt aber nicht [Berechtigungsregeln](/de/permissions#manage-permissions). Wenn eine Deny-Regel dem Tool-Aufruf entspricht, wird der Aufruf blockiert, auch wenn Ihr Hook `"allow"` zurückgibt. Wenn eine Ask-Regel entspricht, wird der Benutzer immer noch aufgefordert. Dies bedeutet, dass Deny-Regeln aus jedem Einstellungsbereich, einschließlich [verwalteter Einstellungen](/de/settings#settings-files), immer Vorrang vor Hook-Genehmigungen haben.

556 

557Andere Events verwenden unterschiedliche Entscheidungsmuster. Beispielsweise verwenden `PostToolUse`- und `Stop`-Hooks ein Top-Level-Feld `decision: "block"`, während `PermissionRequest` `hookSpecificOutput.decision.behavior` verwendet. Siehe die [Zusammenfassungstabelle](/de/hooks#decision-control) in der Referenz für eine vollständige Aufschlüsselung nach Event.

558 

559Für `UserPromptSubmit`-Hooks verwenden Sie stattdessen `additionalContext`, um Text in Claudes Kontext zu injizieren. Prompt-basierte Hooks (`type: "prompt"`) handhaben die Ausgabe anders: siehe [Prompt-basierte Hooks](#prompt-based-hooks).

560 

561### Hooks mit Matchern filtern

562 

563Ohne einen Matcher wird ein Hook bei jedem Auftreten seines Events ausgelöst. Matcher ermöglichen es Ihnen, das einzugrenzen. Wenn Sie beispielsweise einen Formatter nur nach Datei-Bearbeitungen ausführen möchten (nicht nach jedem Tool-Aufruf), fügen Sie einen Matcher zu Ihrem `PostToolUse`-Hook hinzu:

564 

565```json theme={null}

566{

567 "hooks": {

568 "PostToolUse": [

569 {

570 "matcher": "Edit|Write",

571 "hooks": [

572 { "type": "command", "command": "prettier --write ..." }

573 ]

574 }

575 ]

576 }

577}

578```

579 

580Der `"Edit|Write"`-Matcher wird ausgelöst, wenn Claude das `Edit`- oder `Write`-Tool verwendet, nicht wenn es `Bash`, `Read` oder ein anderes Tool verwendet. Siehe [Matcher-Muster](/de/hooks#matcher-patterns) für die Auswertung von einfachen Namen und regulären Ausdrücken.

581 

582<Note>

583 Claude kann auch Dateien erstellen oder ändern, indem er Shell-Befehle über das `Bash`-Tool ausführt. Wenn Ihr Hook jede Dateiänderung sehen muss, z. B. für Compliance-Scanning oder Audit-Protokollierung, fügen Sie einen [`Stop`](/de/hooks#stop)-Hook hinzu, der den Arbeitsbaum einmal pro Runde scannt. Für Pro-Aufruf-Abdeckung stattdessen auch `Bash` abgleichen und Ihr Skript geänderte und nicht verfolgte Dateien mit `git status --porcelain` auflisten.

584</Note>

585 

586Jeder Event-Typ gleicht ein bestimmtes Feld ab:

587 

588| Event | Worauf der Matcher filtert | Beispiel-Matcher-Werte |

589| :-------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- |

590| `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied` | Tool-Name | `Bash`, `Edit\|Write`, `mcp__.*` |

591| `SessionStart` | wie die Sitzung gestartet wurde | `startup`, `resume`, `clear`, `compact` |

592| `Setup` | welches CLI-Flag das Setup ausgelöst hat | `init`, `maintenance` |

593| `SessionEnd` | warum die Sitzung endete | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |

594| `Notification` | Benachrichtigungstyp | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response` |

595| `SubagentStart` | Agent-Typ | `general-purpose`, `Explore`, `Plan` oder benutzerdefinierte Agent-Namen |

596| `PreCompact`, `PostCompact` | was die Komprimierung ausgelöst hat | `manual`, `auto` |

597| `SubagentStop` | Agent-Typ | gleiche Werte wie `SubagentStart` |

598| `ConfigChange` | Konfigurationsquelle | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |

599| `StopFailure` | Fehlertyp | `rate_limit`, `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `invalid_request`, `server_error`, `max_output_tokens`, `unknown` |

600| `InstructionsLoaded` | Ladegrund | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |

601| `Elicitation` | MCP-Servername | Ihre konfigurierten MCP-Servernamen |

602| `ElicitationResult` | MCP-Servername | gleiche Werte wie `Elicitation` |

603| `FileChanged` | Dateinamen zum Überwachen (siehe [FileChanged](/de/hooks#filechanged)) | `.envrc\|.env` |

604| `UserPromptExpansion` | Befehlsname | Ihre Skill- oder Befehlsnamen |

605| `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `CwdChanged` | keine Matcher-Unterstützung | wird immer bei jedem Auftreten ausgelöst |

606 

607Ein paar weitere Beispiele, die Matcher auf verschiedene Event-Typen zeigen:

608 

609<Tabs>

610 <Tab title="Jeden Bash-Befehl protokollieren">

611 Gleichen Sie nur `Bash`-Tool-Aufrufe ab und protokollieren Sie jeden Befehl in einer Datei. Das `PostToolUse`-Event wird ausgelöst, nachdem der Befehl abgeschlossen ist, sodass `tool_input.command` enthält, was ausgeführt wurde. Der Hook erhält die Event-Daten als JSON auf stdin, und `jq -r '.tool_input.command'` extrahiert nur die Befehlszeichenfolge, die `>>` an die Protokolldatei anhängt:

612 

613 ```json theme={null}

614 {

615 "hooks": {

616 "PostToolUse": [

617 {

618 "matcher": "Bash",

619 "hooks": [

620 {

621 "type": "command",

622 "command": "jq -r '.tool_input.command' >> ~/.claude/command-log.txt"

623 }

624 ]

625 }

626 ]

627 }

628 }

629 ```

630 </Tab>

631 

632 <Tab title="MCP-Tools abgleichen">

633 MCP-Tools verwenden eine andere Namenskonvention als integrierte Tools: `mcp__<server>__<tool>`, wobei `<server>` der MCP-Servername und `<tool>` das Tool ist, das er bereitstellt. Beispielsweise `mcp__github__search_repositories` oder `mcp__filesystem__read_file`. Verwenden Sie einen Regex-Matcher, um alle Tools von einem bestimmten Server zu erfassen, oder gleichen Sie Server übergreifend mit einem Muster wie `mcp__.*__write.*` ab. Siehe [MCP-Tools abgleichen](/de/hooks#match-mcp-tools) in der Referenz für die vollständige Liste der Beispiele.

634 

635 Der folgende Befehl extrahiert den Tool-Namen aus der Hook-JSON-Eingabe mit `jq` und schreibt ihn auf stderr. Das Schreiben auf stderr hält stdout sauber für JSON-Ausgabe und sendet die Meldung in das [Debug-Protokoll](/de/hooks#debug-hooks):

636 

637 ```json theme={null}

638 {

639 "hooks": {

640 "PreToolUse": [

641 {

642 "matcher": "mcp__github__.*",

643 "hooks": [

644 {

645 "type": "command",

646 "command": "echo \"GitHub tool called: $(jq -r '.tool_name')\" >&2"

647 }

648 ]

649 }

650 ]

651 }

652 }

653 ```

654 </Tab>

655 

656 <Tab title="Beim Sitzungsende aufräumen">

657 Das `SessionEnd`-Event unterstützt Matcher auf den Grund, warum die Sitzung endete. Dieser Hook wird nur bei `clear` ausgelöst (wenn Sie `/clear` ausführen), nicht bei normalen Exits:

658 

659 ```json theme={null}

660 {

661 "hooks": {

662 "SessionEnd": [

663 {

664 "matcher": "clear",

665 "hooks": [

666 {

667 "type": "command",

668 "command": "rm -f /tmp/claude-scratch-*.txt"

669 }

670 ]

671 }

672 ]

673 }

674 }

675 ```

676 </Tab>

677</Tabs>

678 

679Für die vollständige Matcher-Syntax siehe die [Hooks-Referenz](/de/hooks#configuration).

680 

681#### Hooks mit dem Feld `if` nach Tool-Name und Argumenten filtern

682 

683<Note>

684 Das Feld `if` erfordert Claude Code v2.1.85 oder später. Frühere Versionen ignorieren es und führen den Hook bei jedem abgeglichenen Aufruf aus.

685</Note>

686 

687Das Feld `if` verwendet [Berechtigungsregel-Syntax](/de/permissions) zum Filtern von Hooks nach Tool-Name und Argumenten zusammen, sodass der Hook-Prozess nur spawnt, wenn der Tool-Aufruf übereinstimmt, oder wenn ein Bash-Befehl zu komplex ist, um ihn zu parsen. Dies geht über `matcher` hinaus, das nur auf Tool-Name-Ebene filtert.

688 

689Beispielsweise, um einen Hook nur auszuführen, wenn Claude `git`-Befehle verwendet, anstatt alle Bash-Befehle:

690 

691```json theme={null}

692{

693 "hooks": {

694 "PreToolUse": [

695 {

696 "matcher": "Bash",

697 "hooks": [

698 {

699 "type": "command",

700 "if": "Bash(git *)",

701 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/check-git-policy.sh"

702 }

703 ]

704 }

705 ]

706 }

707}

708```

709 

710Der Hook-Prozess spawnt nur, wenn ein Subbefehl des Bash-Befehls mit `git *` übereinstimmt, oder wenn der Befehl zu komplex ist, um ihn in Subcommands zu parsen. Für zusammengesetzte Befehle wie `npm test && git push` wertet Claude Code jeden Subbefehl aus und löst den Hook aus, weil `git push` übereinstimmt. Das Feld `if` akzeptiert die gleichen Muster wie Berechtigungsregeln: `"Bash(git *)"`, `"Edit(*.ts)"` und so weiter. Um mehrere Tool-Namen abzugleichen, verwenden Sie separate Handler, jeder mit seinem eigenen `if`-Wert, oder gleichen Sie auf der `matcher`-Ebene ab, wo Pipe-Alternation unterstützt wird.

711 

712`if` funktioniert nur bei Tool-Events: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` und `PermissionDenied`. Das Hinzufügen zu einem anderen Event verhindert, dass der Hook ausgeführt wird.

713 

714### Hook-Speicherort konfigurieren

715 

716Wo Sie einen Hook hinzufügen, bestimmt seinen Bereich:

717 

718| Speicherort | Bereich | Freigegeben |

719| :----------------------------------------------------------- | :------------------------------------- | :------------------------------------ |

720| `~/.claude/settings.json` | Alle Ihre Projekte | Nein, lokal auf Ihrem Computer |

721| `.claude/settings.json` | Einzelnes Projekt | Ja, kann im Repo committed werden |

722| `.claude/settings.local.json` | Einzelnes Projekt | Nein, gitignoriert |

723| Verwaltete Richtlinieneinstellungen | Organisationsweit | Ja, von Admin kontrolliert |

724| [Plugin](/de/plugins) `hooks/hooks.json` | Wenn Plugin aktiviert ist | Ja, mit dem Plugin gebündelt |

725| [Skill](/de/skills) oder [Agent](/de/sub-agents) Frontmatter | Während der Skill oder Agent aktiv ist | Ja, in der Komponentendatei definiert |

726 

727Führen Sie [`/hooks`](/de/hooks#the-hooks-menu) in Claude Code aus, um alle konfigurierten Hooks nach Event gruppiert zu durchsuchen. Um alle Hooks auf einmal zu deaktivieren, setzen Sie `"disableAllHooks": true` in Ihrer Einstellungsdatei.

728 

729Wenn Sie Einstellungsdateien direkt bearbeiten, während Claude Code läuft, werden Hook-Änderungen normalerweise automatisch vom Datei-Watcher aufgegriffen.

730 

731## Prompt-basierte Hooks

732 

733Für Entscheidungen, die Urteilsvermögen erfordern, anstatt deterministischer Regeln, verwenden Sie `type: "prompt"`-Hooks. Anstatt einen Shell-Befehl auszuführen, sendet Claude Code Ihren Prompt und die Hook-Eingabedaten an ein Claude-Modell (standardmäßig Haiku), um die Entscheidung zu treffen. Sie können ein anderes Modell mit dem Feld `model` angeben, wenn Sie mehr Leistung benötigen.

734 

735Die einzige Aufgabe des Modells ist, eine Ja/Nein-Entscheidung als JSON zurückzugeben:

736 

737* `"ok": true`: die Aktion wird fortgesetzt

738* `"ok": false`: was passiert, hängt vom Ereignis ab:

739 * `Stop` und `SubagentStop`: der `reason` wird an Claude zurückgegeben, sodass es weiterarbeitet

740 * `PreToolUse`: der Tool-Aufruf wird verweigert und der `reason` wird an Claude als Tool-Fehler zurückgegeben, sodass es sich anpassen und fortfahren kann

741 * `PostToolUse`, `PostToolBatch`, `UserPromptSubmit` und `UserPromptExpansion`: der Zug endet und der `reason` erscheint im Chat als Warnzeile

742 

743Dieses Beispiel verwendet einen `Stop`-Hook, um das Modell zu fragen, ob alle angeforderten Aufgaben abgeschlossen sind. Wenn das Modell `"ok": false` zurückgibt, arbeitet Claude weiter und verwendet den `reason` als nächste Anweisung:

744 

745```json theme={null}

746{

747 "hooks": {

748 "Stop": [

749 {

750 "hooks": [

751 {

752 "type": "prompt",

753 "prompt": "Check if all tasks are complete. If not, respond with {\"ok\": false, \"reason\": \"what remains to be done\"}."

754 }

755 ]

756 }

757 ]

758 }

759}

760```

761 

762Für vollständige Konfigurationsoptionen siehe [Prompt-basierte Hooks](/de/hooks#prompt-based-hooks) in der Referenz.

763 

764## Agent-basierte Hooks

765 

766<Warning>

767 Agent-Hooks sind experimentell. Verhalten und Konfiguration können sich in zukünftigen Versionen ändern. Für Produktions-Workflows bevorzugen Sie [Command-Hooks](/de/hooks#command-hook-fields).

768</Warning>

769 

770Wenn die Verifizierung das Inspizieren von Dateien oder das Ausführen von Befehlen erfordert, verwenden Sie `type: "agent"`-Hooks. Im Gegensatz zu Prompt-Hooks, die einen einzelnen LLM-Aufruf tätigen, spawnen Agent-Hooks einen Subagent, der Dateien lesen, Code durchsuchen und andere Tools verwenden kann, um Bedingungen zu überprüfen, bevor eine Entscheidung zurückgegeben wird.

771 

772Agent-Hooks verwenden das gleiche `"ok"` / `"reason"`-Antwortformat wie Prompt-Hooks, aber mit einem längeren Standard-Timeout von 60 Sekunden und bis zu 50 Tool-Use-Turns.

773 

774Dieses Beispiel überprüft, dass Tests bestanden werden, bevor Claude beendet werden darf:

775 

776```json theme={null}

777{

778 "hooks": {

779 "Stop": [

780 {

781 "hooks": [

782 {

783 "type": "agent",

784 "prompt": "Verify that all unit tests pass. Run the test suite and check the results. $ARGUMENTS",

785 "timeout": 120

786 }

787 ]

788 }

789 ]

790 }

791}

792```

793 

794Verwenden Sie Prompt-Hooks, wenn die Hook-Eingabedaten allein ausreichen, um eine Entscheidung zu treffen. Verwenden Sie Agent-Hooks, wenn Sie etwas gegen den tatsächlichen Zustand der Codebasis überprüfen müssen.

795 

796Für vollständige Konfigurationsoptionen siehe [Agent-basierte Hooks](/de/hooks#agent-based-hooks) in der Referenz.

797 

798## HTTP-Hooks

799 

800Verwenden Sie `type: "http"`-Hooks, um Event-Daten an einen HTTP-Endpunkt zu POSTen, anstatt einen Shell-Befehl auszuführen. Der Endpunkt erhält die gleichen JSON-Daten, die ein Command-Hook auf stdin erhalten würde, und gibt Ergebnisse über den HTTP-Antwortkörper mit dem gleichen JSON-Format zurück.

801 

802HTTP-Hooks sind nützlich, wenn Sie möchten, dass ein Webserver, eine Cloud-Funktion oder ein externer Service Hook-Logik handhabt: beispielsweise ein gemeinsamer Audit-Service, der Tool-Use-Events über ein Team hinweg protokolliert.

803 

804Dieses Beispiel POSTet jeden Tool-Use an einen lokalen Logging-Service:

805 

806```json theme={null}

807{

808 "hooks": {

809 "PostToolUse": [

810 {

811 "hooks": [

812 {

813 "type": "http",

814 "url": "http://localhost:8080/hooks/tool-use",

815 "headers": {

816 "Authorization": "Bearer $MY_TOKEN"

817 },

818 "allowedEnvVars": ["MY_TOKEN"]

819 }

820 ]

821 }

822 ]

823 }

824}

825```

826 

827Der Endpunkt sollte einen JSON-Antwortkörper mit dem gleichen [Ausgabeformat](/de/hooks#json-output) wie Command-Hooks zurückgeben. Um einen Tool-Aufruf zu blockieren, geben Sie eine 2xx-Antwort mit den entsprechenden `hookSpecificOutput`-Feldern zurück. HTTP-Statuscodes allein können Aktionen nicht blockieren.

828 

829Header-Werte unterstützen Umgebungsvariablen-Interpolation mit `$VAR_NAME` oder `${VAR_NAME}`-Syntax. Nur Variablen, die im Array `allowedEnvVars` aufgelistet sind, werden aufgelöst; alle anderen `$VAR`-Referenzen bleiben leer.

830 

831Für vollständige Konfigurationsoptionen und Response-Handling siehe [HTTP-Hooks](/de/hooks#http-hook-fields) in der Referenz.

832 

833## Einschränkungen und Fehlerbehebung

834 

835### Einschränkungen

836 

837* Command-Hooks kommunizieren nur über stdout, stderr und Exit-Codes. Sie können `/`-Befehle oder Tool-Aufrufe nicht direkt auslösen. Text, der über `additionalContext` zurückgegeben wird, wird als Systemerinnerung injiziert, die Claude als Klartext liest. HTTP-Hooks kommunizieren stattdessen über den Response-Body.

838* Hook-Timeout beträgt standardmäßig 10 Minuten, konfigurierbar pro Hook mit dem Feld `timeout` (in Sekunden).

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

840* `PermissionRequest`-Hooks werden nicht im [nicht-interaktiven Modus](/de/headless) (`-p`) ausgelöst. Verwenden Sie stattdessen `PreToolUse`-Hooks für automatisierte Berechtigungsentscheidungen.

841* `Stop`-Hooks werden ausgelöst, wenn Claude antwortet, nicht nur bei Aufgabenabschluss. Sie werden nicht bei Benutzerunterbrechungen ausgelöst. API-Fehler lösen stattdessen [StopFailure](/de/hooks#stopfailure) aus.

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

843 

844### Hooks und Berechtigungsmodi

845 

846PreToolUse-Hooks werden vor jeder Berechtigungsmodus-Überprüfung ausgelöst. Ein Hook, der `permissionDecision: "deny"` zurückgibt, blockiert das Tool auch im `bypassPermissions`-Modus oder mit `--dangerously-skip-permissions`. Dies ermöglicht es Ihnen, Richtlinien durchzusetzen, die Benutzer nicht umgehen können, indem sie ihren Berechtigungsmodus ändern.

847 

848Das Gegenteil ist nicht wahr: Ein Hook, der `"allow"` zurückgibt, umgeht keine Deny-Regeln aus Einstellungen. Hooks können Einschränkungen verschärfen, aber nicht über das hinaus lockern, was Berechtigungsregeln zulassen.

849 

850### Hook wird nicht ausgelöst

851 

852Der Hook ist konfiguriert, wird aber nie ausgeführt.

853 

854* Führen Sie `/hooks` aus und bestätigen Sie, dass der Hook unter dem richtigen Event angezeigt wird

855* Überprüfen Sie, dass das Matcher-Muster den Tool-Namen genau abgleicht (Matcher sind Groß-/Kleinschreibung-empfindlich)

856* Überprüfen Sie, dass Sie den richtigen Event-Typ auslösen (z. B. `PreToolUse` wird vor der Tool-Ausführung ausgelöst, `PostToolUse` wird danach ausgelöst)

857* Wenn Sie `PermissionRequest`-Hooks im nicht-interaktiven Modus (`-p`) verwenden, wechseln Sie stattdessen zu `PreToolUse`

858 

859### Hook-Fehler in der Ausgabe

860 

861Sie sehen eine Meldung wie "PreToolUse hook error: ..." im Transkript.

862 

863* Ihr Skript wurde unerwartet mit einem Nicht-Null-Code beendet. Testen Sie es manuell, indem Sie Beispiel-JSON pipen:

864 ```bash theme={null}

865 echo '{"tool_name":"Bash","tool_input":{"command":"ls"}}' | ./my-hook.sh

866 echo $? # Überprüfen Sie den Exit-Code

867 ```

868* Wenn Sie "command not found" sehen, verwenden Sie absolute Pfade oder `$CLAUDE_PROJECT_DIR`, um Skripte zu referenzieren

869* Wenn Sie "jq: command not found" sehen, installieren Sie `jq` oder verwenden Sie Python/Node.js zum Parsen von JSON

870* Wenn das Skript überhaupt nicht ausgeführt wird, machen Sie es ausführbar: `chmod +x ./my-hook.sh`

871 

872### `/hooks` zeigt keine konfigurierten Hooks

873 

874Sie haben eine Einstellungsdatei bearbeitet, aber die Hooks werden nicht im Menü angezeigt.

875 

876* Datei-Bearbeitungen werden normalerweise automatisch aufgegriffen. Wenn sie nach ein paar Sekunden nicht angezeigt wurden, hat der Datei-Watcher die Änderung möglicherweise verpasst: Starten Sie Ihre Sitzung neu, um ein Neuladen zu erzwingen.

877* Überprüfen Sie, dass Ihr JSON gültig ist (nachfolgende Kommas und Kommentare sind nicht zulässig)

878* Bestätigen Sie, dass die Einstellungsdatei am richtigen Speicherort ist: `.claude/settings.json` für Projekt-Hooks, `~/.claude/settings.json` für globale Hooks

879 

880### Stop-Hook läuft endlos

881 

882Claude arbeitet in einer Endlosschleife weiter, anstatt zu stoppen.

883 

884Ihr Stop-Hook-Skript muss überprüfen, ob es bereits eine Fortsetzung ausgelöst hat. Parsen Sie das Feld `stop_hook_active` aus der JSON-Eingabe und beenden Sie früh, wenn es `true` ist:

885 

886```bash theme={null}

887#!/bin/bash

888INPUT=$(cat)

889if [ "$(echo "$INPUT" | jq -r '.stop_hook_active')" = "true" ]; then

890 exit 0 # Erlauben Sie Claude zu stoppen

891fi

892# ... Rest Ihrer Hook-Logik

893```

894 

895### JSON-Validierung fehlgeschlagen

896 

897Claude Code zeigt einen JSON-Parsing-Fehler an, obwohl Ihr Hook-Skript gültiges JSON ausgibt.

898 

899Wenn Claude Code einen Hook ausführt, spawnt es eine Shell, die Ihr Profil sourced (`~/.zshrc` oder `~/.bashrc`). Wenn Ihr Profil bedingungslose `echo`-Anweisungen enthält, wird diese Ausgabe Ihrem Hook-JSON vorangestellt:

900 

901```text theme={null}

902Shell ready on arm64

903{"decision": "block", "reason": "Not allowed"}

904```

905 

906Claude Code versucht, dies als JSON zu parsen, und schlägt fehl. Um dies zu beheben, wrappen Sie Echo-Anweisungen in Ihrem Shell-Profil, sodass sie nur in interaktiven Shells ausgeführt werden:

907 

908```bash theme={null}

909# In ~/.zshrc oder ~/.bashrc

910if [[ $- == *i* ]]; then

911 echo "Shell ready"

912fi

913```

914 

915Die Variable `$-` enthält Shell-Flags, und `i` bedeutet interaktiv. Hooks werden in nicht-interaktiven Shells ausgeführt, sodass das Echo übersprungen wird.

916 

917### Debug-Techniken

918 

919Die Transkript-Ansicht, umgeschaltet mit `Ctrl+O`, zeigt eine einzeilige Zusammenfassung für jeden Hook, der ausgelöst wurde: Erfolg ist stumm, Blockierungsfehler zeigen stderr, und Nicht-Blockierungsfehler zeigen eine `<hook name> hook error`-Meldung gefolgt von der ersten Zeile von stderr.

920 

921Für vollständige Ausführungsdetails einschließlich welche Hooks abgeglichen wurden, ihrer Exit-Codes, stdout und stderr, lesen Sie das Debug-Protokoll. Starten Sie Claude Code mit `claude --debug-file /tmp/claude.log`, um in einen bekannten Pfad zu schreiben, dann `tail -f /tmp/claude.log` in einem anderen Terminal. Wenn Sie ohne dieses Flag gestartet haben, führen Sie `/debug` während der Sitzung aus, um Logging zu aktivieren und den Protokollpfad zu finden.

922 

923## Weitere Informationen

924 

925* [Hooks-Referenz](/de/hooks): vollständige Event-Schemas, JSON-Ausgabeformat, asynchrone Hooks und MCP-Tool-Hooks

926* [Sicherheitsüberlegungen](/de/hooks#security-considerations): überprüfen Sie vor der Bereitstellung von Hooks in gemeinsamen oder Produktionsumgebungen

927* [Bash-Befehlsvalidator-Beispiel](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py): vollständige Referenzimplementierung

how-claude-code-works.md +263 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# So funktioniert Claude Code

6 

7> Verstehen Sie die agentengesteuerte Schleife, integrierte Tools und wie Claude Code mit Ihrem Projekt interagiert.

8 

9Claude Code ist ein agentengesteuerter Assistent, der in Ihrem Terminal läuft. Obwohl er sich bei der Codierung auszeichnet, kann er bei allem helfen, was Sie von der Befehlszeile aus tun können: Dokumentation schreiben, Builds ausführen, Dateien durchsuchen, Themen recherchieren und vieles mehr.

10 

11Dieser Leitfaden behandelt die Kernarchitektur, integrierte Funktionen und [Tipps für effektive Zusammenarbeit mit Claude Code](#work-effectively-with-claude-code). Für schrittweise Anleitungen siehe [Häufige Workflows](/de/common-workflows). Für Erweiterungsfunktionen wie skills, MCP und hooks siehe [Claude Code erweitern](/de/features-overview).

12 

13## Die agentengesteuerte Schleife

14 

15Wenn Sie Claude eine Aufgabe geben, arbeitet er durch drei Phasen: **Kontext sammeln**, **Maßnahmen ergreifen** und **Ergebnisse überprüfen**. Diese Phasen verschmelzen miteinander. Claude nutzt Tools durchgehend, ob beim Durchsuchen von Dateien zum Verständnis Ihres Codes, beim Bearbeiten zur Vornahme von Änderungen oder beim Ausführen von Tests zur Überprüfung seiner Arbeit.

16 

17<img src="https://mintcdn.com/claude-code/c5r9_6tjPMzFdDDT/images/agentic-loop.svg?fit=max&auto=format&n=c5r9_6tjPMzFdDDT&q=85&s=5f1827dec8539f38adee90ead3a85a38" alt="Die agentengesteuerte Schleife: Ihre Eingabeaufforderung führt dazu, dass Claude Kontext sammelt, Maßnahmen ergreift, Ergebnisse überprüft und wiederholt, bis die Aufgabe abgeschlossen ist. Sie können jederzeit unterbrechen." width="720" height="280" data-path="images/agentic-loop.svg" />

18 

19Die Schleife passt sich an das an, was Sie fragen. Eine Frage zu Ihrer Codebasis könnte nur Kontextsammlung erfordern. Eine Fehlerbehebung durchläuft alle drei Phasen wiederholt. Eine Umstrukturierung könnte umfangreiche Überprüfung beinhalten. Claude entscheidet, was jeder Schritt erfordert, basierend auf dem, was er aus dem vorherigen Schritt gelernt hat, verkettet Dutzende von Aktionen zusammen und korrigiert seinen Kurs unterwegs.

20 

21Sie sind auch Teil dieser Schleife. Sie können jederzeit unterbrechen, um Claude in eine andere Richtung zu lenken, zusätzlichen Kontext bereitzustellen oder ihn zu bitten, einen anderen Ansatz zu versuchen. Claude arbeitet autonom, bleibt aber responsiv gegenüber Ihrer Eingabe.

22 

23Die agentengesteuerte Schleife wird von zwei Komponenten angetrieben: [Modellen](#models), die denken, und [Tools](#tools), die handeln. Claude Code dient als **agentengesteuerte Umgebung** um Claude: Sie bietet die Tools, Kontextverwaltung und Ausführungsumgebung, die ein Sprachmodell in einen fähigen Codierungs-Agenten verwandeln.

24 

25### Modelle

26 

27Claude Code nutzt Claude-Modelle, um Ihren Code zu verstehen und über Aufgaben nachzudenken. Claude kann Code in jeder Sprache lesen, verstehen, wie Komponenten verbunden sind, und herausfinden, was sich ändern muss, um Ihr Ziel zu erreichen. Bei komplexen Aufgaben unterteilt er die Arbeit in Schritte, führt sie aus und passt sich basierend auf dem an, was er lernt.

28 

29[Mehrere Modelle](/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>`.

30 

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

32 

33### Tools

34 

35Tools sind das, was Claude Code agentengesteuert macht. Ohne Tools kann Claude nur mit Text antworten. Mit Tools kann Claude handeln: Ihren Code lesen, Dateien bearbeiten, Befehle ausführen, das Web durchsuchen und mit externen Diensten interagieren. Jede Tool-Nutzung gibt Informationen zurück, die in die Schleife fließen und Claudes nächste Entscheidung informieren.

36 

37Die integrierten Tools fallen im Allgemeinen in fünf Kategorien, die jeweils eine andere Art von Agentur darstellen.

38 

39| Kategorie | Was Claude tun kann |

40| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

41| **Dateivorgänge** | Dateien lesen, Code bearbeiten, neue Dateien erstellen, umbenennen und reorganisieren |

42| **Suche** | Dateien nach Muster finden, Inhalte mit Regex durchsuchen, Codebases erkunden |

43| **Ausführung** | Shell-Befehle ausführen, Server starten, Tests ausführen, git verwenden |

44| **Web** | Das Web durchsuchen, Dokumentation abrufen, Fehlermeldungen nachschlagen |

45| **Code-Intelligenz** | Typfehler und Warnungen nach Bearbeitungen sehen, zu Definitionen springen, Referenzen finden (erfordert [Code-Intelligenz-Plugins](/de/discover-plugins#code-intelligence)) |

46 

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

48 

49Claude 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:

50 

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

522. Die Fehlerausgabe lesen

533. Nach den relevanten Quelldateien suchen

544. Diese Dateien lesen, um den Code zu verstehen

555. Die Dateien bearbeiten, um das Problem zu beheben

566. Die Tests erneut ausführen, um zu überprüfen

57 

58Jede Tool-Nutzung gibt Claude neue Informationen, die den nächsten Schritt informieren. Dies ist die agentengesteuerte Schleife in Aktion.

59 

60**Erweitern der Basisfunktionen:** Die integrierten Tools sind die Grundlage. Sie können das, was Claude weiß, mit [skills](/de/skills) erweitern, sich mit externen Diensten mit [MCP](/de/mcp) verbinden, Workflows mit [hooks](/de/hooks) automatisieren und Aufgaben an [subagents](/de/sub-agents) delegieren. Diese Erweiterungen bilden eine Schicht auf der Grundlage der agentengesteuerten Schleife. Siehe [Claude Code erweitern](/de/features-overview) für Anleitung zur Auswahl der richtigen Erweiterung für Ihre Anforderungen.

61 

62## Worauf Claude zugreifen kann

63 

64Dieser Leitfaden konzentriert sich auf das Terminal. Claude Code läuft auch in [VS Code](/de/vs-code), [JetBrains IDEs](/de/jetbrains) und anderen Umgebungen.

65 

66Wenn Sie `claude` in einem Verzeichnis ausführen, erhält Claude Code Zugriff auf:

67 

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

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

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

71* **Ihre [CLAUDE.md](/de/memory).** Eine Markdown-Datei, in der Sie projektspezifische Anweisungen, Konventionen und Kontext speichern, den Claude jede Sitzung kennen sollte.

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

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

74 

75Da 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.

76 

77## Umgebungen und Schnittstellen

78 

79Die agentengesteuerte Schleife, Tools und Funktionen, die oben beschrieben sind, sind überall gleich, wo Sie Claude Code verwenden. Was sich ändert, ist, wo der Code ausgeführt wird und wie Sie damit interagieren.

80 

81### Ausführungsumgebungen

82 

83Claude Code läuft in drei Umgebungen, jede mit unterschiedlichen Kompromissen für die Ausführung Ihres Codes.

84 

85| Umgebung | Wo Code läuft | Anwendungsfall |

86| ------------------ | ----------------------------------------- | -------------------------------------------------------------------- |

87| **Lokal** | Ihr Computer | Standard. Vollständiger Zugriff auf Ihre Dateien, Tools und Umgebung |

88| **Cloud** | Von Anthropic verwaltete VMs | Aufgaben auslagern, an Repos arbeiten, die Sie nicht lokal haben |

89| **Remote Control** | Ihr Computer, gesteuert von einem Browser | Verwenden Sie die Web-UI, während Sie alles lokal halten |

90 

91### Schnittstellen

92 

93Sie können auf Claude Code über das Terminal, die [Desktop-App](/de/desktop), [IDE-Erweiterungen](/de/vs-code), [claude.ai/code](https://claude.ai/code), [Remote Control](/de/remote-control), [Slack](/de/slack) und [CI/CD-Pipelines](/de/github-actions) zugreifen. Die Schnittstelle bestimmt, wie Sie Claude sehen und damit interagieren, aber die zugrunde liegende agentengesteuerte Schleife ist identisch. Siehe [Claude Code überall verwenden](/de/overview#use-claude-code-everywhere) für die vollständige Liste.

94 

95## Mit Sitzungen arbeiten

96 

97Claude Code speichert Ihre Konversation lokal, während Sie arbeiten. Jede Nachricht, Tool-Nutzung und jedes Ergebnis wird gespeichert, was [Zurückspulen](#undo-changes-with-checkpoints), [Fortsetzen und Verzweigen](#resume-or-fork-sessions) von Sitzungen ermöglicht. Bevor Claude Code-Änderungen vornimmt, erstellt er auch einen Snapshot der betroffenen Dateien, damit Sie bei Bedarf zurückrollen können.

98 

99**Sitzungen sind unabhängig.** Jede neue Sitzung beginnt mit einem frischen Kontextfenster, ohne die Konversationshistorie aus vorherigen Sitzungen. Claude kann Erkenntnisse über Sitzungen hinweg mit [Auto-Speicher](/de/memory#auto-memory) beibehalten, und Sie können Ihre eigenen persistenten Anweisungen in [CLAUDE.md](/de/memory) hinzufügen.

100 

101### Über Branches arbeiten

102 

103Jede Claude Code-Konversation ist eine Sitzung, die an Ihr aktuelles Verzeichnis gebunden ist. Wenn Sie fortsetzen, sehen Sie nur Sitzungen aus diesem Verzeichnis.

104 

105Claude sieht die Dateien Ihres aktuellen Branches. Wenn Sie Branches wechseln, sieht Claude die Dateien des neuen Branches, aber Ihre Konversationshistorie bleibt gleich. Claude erinnert sich an das, was Sie besprochen haben, auch nach dem Wechsel.

106 

107Da Sitzungen an Verzeichnisse gebunden sind, können Sie parallele Claude-Sitzungen ausführen, indem Sie [git worktrees](/de/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) verwenden, die separate Verzeichnisse für einzelne Branches erstellen.

108 

109### Sitzungen fortsetzen oder verzweigen

110 

111Wenn Sie eine Sitzung mit `claude --continue` oder `claude --resume` fortsetzen, setzen Sie dort fort, wo Sie aufgehört haben, mit derselben Sitzungs-ID. Neue Nachrichten werden an die bestehende Konversation angehängt. Ihre vollständige Konversationshistorie wird wiederhergestellt, aber sitzungsspezifische Berechtigungen nicht. Sie müssen diese erneut genehmigen.

112 

113<img src="https://mintcdn.com/claude-code/c5r9_6tjPMzFdDDT/images/session-continuity.svg?fit=max&auto=format&n=c5r9_6tjPMzFdDDT&q=85&s=fa41d12bfb57579cabfeece907151d30" alt="Sitzungskontinuität: Fortsetzen setzt dieselbe Sitzung fort, Verzweigung erstellt einen neuen Branch mit einer neuen ID." width="560" height="280" data-path="images/session-continuity.svg" />

114 

115Um abzuzweigen und einen anderen Ansatz zu versuchen, ohne die ursprüngliche Sitzung zu beeinflussen, verwenden Sie das Flag `--fork-session`:

116 

117```bash theme={null}

118claude --continue --fork-session

119```

120 

121Dies erstellt eine neue Sitzungs-ID, während die Konversationshistorie bis zu diesem Punkt beibehalten wird. Die ursprüngliche Sitzung bleibt unverändert. Wie beim Fortsetzen erben verzweigte Sitzungen keine sitzungsspezifischen Berechtigungen.

122 

123**Dieselbe Sitzung in mehreren Terminals**: Wenn Sie dieselbe Sitzung in mehreren Terminals fortsetzen, schreiben beide Terminals in dieselbe Sitzungsdatei. Nachrichten von beiden werden verschachtelt, wie zwei Personen, die in dasselbe Notizbuch schreiben. Nichts wird beschädigt, aber die Konversation wird durcheinander. Jedes Terminal sieht nur seine eigenen Nachrichten während der Sitzung, aber wenn Sie diese Sitzung später fortsetzen, sehen Sie alles verschachtelt. Für parallele Arbeit vom selben Ausgangspunkt verwenden Sie `--fork-session`, um jedem Terminal seine eigene saubere Sitzung zu geben.

124 

125### Das Kontextfenster

126 

127Claudes Kontextfenster enthält Ihre Konversationshistorie, Dateiinhalte, Befehlsausgaben, [CLAUDE.md](/de/memory), [Auto-Speicher](/de/memory#auto-memory), geladene skills und Systemanweisungen. Während Sie arbeiten, füllt sich der Kontext. Claude komprimiert automatisch, aber Anweisungen von früh in der Konversation können verloren gehen. Legen Sie persistente Regeln in CLAUDE.md ab, und führen Sie `/context` aus, um zu sehen, was Platz verbraucht.

128 

129Für eine interaktive Anleitung zu dem, was geladen wird und wann, siehe [Erkunden Sie das Kontextfenster](/de/context-window).

130 

131#### Wenn der Kontext voll wird

132 

133Claude 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.

134 

135Um 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`).

136 

137Führen Sie `/context` aus, um zu sehen, was Platz verbraucht. MCP-Tool-Definitionen werden standardmäßig aufgeschoben und bei Bedarf über [Tool-Suche](/de/mcp#scale-with-mcp-tool-search) geladen, daher verbrauchen nur Tool-Namen Kontext, bis Claude ein bestimmtes Tool verwendet. Führen Sie `/mcp` aus, um die Kosten pro Server zu überprüfen.

138 

139#### Kontext mit skills und subagents verwalten

140 

141Über die Komprimierung hinaus können Sie andere Funktionen verwenden, um zu kontrollieren, was in den Kontext geladen wird.

142 

143[Skills](/de/skills) werden bei Bedarf geladen. Claude sieht Skill-Beschreibungen zu Sitzungsbeginn, aber der vollständige Inhalt wird nur geladen, wenn ein Skill verwendet wird. Für Skills, die Sie manuell aufrufen, setzen Sie `disable-model-invocation: true`, um Beschreibungen aus dem Kontext zu halten, bis Sie sie benötigen.

144 

145[Subagents](/de/sub-agents) erhalten ihren eigenen frischen Kontext, völlig getrennt von Ihrer Hauptkonversation. Ihre Arbeit bläht Ihren Kontext nicht auf. Wenn sie fertig sind, geben sie eine Zusammenfassung zurück. Diese Isolation ist der Grund, warum subagents bei langen Sitzungen helfen.

146 

147Siehe [Kontextkosten](/de/features-overview#understand-context-costs) für die Kosten jeder Funktion und [Token-Nutzung reduzieren](/de/costs#reduce-token-usage) für Tipps zur Verwaltung des Kontexts.

148 

149## Sicher bleiben mit Checkpoints und Berechtigungen

150 

151Claude hat zwei Sicherheitsmechanismen: Checkpoints ermöglichen es Ihnen, Dateiänderungen rückgängig zu machen, und Berechtigungen kontrollieren, was Claude ohne Nachfrage tun kann.

152 

153### Änderungen mit Checkpoints rückgängig machen

154 

155**Jede Dateibearbeitung ist reversibel.** Bevor Claude eine Datei bearbeitet, erstellt er einen Snapshot des aktuellen Inhalts. Wenn etwas schief geht, drücken Sie zweimal `Esc`, um zu einem vorherigen Zustand zurückzuspulen, oder bitten Sie Claude, rückgängig zu machen.

156 

157Checkpoints sind lokal für Ihre Sitzung, getrennt von git. Sie decken nur Dateiänderungen ab. Aktionen, die sich auf Remote-Systeme auswirken (Datenbanken, APIs, Bereitstellungen), können nicht checkpointed werden, weshalb Claude vor dem Ausführen von Befehlen mit externen Nebenwirkungen fragt.

158 

159### Kontrollieren Sie, was Claude tun kann

160 

161Drücken Sie `Shift+Tab`, um durch die Berechtigungsmodi zu wechseln:

162 

163* **Standard**: Claude fragt vor Dateibearbeitungen und Shell-Befehlen

164* **Auto-accept edits**: Claude bearbeitet Dateien ohne zu fragen, fragt aber immer noch nach Befehlen

165* **Plan Mode**: Claude verwendet nur schreibgeschützte Tools und erstellt einen Plan, den Sie vor der Ausführung genehmigen können

166* **Auto Mode**: Claude bewertet alle Aktionen mit Hintergrund-Sicherheitsprüfungen. Derzeit eine Forschungsvorschau

167 

168Sie können auch spezifische Befehle in `.claude/settings.json` zulassen, damit Claude nicht jedes Mal fragt. Dies ist nützlich für vertrauenswürdige Befehle wie `npm test` oder `git status`. Einstellungen können von organisationsweiten Richtlinien bis zu persönlichen Vorlieben reichen. Siehe [Berechtigungen](/de/permissions) für Details.

169 

170***

171 

172## Effektiv mit Claude Code arbeiten

173 

174Diese Tipps helfen Ihnen, bessere Ergebnisse von Claude Code zu erhalten.

175 

176### Fragen Sie Claude Code um Hilfe

177 

178Claude 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.

179 

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

181 

182* `/init` führt Sie durch die Erstellung einer CLAUDE.md für Ihr Projekt

183* `/agents` hilft Ihnen, benutzerdefinierte subagents zu konfigurieren

184* `/doctor` diagnostiziert häufige Probleme mit Ihrer Installation

185 

186### Es ist eine Konversation

187 

188Claude Code ist konversativ. Sie benötigen keine perfekten Eingabeaufforderungen. Beginnen Sie mit dem, was Sie möchten, und verfeinern Sie dann:

189 

190```text theme={null}

191Beheben Sie den Login-Fehler

192```

193 

194\[Claude untersucht, versucht etwas]

195 

196```text theme={null}

197Das ist nicht ganz richtig. Das Problem liegt in der Sitzungsverwaltung.

198```

199 

200\[Claude passt seinen Ansatz an]

201 

202Wenn der erste Versuch nicht richtig ist, müssen Sie nicht von vorne anfangen. Sie iterieren.

203 

204#### Unterbrechen und lenken

205 

206Sie können Claude jederzeit unterbrechen. Wenn er den falschen Weg geht, geben Sie einfach Ihre Korrektur ein und drücken Sie Enter. Claude wird stoppen, was er tut, und seinen Ansatz basierend auf Ihrer Eingabe anpassen. Sie müssen nicht warten, bis er fertig ist, oder von vorne anfangen.

207 

208### Seien Sie von Anfang an spezifisch

209 

210Je präziser Ihre anfängliche Eingabeaufforderung ist, desto weniger Korrektionen benötigen Sie. Verweisen Sie auf spezifische Dateien, erwähnen Sie Einschränkungen und zeigen Sie auf Beispielmuster.

211 

212```text theme={null}

213Der Checkout-Fluss ist für Benutzer mit abgelaufenen Karten unterbrochen.

214Überprüfen Sie src/payments/ auf das Problem, besonders Token-Aktualisierung.

215Schreiben Sie zuerst einen fehlgeschlagenen Test, dann beheben Sie ihn.

216```

217 

218Vage Eingabeaufforderungen funktionieren, aber Sie werden mehr Zeit mit Lenkung verbringen. Spezifische Eingabeaufforderungen wie die obige gelingen oft beim ersten Versuch.

219 

220### Geben Sie Claude etwas zum Überprüfen

221 

222Claude funktioniert besser, wenn er seine eigene Arbeit überprüfen kann. Fügen Sie Testfälle ein, fügen Sie Screenshots des erwarteten UI ein oder definieren Sie die gewünschte Ausgabe.

223 

224```text theme={null}

225Implementieren Sie validateEmail. Testfälle: 'user@example.com' → true,

226'invalid' → false, 'user@.com' → false. Führen Sie die Tests danach aus.

227```

228 

229Für visuelle Arbeit fügen Sie einen Screenshot des Designs ein und bitten Sie Claude, seine Implementierung dagegen zu vergleichen.

230 

231### Vor der Implementierung erkunden

232 

233Bei komplexen Problemen trennen Sie Forschung von Codierung. Verwenden Sie Plan Mode (`Shift+Tab` zweimal), um die Codebasis zuerst zu analysieren:

234 

235```text theme={null}

236Lesen Sie src/auth/ und verstehen Sie, wie wir Sitzungen handhaben.

237Erstellen Sie dann einen Plan zum Hinzufügen von OAuth-Unterstützung.

238```

239 

240Überprüfen Sie den Plan, verfeinern Sie ihn durch Konversation, dann lassen Sie Claude implementieren. Dieser zweiphasige Ansatz erzeugt bessere Ergebnisse als direkt zum Code zu springen.

241 

242### Delegieren, nicht diktieren

243 

244Denken Sie daran, an einen fähigen Kollegen zu delegieren. Geben Sie Kontext und Richtung, dann vertrauen Sie Claude, die Details herauszufinden:

245 

246```text theme={null}

247Der Checkout-Fluss ist für Benutzer mit abgelaufenen Karten unterbrochen.

248Der relevante Code ist in src/payments/. Können Sie ihn untersuchen und beheben?

249```

250 

251Sie müssen nicht angeben, welche Dateien zu lesen sind oder welche Befehle auszuführen sind. Claude findet das heraus.

252 

253## Nächste Schritte

254 

255<CardGroup cols={2}>

256 <Card title="Mit Funktionen erweitern" icon="puzzle-piece" href="/de/features-overview">

257 Fügen Sie Skills, MCP-Verbindungen und benutzerdefinierte Befehle hinzu

258 </Card>

259 

260 <Card title="Häufige Workflows" icon="graduation-cap" href="/de/common-workflows">

261 Schritt-für-Schritt-Anleitungen für typische Aufgaben

262 </Card>

263</CardGroup>

interactive-mode.md +362 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Interaktiver Modus

6 

7> Vollständige Referenz für Tastaturkürzel, Eingabemodi und interaktive Funktionen in Claude Code-Sitzungen.

8 

9## Tastaturkürzel

10 

11<Note>

12 Tastaturkürzel können je nach Plattform und Terminal variieren. Drücken Sie `?`, um die verfügbaren Kürzel für Ihre Umgebung anzuzeigen.

13 

14 **macOS-Benutzer**: Option/Alt-Tastenkürzel (`Alt+B`, `Alt+F`, `Alt+Y`, `Alt+M`, `Alt+P`, `Alt+T`) erfordern die Konfiguration von Option als Meta in Ihrem Terminal:

15 

16 * **iTerm2**: Einstellungen → Profile → Keys → General → Left/Right Option key auf „Esc+" setzen

17 * **Apple Terminal**: Einstellungen → Profile → Keyboard → „Use Option as Meta Key" aktivieren

18 * **VS Code**: `"terminal.integrated.macOptionIsMeta": true` in VS Code-Einstellungen setzen

19 

20 Weitere Informationen finden Sie unter [Terminal-Konfiguration](/de/terminal-config).

21</Note>

22 

23### Allgemeine Steuerelemente

24 

25| Kürzel | Beschreibung | Kontext |

26| :---------------------------------------------------- | :------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

27| `Ctrl+C` | Aktuelle Eingabe oder Generierung abbrechen | Standard-Interrupt |

28| `Ctrl+X Ctrl+K` | Alle Hintergrund-Agenten beenden. Zweimal innerhalb von 3 Sekunden drücken, um zu bestätigen | Steuerung von Hintergrund-Agenten |

29| `Ctrl+D` | Claude Code-Sitzung beenden | EOF-Signal |

30| `Ctrl+G` oder `Ctrl+X Ctrl+E` | Im Standard-Texteditor öffnen | Bearbeiten Sie Ihren Prompt oder benutzerdefinierte Antwort in Ihrem Standard-Texteditor. `Ctrl+X Ctrl+E` ist die readline-native Bindung. Aktivieren Sie „Show last response in external editor" in `/config`, um Claudes vorherige Antwort als `#`-kommentierter Kontext über Ihrem Prompt einzufügen; der Kommentarblock wird beim Speichern entfernt |

31| `Ctrl+L` | Bildschirm neu zeichnen | Erzwingt eine vollständige Terminal-Neuzeichnung. Eingabe und Gesprächsverlauf werden beibehalten. Verwenden Sie dies, um die Anzeige wiederherzustellen, wenn sie verzerrt oder teilweise leer wird |

32| `Ctrl+O` | Transkript-Viewer umschalten | Zeigt detaillierte Tool-Nutzung und Ausführung. Erweitert auch MCP-Aufrufe, die standardmäßig zu einer einzelnen Zeile wie „Called slack 3 times" zusammengefasst werden |

33| `Ctrl+R` | Reverse-Suche im Befehlsverlauf | Durchsuchen Sie vorherige Befehle interaktiv |

34| `Ctrl+V` oder `Cmd+V` (iTerm2) oder `Alt+V` (Windows) | Bild aus Zwischenablage einfügen | Fügt einen `[Image #N]`-Chip an der Cursor-Position ein, sodass Sie ihn positionell in Ihrem Prompt referenzieren können |

35| `Ctrl+B` | Hintergrund-Ausführung von Aufgaben | Führt Bash-Befehle und Agenten im Hintergrund aus. Tmux-Benutzer drücken zweimal |

36| `Ctrl+T` | Task-Liste umschalten | Zeigen oder verbergen Sie die [Task-Liste](#task-list) im Terminal-Statusbereich |

37| `Left/Right arrows` | Durch Dialog-Registerkarten navigieren | Navigieren Sie zwischen Registerkarten in Berechtigungsdialogen und Menüs |

38| `Up/Down arrows` oder `Ctrl+P`/`Ctrl+N` | Cursor bewegen oder Befehlsverlauf navigieren | Bei mehrzeiliger Eingabe bewegt sich der Cursor zunächst innerhalb der Eingabeaufforderung. Sobald sich der Cursor bereits am oberen oder unteren Rand befindet, navigiert das erneute Drücken durch den Befehlsverlauf |

39| `Esc` + `Esc` | Zurückspulen oder zusammenfassen | Stellen Sie Code und/oder Gespräch auf einen vorherigen Punkt wieder her, oder fassen Sie ab einer ausgewählten Nachricht zusammen |

40| `Shift+Tab` oder `Alt+M` (einige Konfigurationen) | Berechtigungsmodi umschalten | Wechseln Sie zwischen `default`, `acceptEdits`, `plan` und allen Modi, die Sie aktiviert haben, z. B. `auto` oder `bypassPermissions`. Siehe [Berechtigungsmodi](/de/permission-modes). |

41| `Option+P` (macOS) oder `Alt+P` (Windows/Linux) | Modell wechseln | Wechseln Sie Modelle, ohne Ihren Prompt zu löschen |

42| `Option+T` (macOS) oder `Alt+T` (Windows/Linux) | Extended Thinking umschalten | Aktivieren oder deaktivieren Sie den Extended Thinking-Modus. Konfigurieren Sie auf macOS Ihr Terminal, um Option als Meta zu senden, damit dieses Kürzel funktioniert |

43| `Option+O` (macOS) oder `Alt+O` (Windows/Linux) | Schnellmodus umschalten | Aktivieren oder deaktivieren Sie den [Schnellmodus](/de/fast-mode) |

44 

45### Textbearbeitung

46 

47| Kürzel | Beschreibung | Kontext |

48| :---------------------- | :----------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

49| `Ctrl+A` | Cursor an den Anfang der aktuellen Zeile bewegen | Bei mehrzeiliger Eingabe bewegt sich der Cursor an den Anfang der aktuellen logischen Zeile |

50| `Ctrl+E` | Cursor an das Ende der aktuellen Zeile bewegen | Bei mehrzeiliger Eingabe bewegt sich der Cursor an das Ende der aktuellen logischen Zeile |

51| `Ctrl+K` | Bis zum Ende der Zeile löschen | Speichert gelöschten Text zum Einfügen |

52| `Ctrl+U` | Vom Cursor bis zum Zeilenanfang löschen | Speichert gelöschten Text zum Einfügen. Wiederholen Sie, um über Zeilen in mehrzeiliger Eingabe zu löschen. Auf macOS ordnen Terminal-Emulatoren einschließlich iTerm2 und Terminal.app `Cmd+Backspace` diesem Kürzel zu |

53| `Ctrl+W` | Vorheriges Wort löschen | Speichert gelöschten Text zum Einfügen. Unter Windows löscht `Ctrl+Backspace` auch das vorherige Wort |

54| `Ctrl+Y` | Gelöschten Text einfügen | Fügen Sie Text ein, der mit `Ctrl+K`, `Ctrl+U` oder `Ctrl+W` gelöscht wurde |

55| `Alt+Y` (nach `Ctrl+Y`) | Einfügeverlauf durchlaufen | Nach dem Einfügen können Sie durch zuvor gelöschten Text navigieren. Erfordert [Option als Meta](#keyboard-shortcuts) auf macOS |

56| `Alt+B` | Cursor um ein Wort nach hinten bewegen | Wort-Navigation. Erfordert [Option als Meta](#keyboard-shortcuts) auf macOS |

57| `Alt+F` | Cursor um ein Wort nach vorne bewegen | Wort-Navigation. Erfordert [Option als Meta](#keyboard-shortcuts) auf macOS |

58 

59### Design und Anzeige

60 

61| Kürzel | Beschreibung | Kontext |

62| :------- | :--------------------------------------------- | :------------------------------------------------------------------------------------------------------- |

63| `Ctrl+T` | Syntax-Hervorhebung für Code-Blöcke umschalten | Funktioniert nur im `/theme`-Auswahlmenü. Steuert, ob Code in Claudes Antworten Syntax-Färbung verwendet |

64 

65### Mehrzeilige Eingabe

66 

67| Methode | Kürzel | Kontext |

68| :--------------- | :-------------- | :--------------------------------------------------------------------------------------------------------- |

69| Schneller Escape | `\` + `Enter` | Funktioniert in allen Terminals |

70| Option-Taste | `Option+Enter` | Nach Aktivierung von [Option als Meta](/de/terminal-config#enable-option-key-shortcuts-on-macos) auf macOS |

71| Shift+Enter | `Shift+Enter` | Nativ in iTerm2, WezTerm, Ghostty, Kitty, Warp, Apple Terminal |

72| Steuersequenz | `Ctrl+J` | Funktioniert in jedem Terminal ohne Konfiguration |

73| Einfügemodus | Direkt einfügen | Für Code-Blöcke, Protokolle |

74 

75<Tip>

76 Shift+Enter funktioniert ohne Konfiguration in iTerm2, WezTerm, Ghostty, Kitty, Warp und Apple Terminal. Für VS Code, Cursor, Windsurf, Alacritty und Zed führen Sie `/terminal-setup` aus, um die Bindung zu installieren.

77</Tip>

78 

79### Schnellbefehle

80 

81| Kürzel | Beschreibung | Notizen |

82| :------------ | :------------------ | :----------------------------------------------------------------------------------- |

83| `/` am Anfang | Befehl oder Skill | Siehe [Befehle](#commands) und [Skills](/de/skills) |

84| `!` am Anfang | Bash-Modus | Führen Sie Befehle direkt aus und fügen Sie die Ausführungsausgabe zur Sitzung hinzu |

85| `@` | Dateipfad-Erwähnung | Trigger für Dateipfad-Autovervollständigung |

86 

87### Transkript-Viewer

88 

89Wenn der Transkript-Viewer offen ist (umgeschaltet mit `Ctrl+O`), sind diese Kürzel verfügbar. `Ctrl+E` kann über [`transcript:toggleShowAll`](/de/keybindings) neu zugewiesen werden.

90 

91| Kürzel | Beschreibung |

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

93| `Ctrl+E` | Alle Inhalte anzeigen umschalten |

94| `[` | Schreiben Sie das vollständige Gespräch in den nativen Scrollback Ihres Terminals, sodass `Cmd+F`, tmux-Kopiermodus und andere native Tools es durchsuchen können. Erfordert [Vollbildrendering](/de/fullscreen#search-and-review-the-conversation) |

95| `v` | Schreiben Sie das Gespräch in eine temporäre Datei und öffnen Sie es in `$VISUAL` oder `$EDITOR`. Erfordert [Vollbildrendering](/de/fullscreen) |

96| `q`, `Ctrl+C`, `Esc` | Transkript-Ansicht beenden. Alle drei können über [`transcript:exit`](/de/keybindings) neu zugewiesen werden |

97 

98### Spracheingabe

99 

100| Kürzel | Beschreibung | Notizen |

101| :------------------------- | :--------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

102| `Space` halten oder tippen | Sprach-Diktieren | Erfordert, dass [Sprach-Diktieren](/de/voice-dictation) aktiviert ist. Halten Sie gedrückt zum Aufnehmen, oder führen Sie `/voice tap` aus für Tap-zum-Umschalten. [Neu zuweisbar](/de/voice-dictation#rebind-the-dictation-key) |

103 

104## Befehle

105 

106Geben Sie `/` in Claude Code ein, um alle verfügbaren Befehle anzuzeigen, oder geben Sie `/` gefolgt von beliebigen Buchstaben ein, um zu filtern. Das `/`-Menü zeigt alles, was Sie aufrufen können: integrierte Befehle, gebündelte und von Benutzern erstellte [Skills](/de/skills) sowie Befehle, die von [Plugins](/de/plugins) und [MCP-Servern](/de/mcp#use-mcp-prompts-as-commands) beigetragen werden. Nicht alle integrierten Befehle sind für jeden Benutzer sichtbar, da einige von Ihrer Plattform oder Ihrem Plan abhängen.

107 

108Siehe die [Befehls-Referenz](/de/commands) für die vollständige Liste der in Claude Code enthaltenen Befehle.

109 

110## Vim-Editor-Modus

111 

112Aktivieren Sie Vim-ähnliche Bearbeitung über `/config` → Editor mode.

113 

114### Modusumschaltung

115 

116| Befehl | Aktion | Aus Modus |

117| :----- | :------------------------------------ | :------------- |

118| `Esc` | NORMAL-Modus eingeben | INSERT, VISUAL |

119| `i` | Vor Cursor einfügen | NORMAL |

120| `I` | Am Anfang der Zeile einfügen | NORMAL |

121| `a` | Nach Cursor einfügen | NORMAL |

122| `A` | Am Ende der Zeile einfügen | NORMAL |

123| `o` | Zeile unten öffnen | NORMAL |

124| `O` | Zeile oben öffnen | NORMAL |

125| `v` | Zeichenweise visuelle Auswahl starten | NORMAL |

126| `V` | Zeilenweise visuelle Auswahl starten | NORMAL |

127 

128### Navigation (NORMAL-Modus)

129 

130| Befehl | Aktion |

131| :-------------- | :------------------------------------------------------------- |

132| `h`/`j`/`k`/`l` | Nach links/unten/oben/rechts bewegen |

133| `w` | Nächstes Wort |

134| `e` | Ende des Wortes |

135| `b` | Vorheriges Wort |

136| `0` | Anfang der Zeile |

137| `$` | Ende der Zeile |

138| `^` | Erstes Nicht-Leerzeichen-Zeichen |

139| `gg` | Anfang der Eingabe |

140| `G` | Ende der Eingabe |

141| `f{char}` | Zum nächsten Vorkommen des Zeichens springen |

142| `F{char}` | Zum vorherigen Vorkommen des Zeichens springen |

143| `t{char}` | Direkt vor das nächste Vorkommen des Zeichens springen |

144| `T{char}` | Direkt nach das vorherige Vorkommen des Zeichens springen |

145| `;` | Letzte f/F/t/T-Bewegung wiederholen |

146| `,` | Letzte f/F/t/T-Bewegung in umgekehrter Reihenfolge wiederholen |

147 

148<Note>

149 Im Vim-Normal-Modus navigieren `j`/`k` und die Pfeiltasten den Befehlsverlauf, wenn sich der Cursor am Anfang oder Ende der Eingabe befindet und nicht weiter bewegt werden kann.

150</Note>

151 

152### Bearbeitung (NORMAL-Modus)

153 

154| Befehl | Aktion |

155| :------------- | :----------------------------- |

156| `x` | Zeichen löschen |

157| `dd` | Zeile löschen |

158| `D` | Bis zum Ende der Zeile löschen |

159| `dw`/`de`/`db` | Wort löschen/bis Ende/zurück |

160| `cc` | Zeile ändern |

161| `C` | Bis zum Ende der Zeile ändern |

162| `cw`/`ce`/`cb` | Wort ändern/bis Ende/zurück |

163| `yy`/`Y` | Zeile yanken (kopieren) |

164| `yw`/`ye`/`yb` | Wort yanken/bis Ende/zurück |

165| `p` | Nach Cursor einfügen |

166| `P` | Vor Cursor einfügen |

167| `>>` | Zeile einrücken |

168| `<<` | Zeile ausrücken |

169| `J` | Zeilen verbinden |

170| `u` | Rückgängig machen |

171| `.` | Letzte Änderung wiederholen |

172 

173### Textobjekte (NORMAL-Modus)

174 

175Textobjekte funktionieren mit Operatoren wie `d`, `c` und `y`:

176 

177| Befehl | Aktion |

178| :-------- | :------------------------------------- |

179| `iw`/`aw` | Inneres/um Wort |

180| `iW`/`aW` | Inneres/um WORT (Leerzeichen-begrenzt) |

181| `i"`/`a"` | Inneres/um doppelte Anführungszeichen |

182| `i'`/`a'` | Inneres/um einfache Anführungszeichen |

183| `i(`/`a(` | Inneres/um Klammern |

184| `i[`/`a[` | Inneres/um eckige Klammern |

185| `i{`/`a{` | Inneres/um geschweifte Klammern |

186 

187### Visueller Modus

188 

189Drücken Sie `v` für zeichenweise Auswahl oder `V` für zeilenweise Auswahl. Bewegungen erweitern die Auswahl, und Operatoren wirken direkt darauf.

190 

191| Befehl | Aktion |

192| :--------------- | :------------------------------------------------------------ |

193| `d`/`x` | Auswahl löschen |

194| `y` | Auswahl yanken |

195| `c`/`s` | Auswahl ändern |

196| `p` | Auswahl durch Registerinhalt ersetzen |

197| `r{char}` | Jedes ausgewählte Zeichen durch `{char}` ersetzen |

198| `~`/`u`/`U` | Auswahl umschalten, Kleinbuchstaben oder Großbuchstaben |

199| `>`/`<` | Ausgewählte Zeilen einrücken oder ausrücken |

200| `J` | Ausgewählte Zeilen verbinden |

201| `o` | Cursor und Anker tauschen |

202| `iw`/`aw`/`i"`/… | Ein Textobjekt auswählen |

203| `v`/`V` | Zwischen zeichenweise und zeilenweise umschalten oder beenden |

204 

205Der blockweise visuelle Modus mit `Ctrl+V` wird nicht unterstützt.

206 

207## Befehlsverlauf

208 

209Claude Code verwaltet den Befehlsverlauf für die aktuelle Sitzung:

210 

211* Der Eingabeverlauf wird pro Arbeitsverzeichnis gespeichert

212* Der Eingabeverlauf wird zurückgesetzt, wenn Sie `/clear` ausführen, um eine neue Sitzung zu starten. Das Gespräch der vorherigen Sitzung wird beibehalten und kann fortgesetzt werden.

213* Verwenden Sie die Pfeiltasten nach oben/unten zum Navigieren (siehe Tastaturkürzel oben)

214* **Hinweis**: Verlaufserweiterung (`!`) ist standardmäßig deaktiviert

215 

216### Reverse-Suche mit Ctrl+R

217 

218Drücken Sie `Ctrl+R`, um interaktiv durch Ihren Befehlsverlauf zu suchen:

219 

2201. **Suche starten**: Drücken Sie `Ctrl+R`, um die Reverse-Verlaufssuche zu aktivieren

2212. **Abfrage eingeben**: Geben Sie Text ein, um in vorherigen Befehlen zu suchen. Der Suchbegriff wird in übereinstimmenden Ergebnissen hervorgehoben

2223. **Übereinstimmungen navigieren**: Drücken Sie `Ctrl+R` erneut, um durch ältere Übereinstimmungen zu navigieren

2234. **Bereich ändern**: Drücken Sie `Ctrl+S`, um zwischen dieser Sitzung, diesem Projekt und allen Projekten zu wechseln

2245. **Übereinstimmung akzeptieren**:

225 * Drücken Sie `Tab` oder `Esc`, um die aktuelle Übereinstimmung zu akzeptieren und die Bearbeitung fortzusetzen

226 * Drücken Sie `Enter`, um die Übereinstimmung zu akzeptieren und den Befehl sofort auszuführen

2276. **Suche abbrechen**:

228 * Drücken Sie `Ctrl+C`, um abzubrechen und Ihre ursprüngliche Eingabe wiederherzustellen

229 * Drücken Sie `Backspace` bei leerer Suche, um abzubrechen

230 

231Die Suche zeigt übereinstimmende Befehle mit dem hervorgehobenen Suchbegriff an, sodass Sie vorherige Eingaben finden und wiederverwenden können.

232 

233## Bash-Befehle im Hintergrund

234 

235Claude Code unterstützt die Ausführung von Bash-Befehlen im Hintergrund, sodass Sie weiterarbeiten können, während lange laufende Prozesse ausgeführt werden.

236 

237### Wie Hintergrund-Ausführung funktioniert

238 

239Wenn Claude Code einen Befehl im Hintergrund ausführt, führt es den Befehl asynchron aus und gibt sofort eine Hintergrund-Task-ID zurück. Claude Code kann auf neue Prompts reagieren, während der Befehl weiterhin im Hintergrund ausgeführt wird.

240 

241Um Befehle im Hintergrund auszuführen, können Sie entweder:

242 

243* Claude Code auffordern, einen Befehl im Hintergrund auszuführen

244* Drücken Sie Ctrl+B, um eine reguläre Bash-Tool-Invokation in den Hintergrund zu verschieben. (Tmux-Benutzer müssen Ctrl+B zweimal drücken, da Tmux einen Präfix-Schlüssel hat.)

245 

246**Wichtige Funktionen:**

247 

248* Die Ausgabe wird in eine Datei geschrieben und Claude kann sie mit dem Read-Tool abrufen

249* Hintergrund-Tasks haben eindeutige IDs zum Tracking und zur Ausgabebeschaffung

250* Hintergrund-Tasks werden automatisch bereinigt, wenn Claude Code beendet wird

251* Hintergrund-Tasks werden automatisch beendet, wenn die Ausgabe 5 GB überschreitet, mit einem Hinweis in stderr, der erklärt, warum

252 

253Um alle Hintergrund-Task-Funktionen zu deaktivieren, setzen Sie die Umgebungsvariable `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` auf `1`. Siehe [Umgebungsvariablen](/de/env-vars) für Details.

254 

255**Häufig im Hintergrund ausgeführte Befehle:**

256 

257* Build-Tools (webpack, vite, make)

258* Paketmanager (npm, yarn, pnpm)

259* Test-Runner (jest, pytest)

260* Entwicklungsserver

261* Lange laufende Prozesse (docker, terraform)

262 

263### Bash-Modus mit `!`-Präfix

264 

265Führen Sie Bash-Befehle direkt aus, ohne Claude zu durchlaufen, indem Sie Ihre Eingabe mit `!` präfixieren:

266 

267```bash theme={null}

268! npm test

269! git status

270! ls -la

271```

272 

273Bash-Modus:

274 

275* Fügt den Befehl und seine Ausgabe zum Gesprächskontext hinzu

276* Zeigt Echtzeit-Fortschritt und Ausgabe

277* Unterstützt die gleiche `Ctrl+B`-Hintergrund-Ausführung für lange laufende Befehle

278* Erfordert nicht, dass Claude den Befehl interpretiert oder genehmigt

279* Unterstützt verlaufsbasierte Autovervollständigung: Geben Sie einen Teilbefehl ein und drücken Sie **Tab**, um aus vorherigen `!`-Befehlen im aktuellen Projekt zu vervollständigen

280* Beenden Sie mit `Escape`, `Backspace` oder `Ctrl+U` bei einer leeren Eingabeaufforderung

281* Das Einfügen von Text, der mit `!` beginnt, in eine leere Eingabeaufforderung aktiviert automatisch den Bash-Modus und entspricht dem eingegebenen `!`-Verhalten

282 

283Dies ist nützlich für schnelle Shell-Operationen bei Beibehaltung des Gesprächskontexts.

284 

285## Prompt-Vorschläge

286 

287Wenn Sie eine Sitzung zum ersten Mal öffnen, wird ein ausgegrautes Beispiel-Befehl in der Eingabeaufforderung angezeigt, um Ihnen den Einstieg zu erleichtern. Claude Code wählt dies aus dem Git-Verlauf Ihres Projekts aus, sodass es die Dateien widerspiegelt, an denen Sie kürzlich gearbeitet haben.

288 

289Nachdem Claude antwortet, werden weiterhin Vorschläge basierend auf Ihrem Gesprächsverlauf angezeigt, z. B. ein Folgenschritt aus einer mehrteiligen Anfrage oder eine natürliche Fortsetzung Ihres Workflows.

290 

291* Drücken Sie **Tab** oder **Rechts-Pfeil**, um den Vorschlag zu akzeptieren, oder drücken Sie **Enter**, um zu akzeptieren und einzureichen

292* Beginnen Sie zu tippen, um ihn zu verwerfen

293 

294Der Vorschlag wird als Hintergrund-Anfrage ausgeführt, die den Prompt-Cache des übergeordneten Gesprächs wiederverwenden, sodass die zusätzlichen Kosten minimal sind. Claude Code überspringt die Vorschlagsgenerierung, wenn der Cache kalt ist, um unnötige Kosten zu vermeiden.

295 

296Vorschläge werden automatisch nach dem ersten Turn eines Gesprächs, im nicht-interaktiven Modus und im Plan-Modus übersprungen.

297 

298Um Prompt-Vorschläge vollständig zu deaktivieren, setzen Sie die Umgebungsvariable oder schalten Sie die Einstellung in `/config` um:

299 

300```bash theme={null}

301export CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=false

302```

303 

304## Nebenfragen mit /btw

305 

306Verwenden Sie `/btw`, um eine schnelle Frage zu Ihrer aktuellen Arbeit zu stellen, ohne sie zum Gesprächsverlauf hinzuzufügen. Dies ist nützlich, wenn Sie eine schnelle Antwort möchten, aber nicht den Hauptkontext unordentlich machen oder Claude von einer lange laufenden Aufgabe ablenken möchten.

307 

308```

309/btw what was the name of that config file again?

310```

311 

312Nebenfragen haben vollständige Sichtbarkeit des aktuellen Gesprächs, sodass Sie Fragen zu Code stellen können, den Claude bereits gelesen hat, Entscheidungen, die es früher getroffen hat, oder alles andere aus der Sitzung. Die Frage und Antwort sind flüchtig: Sie erscheinen in einer verwerfbaren Überlagerung und gelangen niemals in den Gesprächsverlauf.

313 

314* **Verfügbar während Claude arbeitet**: Sie können `/btw` auch ausführen, während Claude eine Antwort verarbeitet. Die Nebenfrage wird unabhängig ausgeführt und unterbricht den Hauptturn nicht.

315* **Kein Tool-Zugriff**: Nebenfragen beantworten nur aus dem, was bereits im Kontext ist. Claude kann keine Dateien lesen, Befehle ausführen oder suchen, wenn eine Nebenfrage beantwortet wird.

316* **Einzelne Antwort**: Es gibt keine Folgeversuche. Wenn Sie einen Hin- und Herwechsel benötigen, verwenden Sie stattdessen einen normalen Prompt.

317* **Niedrige Kosten**: Die Nebenfrage verwendet den Prompt-Cache des übergeordneten Gesprächs wieder, sodass die zusätzlichen Kosten minimal sind.

318 

319Drücken Sie **Space**, **Enter** oder **Escape**, um die Antwort zu verwerfen und zur Eingabeaufforderung zurückzukehren.

320 

321`/btw` ist das Gegenteil eines [Subagenten](/de/sub-agents): Es sieht Ihr vollständiges Gespräch, hat aber keine Tools, während ein Subagent vollständige Tools hat, aber mit einem leeren Kontext beginnt. Verwenden Sie `/btw`, um zu fragen, was Claude bereits aus dieser Sitzung weiß; verwenden Sie einen Subagenten, um etwas Neues herauszufinden.

322 

323## Task-Liste

324 

325Bei der Arbeit an komplexen, mehrstufigen Aufgaben erstellt Claude eine Task-Liste, um den Fortschritt zu verfolgen. Tasks erscheinen im Statusbereich Ihres Terminals mit Indikatoren, die zeigen, was ausstehend, in Bearbeitung oder abgeschlossen ist.

326 

327* Drücken Sie `Ctrl+T`, um die Task-Listen-Ansicht umzuschalten. Die Anzeige zeigt bis zu 5 Tasks gleichzeitig

328* Um alle Tasks anzuzeigen oder zu löschen, fragen Sie Claude direkt: "show me all tasks" oder "clear all tasks"

329* Tasks bleiben über Kontext-Kompaktionen hinweg bestehen und helfen Claude, bei größeren Projekten organisiert zu bleiben

330* Um eine Task-Liste über Sitzungen hinweg zu teilen, setzen Sie `CLAUDE_CODE_TASK_LIST_ID`, um ein benanntes Verzeichnis in `~/.claude/tasks/` zu verwenden: `CLAUDE_CODE_TASK_LIST_ID=my-project claude`

331 

332## Sitzungs-Zusammenfassung

333 

334Wenn Sie zum Terminal zurückkehren, nachdem Sie sich entfernt haben, zeigt Claude Code eine einzeilige Zusammenfassung dessen an, was bisher in der Sitzung passiert ist. Die Zusammenfassung wird im Hintergrund generiert, sobald mindestens drei Minuten seit dem letzten abgeschlossenen Turn vergangen sind und das Terminal nicht fokussiert ist, sodass sie bereit ist, wenn Sie zurückwechseln. Zusammenfassungen erscheinen nur, wenn die Sitzung mindestens drei Turns hat, und nie zweimal hintereinander.

335 

336Führen Sie `/recap` aus, um eine Zusammenfassung auf Anfrage zu generieren. Um automatische Zusammenfassungen auszuschalten, öffnen Sie `/config` und deaktivieren Sie **Session recap**.

337 

338Die Sitzungs-Zusammenfassung ist standardmäßig für jeden Plan und Provider aktiviert. Die Zusammenfassung wird im nicht-interaktiven Modus immer übersprungen.

339 

340## PR-Review-Status

341 

342Bei der Arbeit an einem Branch mit einem offenen Pull Request zeigt Claude Code einen anklickbaren PR-Link in der Fußzeile an (z. B. „PR #446"). Der Link hat eine farbige Unterstreichung, die den Review-Status anzeigt:

343 

344* Grün: genehmigt

345* Gelb: Review ausstehend

346* Rot: Änderungen angefordert

347* Grau: Entwurf

348* Lila: zusammengeführt

349 

350`Cmd+click` (Mac) oder `Ctrl+click` (Windows/Linux) auf den Link, um den Pull Request in Ihrem Browser zu öffnen. Der Status wird automatisch alle 60 Sekunden aktualisiert.

351 

352<Note>

353 Der PR-Status erfordert, dass die `gh` CLI installiert und authentifiziert ist (`gh auth login`).

354</Note>

355 

356## Siehe auch

357 

358* [Skills](/de/skills) - Benutzerdefinierte Prompts und Workflows

359* [Checkpointing](/de/checkpointing) - Spulen Sie Claudes Änderungen zurück und stellen Sie vorherige Zustände wieder her

360* [CLI-Referenz](/de/cli-reference) - Befehlszeilenflags und Optionen

361* [Einstellungen](/de/settings) - Konfigurationsoptionen

362* [Speicherverwaltung](/de/memory) - Verwalten von CLAUDE.md-Dateien

jetbrains.md +192 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# JetBrains IDEs

6 

7> Verwenden Sie Claude Code mit JetBrains IDEs einschließlich IntelliJ, PyCharm, WebStorm und mehr

8 

9Claude Code integriert sich mit JetBrains IDEs durch ein dediziertes Plugin und bietet Funktionen wie interaktive Diff-Anzeige, Freigabe von Auswahlkontext und mehr.

10 

11## Unterstützte IDEs

12 

13Das Claude Code Plugin funktioniert mit den meisten JetBrains IDEs, einschließlich:

14 

15* IntelliJ IDEA

16* PyCharm

17* Android Studio

18* WebStorm

19* PhpStorm

20* GoLand

21 

22## Funktionen

23 

24* **Schnellstart**: Verwenden Sie `Cmd+Esc` (Mac) oder `Ctrl+Esc` (Windows/Linux), um Claude Code direkt aus Ihrem Editor zu öffnen, oder klicken Sie auf die Claude Code Schaltfläche in der Benutzeroberfläche

25* **Diff-Anzeige**: Code-Änderungen können direkt im IDE Diff-Viewer anstelle des Terminals angezeigt werden

26* **Auswahlkontext**: Die aktuelle Auswahl oder der aktuelle Tab in der IDE wird automatisch mit Claude Code geteilt

27* **Dateireferenz-Verknüpfungen**: Verwenden Sie `Cmd+Option+K` (Mac) oder `Alt+Ctrl+K` (Linux/Windows), um Dateireferenzen wie `@src/auth.ts#L1-99` einzufügen

28* **Diagnose-Freigabe**: Diagnosefehler aus der IDE, wie Lint- und Syntaxfehler, werden automatisch mit Claude geteilt, während Sie arbeiten

29 

30## Installation

31 

32### Marketplace-Installation

33 

34Suchen Sie das [Claude Code Plugin](https://plugins.jetbrains.com/plugin/27310-claude-code-beta-) im JetBrains Marketplace und installieren Sie es, dann starten Sie Ihre IDE neu.

35 

36Falls Sie Claude Code noch nicht installiert haben, lesen Sie den [Schnellstart-Leitfaden](/de/quickstart) für Installationsanweisungen.

37 

38<Note>

39 Nach der Installation des Plugins müssen Sie Ihre IDE möglicherweise vollständig neu starten, damit es wirksam wird.

40</Note>

41 

42## Verwendung

43 

44### Aus Ihrer IDE

45 

46Führen Sie `claude` aus dem integrierten Terminal Ihrer IDE aus, und alle Integrationsfunktionen sind aktiv.

47 

48### Aus externen Terminals

49 

50Verwenden Sie den `/ide` Befehl in einem beliebigen externen Terminal, um Claude Code mit Ihrer JetBrains IDE zu verbinden und alle Funktionen zu aktivieren:

51 

52```bash theme={null}

53claude

54```

55 

56```text theme={null}

57/ide

58```

59 

60Wenn Sie möchten, dass Claude Zugriff auf die gleichen Dateien wie Ihre IDE hat, starten Sie Claude Code aus dem gleichen Verzeichnis wie Ihr IDE-Projektstammverzeichnis.

61 

62## Konfiguration

63 

64### Claude Code Einstellungen

65 

66Konfigurieren Sie die IDE-Integration durch Claude Code Einstellungen:

67 

681. Führen Sie `claude` aus

692. Geben Sie den `/config` Befehl ein

703. Stellen Sie das Diff-Tool auf `auto` ein, um Diffs in der IDE anzuzeigen, oder auf `terminal`, um sie im Terminal zu behalten

71 

72### Plugin-Einstellungen

73 

74Konfigurieren Sie das Claude Code Plugin, indem Sie zu **Einstellungen → Tools → Claude Code \[Beta]** gehen:

75 

76#### Allgemeine Einstellungen

77 

78* **Claude Befehl**: Geben Sie einen benutzerdefinierten Befehl an, um Claude auszuführen, zum Beispiel `claude`, `/usr/local/bin/claude` oder `npx @anthropic-ai/claude-code`

79* **Benachrichtigung für Claude-Befehl nicht gefunden unterdrücken**: Überspringen Sie Benachrichtigungen über das Nichtfinden des Claude-Befehls

80* **Option+Enter für mehrzeilige Eingabeaufforderungen aktivieren**: Nur auf macOS. Wenn aktiviert, fügt Option+Enter neue Zeilen in Claude Code Eingabeaufforderungen ein. Deaktivieren Sie dies, wenn die Option-Taste unerwartet erfasst wird. Erfordert einen Terminal-Neustart.

81* **Automatische Updates aktivieren**: Automatisch nach Plugin-Updates suchen und diese installieren, angewendet beim Neustart

82 

83<Tip>

84 Für WSL-Benutzer: Stellen Sie `wsl -d Ubuntu -- bash -lic "claude"` als Ihren Claude-Befehl ein (ersetzen Sie `Ubuntu` durch Ihren WSL-Distributionsnamen)

85</Tip>

86 

87#### ESC-Taste Konfiguration

88 

89Wenn die ESC-Taste Claude Code Operationen in JetBrains Terminals nicht unterbricht:

90 

911. Gehen Sie zu **Einstellungen → Tools → Terminal**

922. Entweder:

93 * Deaktivieren Sie „Fokus mit Escape zum Editor verschieben", oder

94 * Klicken Sie auf „Terminal-Tastenkombinationen konfigurieren" und löschen Sie die Verknüpfung „Fokus zum Editor wechseln"

953. Wenden Sie die Änderungen an

96 

97Dies ermöglicht es der ESC-Taste, Claude Code Operationen ordnungsgemäß zu unterbrechen.

98 

99## Spezielle Konfigurationen

100 

101### Remote-Entwicklung

102 

103<Warning>

104 Bei Verwendung von JetBrains Remote Development müssen Sie das Plugin auf dem Remote-Host über **Einstellungen → Plugin (Host)** installieren.

105</Warning>

106 

107Das Plugin muss auf dem Remote-Host installiert werden, nicht auf Ihrem lokalen Client-Computer.

108 

109### WSL-Konfiguration

110 

111Wenn Sie Claude Code auf WSL2 mit einer JetBrains IDE verwenden und „Keine verfügbaren IDEs erkannt" sehen, ist die Ursache normalerweise WSL2s NAT-Netzwerk oder die Windows Firewall, die die Verbindung zwischen WSL2 und der IDE blockiert, die auf dem Windows-Host ausgeführt wird. WSL1 verwendet das Netzwerk des Hosts direkt und ist nicht betroffen.

112 

113#### WSL2-Datenverkehr durch Windows Firewall zulassen

114 

115Dies ist die empfohlene Lösung, da sie Ihren vorhandenen WSL2-Netzwerkmodus beibehält.

116 

117<Steps>

118 <Step title="Finden Sie Ihre WSL2 IP-Adresse">

119 Führen Sie in Ihrer WSL-Shell Folgendes aus:

120 

121 ```bash theme={null}

122 hostname -I

123 ```

124 

125 Notieren Sie sich das Subnetz, zum Beispiel `172.21.123.45` befindet sich in `172.21.0.0/16`.

126 </Step>

127 

128 <Step title="Erstellen Sie eine Firewall-Regel">

129 Öffnen Sie PowerShell als Administrator und führen Sie Folgendes aus, passen Sie den IP-Bereich an Ihr Subnetz an:

130 

131 ```powershell theme={null}

132 New-NetFirewallRule -DisplayName "Allow WSL2 Internal Traffic" -Direction Inbound -Protocol TCP -Action Allow -RemoteAddress 172.21.0.0/16 -LocalAddress 172.21.0.0/16

133 ```

134 </Step>

135 

136 <Step title="Starten Sie Ihre IDE und Claude Code neu">

137 Schließen Sie beide und öffnen Sie sie erneut, damit die neue Regel wirksam wird.

138 </Step>

139</Steps>

140 

141#### Wechseln Sie WSL2 zu gespiegeltem Netzwerk

142 

143Gespiegeltes Netzwerk erfordert Windows 11 22H2 oder später. Wenn Sie Windows 10 verwenden, verwenden Sie stattdessen die Firewall-Regel oben.

144 

145Fügen Sie dies zu `.wslconfig` in Ihrem Windows-Benutzerverzeichnis hinzu:

146 

147```ini theme={null}

148[wsl2]

149networkingMode=mirrored

150```

151 

152Starten Sie dann WSL mit `wsl --shutdown` von PowerShell neu.

153 

154## Troubleshooting

155 

156### Plugin funktioniert nicht

157 

158Wenn das Plugin installiert ist, aber Claude Code Funktionen nicht in Ihrer IDE angezeigt werden:

159 

160* Stellen Sie sicher, dass Sie Claude Code aus dem Projektstammverzeichnis ausführen

161* Überprüfen Sie, dass das JetBrains Plugin in den IDE-Einstellungen aktiviert ist

162* Starten Sie die IDE vollständig neu (möglicherweise müssen Sie dies mehrmals tun)

163* Stellen Sie für Remote Development sicher, dass das Plugin auf dem Remote-Host installiert ist

164 

165### IDE nicht erkannt

166 

167Wenn das Ausführen von `claude` 'Keine verfügbaren IDEs erkannt" anzeigt:

168 

169* Überprüfen Sie, dass das Plugin installiert und aktiviert ist

170* Starten Sie die IDE vollständig neu

171* Überprüfen Sie, dass Sie Claude Code aus dem integrierten Terminal ausführen

172* Für WSL-Benutzer lesen Sie [WSL-Konfiguration](#wsl-konfiguration) oben

173 

174### Befehl nicht gefunden

175 

176Wenn das Klicken auf das Claude-Symbol „Befehl nicht gefunden" anzeigt:

177 

1781. Überprüfen Sie, dass Claude Code installiert ist, indem Sie `claude --version` in einem Terminal ausführen

1792. Konfigurieren Sie den Claude-Befehlspfad in den Plugin-Einstellungen

1803. Für WSL-Benutzer verwenden Sie das WSL-Befehlsformat, das im Konfigurationsabschnitt erwähnt wird

181 

182## Sicherheitsaspekte

183 

184Wenn Claude Code in einer JetBrains IDE mit aktivierten Auto-Edit-Berechtigungen ausgeführt wird, kann es möglicherweise IDE-Konfigurationsdateien ändern, die automatisch von Ihrer IDE ausgeführt werden können. Dies kann das Risiko der Ausführung von Claude Code im Auto-Edit-Modus erhöhen und es ermöglichen, Claude Code Berechtigungsaufforderungen für die Bash-Ausführung zu umgehen.

185 

186Bei der Ausführung in JetBrains IDEs sollten Sie Folgendes beachten:

187 

188* Verwenden Sie den manuellen Genehmigungsmodus für Bearbeitungen

189* Achten Sie besonders darauf, dass Claude nur mit vertrauenswürdigen Eingabeaufforderungen verwendet wird

190* Seien Sie sich bewusst, welche Dateien Claude Code ändern kann

191 

192Für Claude Code Installations- oder Anmeldeprobleme außerhalb der IDE lesen Sie [Troubleshoot installation and login](/de/troubleshoot-install).

keybindings.md +463 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Tastaturkürzel anpassen

6 

7> Passen Sie Tastaturkürzel in Claude Code mit einer Keybindings-Konfigurationsdatei an.

8 

9<Note>

10 Anpassbare Tastaturkürzel erfordern Claude Code v2.1.18 oder später. Überprüfen Sie Ihre Version mit `claude --version`.

11</Note>

12 

13Claude Code unterstützt anpassbare Tastaturkürzel. Führen Sie `/keybindings` aus, um Ihre Konfigurationsdatei unter `~/.claude/keybindings.json` zu erstellen oder zu öffnen.

14 

15## Konfigurationsdatei

16 

17Die Keybindings-Konfigurationsdatei ist ein Objekt mit einem `bindings`-Array. Jeder Block gibt einen Kontext und eine Zuordnung von Tastenkombinationen zu Aktionen an.

18 

19<Note>Änderungen an der Keybindings-Datei werden automatisch erkannt und angewendet, ohne Claude Code neu zu starten.</Note>

20 

21| Feld | Beschreibung |

22| :--------- | :--------------------------------------------------------- |

23| `$schema` | Optionale JSON-Schema-URL für Editor-Autovervollständigung |

24| `$docs` | Optionale Dokumentations-URL |

25| `bindings` | Array von Binding-Blöcken nach Kontext |

26 

27Dieses Beispiel bindet `Ctrl+E` zum Öffnen eines externen Editors im Chat-Kontext und hebt die Bindung von `Ctrl+U` auf:

28 

29```json theme={null}

30{

31 "$schema": "https://www.schemastore.org/claude-code-keybindings.json",

32 "$docs": "https://code.claude.com/docs/en/keybindings",

33 "bindings": [

34 {

35 "context": "Chat",

36 "bindings": {

37 "ctrl+e": "chat:externalEditor",

38 "ctrl+u": null

39 }

40 }

41 ]

42}

43```

44 

45## Kontexte

46 

47Jeder Binding-Block gibt einen **Kontext** an, in dem die Bindings gelten:

48 

49| Kontext | Beschreibung |

50| :---------------- | :-------------------------------------------------------- |

51| `Global` | Gilt überall in der App |

52| `Chat` | Haupteingabebereich für Chat |

53| `Autocomplete` | Autovervollständigungsmenü ist offen |

54| `Settings` | Einstellungsmenü |

55| `Confirmation` | Berechtigungs- und Bestätigungsdialoge |

56| `Tabs` | Tab-Navigationskomponenten |

57| `Help` | Hilfemenü ist sichtbar |

58| `Transcript` | Transkript-Viewer |

59| `HistorySearch` | Verlaufssuchmodus (Ctrl+R) |

60| `Task` | Hintergrundaufgabe wird ausgeführt |

61| `ThemePicker` | Design-Picker-Dialog |

62| `Attachments` | Bildanhang-Navigation in Auswahldialogen |

63| `Footer` | Fußzeilen-Indikator-Navigation (Aufgaben, Teams, Diff) |

64| `MessageSelector` | Nachrichtenauswahl für Rewind- und Zusammenfassungsdialog |

65| `DiffDialog` | Diff-Viewer-Navigation |

66| `ModelPicker` | Modell-Picker-Aufwandsstufe |

67| `Select` | Generische Select/List-Komponenten |

68| `Plugin` | Plugin-Dialog (durchsuchen, entdecken, verwalten) |

69| `Scroll` | Konversations-Scrolling und Textauswahl im Vollbildmodus |

70| `Doctor` | `/doctor` Diagnose-Bildschirm |

71 

72## Verfügbare Aktionen

73 

74Aktionen folgen einem `namespace:action`-Format, wie `chat:submit` zum Senden einer Nachricht oder `app:toggleTodos` zum Anzeigen der Aufgabenliste. Jeder Kontext hat spezifische verfügbare Aktionen.

75 

76### App-Aktionen

77 

78Aktionen verfügbar im `Global`-Kontext:

79 

80| Aktion | Standard | Beschreibung |

81| :--------------------- | :--------------- | :---------------------------------------- |

82| `app:interrupt` | Ctrl+C | Aktuelle Operation abbrechen |

83| `app:exit` | Ctrl+D | Claude Code beenden |

84| `app:redraw` | (nicht gebunden) | Bildschirm neu zeichnen erzwingen |

85| `app:toggleTodos` | Ctrl+T | Sichtbarkeit der Aufgabenliste umschalten |

86| `app:toggleTranscript` | Ctrl+O | Ausführliches Transkript umschalten |

87 

88### Verlaufsaktionen

89 

90Aktionen zum Navigieren im Befehlsverlauf:

91 

92| Aktion | Standard | Beschreibung |

93| :----------------- | :------- | :------------------------- |

94| `history:search` | Ctrl+R | Verlaufssuche öffnen |

95| `history:previous` | Oben | Vorheriges Verlaufselement |

96| `history:next` | Unten | Nächstes Verlaufselement |

97 

98### Chat-Aktionen

99 

100Aktionen verfügbar im `Chat`-Kontext:

101 

102| Aktion | Standard | Beschreibung |

103| :-------------------- | :--------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

104| `chat:cancel` | Escape | Aktuelle Eingabe abbrechen |

105| `chat:clearInput` | Ctrl+L | Vollständiges Bildschirm-Neuzeichnen erzwingen, Eingabe beibehalten. Im [Vollbildrendering](/de/fullscreen#clear-the-conversation) zweimal innerhalb von zwei Sekunden drücken, um `/clear` auszuführen |

106| `chat:clearScreen` | Cmd+K | Im [Vollbildrendering](/de/fullscreen#clear-the-conversation) zweimal innerhalb von zwei Sekunden drücken, um `/clear` auszuführen |

107| `chat:killAgents` | Ctrl+X Ctrl+K | Alle Hintergrund-Agenten beenden |

108| `chat:cycleMode` | Shift+Tab\* | Berechtigungsmodi durchlaufen |

109| `chat:modelPicker` | Meta+P | Modell-Picker öffnen |

110| `chat:fastMode` | Meta+O | Schnellmodus umschalten |

111| `chat:thinkingToggle` | Meta+T | Erweitertes Denken umschalten |

112| `chat:submit` | Enter | Nachricht senden |

113| `chat:newline` | Ctrl+J | Zeilenumbruch einfügen, ohne zu senden |

114| `chat:undo` | Ctrl+\_, Ctrl+Shift+- | Letzte Aktion rückgängig machen |

115| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | In externem Editor öffnen |

116| `chat:stash` | Ctrl+S | Aktuelle Eingabeaufforderung speichern |

117| `chat:imagePaste` | Ctrl+V (Alt+V unter Windows) | Bild einfügen |

118 

119\*Unter Windows ohne VT-Modus (Node \<24.2.0/\<22.17.0, Bun \<1.2.23) Standard auf Meta+M.

120 

121### Autovervollständigungsaktionen

122 

123Aktionen verfügbar im `Autocomplete`-Kontext:

124 

125| Aktion | Standard | Beschreibung |

126| :---------------------- | :------- | :-------------------- |

127| `autocomplete:accept` | Tab | Vorschlag akzeptieren |

128| `autocomplete:dismiss` | Escape | Menü schließen |

129| `autocomplete:previous` | Oben | Vorheriger Vorschlag |

130| `autocomplete:next` | Unten | Nächster Vorschlag |

131 

132### Bestätigungsaktionen

133 

134Aktionen verfügbar im `Confirmation`-Kontext:

135 

136| Aktion | Standard | Beschreibung |

137| :-------------------------- | :--------------- | :-------------------------------- |

138| `confirm:yes` | Y, Enter | Aktion bestätigen |

139| `confirm:no` | N, Escape | Aktion ablehnen |

140| `confirm:previous` | Oben | Vorherige Option |

141| `confirm:next` | Unten | Nächste Option |

142| `confirm:nextField` | Tab | Nächstes Feld |

143| `confirm:previousField` | (nicht gebunden) | Vorheriges Feld |

144| `confirm:toggle` | Leertaste | Auswahl umschalten |

145| `confirm:cycleMode` | Shift+Tab | Berechtigungsmodi durchlaufen |

146| `confirm:toggleExplanation` | Ctrl+E | Berechtigungserklärung umschalten |

147 

148### Berechtigungsaktionen

149 

150Aktionen verfügbar im `Confirmation`-Kontext für Berechtigungsdialoge:

151 

152| Aktion | Standard | Beschreibung |

153| :----------------------- | :------- | :---------------------------------- |

154| `permission:toggleDebug` | Ctrl+D | Berechtigungs-Debug-Info umschalten |

155 

156### Transkript-Aktionen

157 

158Aktionen verfügbar im `Transcript`-Kontext:

159 

160| Aktion | Standard | Beschreibung |

161| :------------------------- | :---------------- | :------------------------------- |

162| `transcript:toggleShowAll` | Ctrl+E | Alle Inhalte anzeigen umschalten |

163| `transcript:exit` | q, Ctrl+C, Escape | Transkript-Ansicht beenden |

164 

165### Verlaufssuch-Aktionen

166 

167Aktionen verfügbar im `HistorySearch`-Kontext:

168 

169| Aktion | Standard | Beschreibung |

170| :------------------------- | :---------- | :--------------------------------------------- |

171| `historySearch:next` | Ctrl+R | Nächster Treffer |

172| `historySearch:accept` | Escape, Tab | Auswahl akzeptieren |

173| `historySearch:cancel` | Ctrl+C | Suche abbrechen |

174| `historySearch:execute` | Enter | Ausgewählten Befehl ausführen |

175| `historySearch:cycleScope` | Ctrl+S | Bereich durchlaufen: Sitzung, Projekt, überall |

176 

177### Aufgaben-Aktionen

178 

179Aktionen verfügbar im `Task`-Kontext:

180 

181| Aktion | Standard | Beschreibung |

182| :---------------- | :------- | :---------------------------------------------- |

183| `task:background` | Ctrl+B | Aktuelle Aufgabe in den Hintergrund verschieben |

184 

185### Design-Aktionen

186 

187Aktionen verfügbar im `ThemePicker`-Kontext:

188 

189| Aktion | Standard | Beschreibung |

190| :------------------------------- | :------- | :---------------------------- |

191| `theme:toggleSyntaxHighlighting` | Ctrl+T | Syntaxhervorhebung umschalten |

192 

193### Hilfe-Aktionen

194 

195Aktionen verfügbar im `Help`-Kontext:

196 

197| Aktion | Standard | Beschreibung |

198| :------------- | :------- | :------------------ |

199| `help:dismiss` | Escape | Hilfemenü schließen |

200 

201### Tabs-Aktionen

202 

203Aktionen verfügbar im `Tabs`-Kontext:

204 

205| Aktion | Standard | Beschreibung |

206| :-------------- | :--------------- | :------------- |

207| `tabs:next` | Tab, Rechts | Nächster Tab |

208| `tabs:previous` | Shift+Tab, Links | Vorheriger Tab |

209 

210### Anhänge-Aktionen

211 

212Aktionen verfügbar im `Attachments`-Kontext:

213 

214| Aktion | Standard | Beschreibung |

215| :--------------------- | :----------------- | :---------------------------- |

216| `attachments:next` | Rechts | Nächster Anhang |

217| `attachments:previous` | Links | Vorheriger Anhang |

218| `attachments:remove` | Rücktaste, Löschen | Ausgewählten Anhang entfernen |

219| `attachments:exit` | Unten, Escape | Anhang-Navigation beenden |

220 

221### Fußzeilen-Aktionen

222 

223Aktionen verfügbar im `Footer`-Kontext:

224 

225| Aktion | Standard | Beschreibung |

226| :---------------------- | :------- | :----------------------------------------------------------- |

227| `footer:next` | Rechts | Nächstes Fußzeilen-Element |

228| `footer:previous` | Links | Vorheriges Fußzeilen-Element |

229| `footer:up` | Oben | In der Fußzeile nach oben navigieren (Auswahl oben aufheben) |

230| `footer:down` | Unten | In der Fußzeile nach unten navigieren |

231| `footer:openSelected` | Enter | Ausgewähltes Fußzeilen-Element öffnen |

232| `footer:clearSelection` | Escape | Fußzeilen-Auswahl löschen |

233 

234### Nachrichtenauswahl-Aktionen

235 

236Aktionen verfügbar im `MessageSelector`-Kontext:

237 

238| Aktion | Standard | Beschreibung |

239| :----------------------- | :------------------------------------------- | :------------------------------ |

240| `messageSelector:up` | Oben, K, Ctrl+P | In der Liste nach oben bewegen |

241| `messageSelector:down` | Unten, J, Ctrl+N | In der Liste nach unten bewegen |

242| `messageSelector:top` | Ctrl+Oben, Shift+Oben, Meta+Oben, Shift+K | Zum Anfang springen |

243| `messageSelector:bottom` | Ctrl+Unten, Shift+Unten, Meta+Unten, Shift+J | Zum Ende springen |

244| `messageSelector:select` | Enter | Nachricht auswählen |

245 

246### Diff-Aktionen

247 

248Aktionen verfügbar im `DiffDialog`-Kontext:

249 

250| Aktion | Standard | Beschreibung |

251| :-------------------- | :------------------ | :------------------------- |

252| `diff:dismiss` | Escape | Diff-Viewer schließen |

253| `diff:previousSource` | Links | Vorherige Diff-Quelle |

254| `diff:nextSource` | Rechts | Nächste Diff-Quelle |

255| `diff:previousFile` | Oben | Vorherige Datei im Diff |

256| `diff:nextFile` | Unten | Nächste Datei im Diff |

257| `diff:viewDetails` | Enter | Diff-Details anzeigen |

258| `diff:back` | (kontextspezifisch) | Im Diff-Viewer zurückgehen |

259 

260### Modell-Picker-Aktionen

261 

262Aktionen verfügbar im `ModelPicker`-Kontext:

263 

264| Aktion | Standard | Beschreibung |

265| :--------------------------- | :------- | :----------------------- |

266| `modelPicker:decreaseEffort` | Links | Aufwandsstufe verringern |

267| `modelPicker:increaseEffort` | Rechts | Aufwandsstufe erhöhen |

268 

269### Select-Aktionen

270 

271Aktionen verfügbar im `Select`-Kontext:

272 

273| Aktion | Standard | Beschreibung |

274| :---------------- | :--------------- | :------------------ |

275| `select:next` | Unten, J, Ctrl+N | Nächste Option |

276| `select:previous` | Oben, K, Ctrl+P | Vorherige Option |

277| `select:accept` | Enter | Auswahl akzeptieren |

278| `select:cancel` | Escape | Auswahl abbrechen |

279 

280### Plugin-Aktionen

281 

282Aktionen verfügbar im `Plugin`-Kontext:

283 

284| Aktion | Standard | Beschreibung |

285| :---------------- | :-------- | :--------------------------------------------------------------------------------------------------------- |

286| `plugin:toggle` | Leertaste | Plugin-Auswahl umschalten |

287| `plugin:install` | I | Ausgewählte Plugins installieren |

288| `plugin:favorite` | F | Ausgewähltes Plugin als Favorit markieren, damit es oben auf der Registerkarte „Installiert" sortiert wird |

289 

290### Einstellungs-Aktionen

291 

292Aktionen verfügbar im `Settings`-Kontext:

293 

294| Aktion | Standard | Beschreibung |

295| :---------------- | :------- | :---------------------------------------------------------------------------------------------- |

296| `settings:search` | / | Suchmodus aktivieren |

297| `settings:retry` | R | Nutzungsdaten neu laden (bei Fehler) |

298| `settings:close` | Enter | Änderungen speichern und Konfigurationspanel schließen. Escape verwirft Änderungen und schließt |

299 

300### Doctor-Aktionen

301 

302Aktionen verfügbar im `Doctor`-Kontext:

303 

304| Aktion | Standard | Beschreibung |

305| :----------- | :------- | :------------------------------------------------------------------------------------------------------------------------ |

306| `doctor:fix` | F | Senden Sie den Diagnosebericht an Claude, um die gemeldeten Probleme zu beheben. Nur aktiv, wenn Probleme gefunden werden |

307 

308### Sprach-Aktionen

309 

310Aktionen verfügbar im `Chat`-Kontext, wenn [Sprachdiktat](/de/voice-dictation) aktiviert ist:

311 

312| Aktion | Standard | Beschreibung |

313| :----------------- | :-------- | :----------------------------------------------------------------------- |

314| `voice:pushToTalk` | Leertaste | Eingabeaufforderung diktieren. Halten oder tippen je nach `/voice`-Modus |

315 

316### Scroll-Aktionen

317 

318Aktionen verfügbar im `Scroll`-Kontext, wenn [Vollbildrendering](/de/fullscreen) aktiviert ist:

319 

320| Aktion | Standard | Beschreibung |

321| :-------------------------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------- |

322| `scroll:lineUp` | (nicht gebunden) | Eine Zeile nach oben scrollen. Mausrad-Scrolling löst diese Aktion aus |

323| `scroll:lineDown` | (nicht gebunden) | Eine Zeile nach unten scrollen. Mausrad-Scrolling löst diese Aktion aus |

324| `scroll:pageUp` | Bild-Auf | Halbe Viewport-Höhe nach oben scrollen |

325| `scroll:pageDown` | Bild-Ab | Halbe Viewport-Höhe nach unten scrollen |

326| `scroll:top` | Ctrl+Pos1 | Zum Anfang der Konversation springen |

327| `scroll:bottom` | Ctrl+Ende | Zur neuesten Nachricht springen und Auto-Follow erneut aktivieren |

328| `scroll:halfPageUp` | (nicht gebunden) | Halbe Viewport-Höhe nach oben scrollen. Gleiches Verhalten wie `scroll:pageUp`, bereitgestellt für Vi-ähnliche Neubindungen |

329| `scroll:halfPageDown` | (nicht gebunden) | Halbe Viewport-Höhe nach unten scrollen. Gleiches Verhalten wie `scroll:pageDown`, bereitgestellt für Vi-ähnliche Neubindungen |

330| `scroll:fullPageUp` | (nicht gebunden) | Volle Viewport-Höhe nach oben scrollen |

331| `scroll:fullPageDown` | (nicht gebunden) | Volle Viewport-Höhe nach unten scrollen |

332| `selection:copy` | Ctrl+Shift+C / Cmd+C | Ausgewählten Text in die Zwischenablage kopieren |

333| `selection:clear` | (nicht gebunden) | Aktive Textauswahl löschen |

334| `selection:extendLeft` | Shift+Links | Aktive Auswahl eine Spalte nach links erweitern |

335| `selection:extendRight` | Shift+Rechts | Aktive Auswahl eine Spalte nach rechts erweitern |

336| `selection:extendUp` | Shift+Oben | Aktive Auswahl eine Zeile nach oben erweitern. Scrollt den Viewport, wenn die Auswahl die obere Kante erreicht |

337| `selection:extendDown` | Shift+Unten | Aktive Auswahl eine Zeile nach unten erweitern. Scrollt den Viewport, wenn die Auswahl die untere Kante erreicht |

338| `selection:extendLineStart` | Shift+Pos1 | Aktive Auswahl zum Anfang der Zeile erweitern |

339| `selection:extendLineEnd` | Shift+Ende | Aktive Auswahl zum Ende der Zeile erweitern |

340 

341## Tastenkombinations-Syntax

342 

343### Modifizierer

344 

345Verwenden Sie Modifizierer-Tasten mit dem `+`-Trennzeichen:

346 

347* `ctrl` oder `control` - Strg-Taste

348* `shift` - Umschalt-Taste

349* `alt`, `opt`, `option` oder `meta` - Alt-Taste unter Windows und Linux, Option-Taste unter macOS

350* `cmd`, `command`, `super` oder `win` - Befehlstaste unter macOS, Windows-Taste unter Windows, Super-Taste unter Linux

351 

352Die `cmd`-Gruppe wird nur in Terminals erkannt, die den Super-Modifizierer melden, wie z. B. solche, die das Kitty-Tastaturprotokoll oder den `modifyOtherKeys`-Modus von xterm unterstützen. Die meisten Terminals senden ihn nicht, daher verwenden Sie `ctrl` oder `meta` für Bindungen, die überall funktionieren sollen.

353 

354Beispiele:

355 

356```text theme={null}

357ctrl+k Strg + K

358shift+tab Umschalt + Tab

359meta+p Option + P unter macOS, Alt + P anderswo

360ctrl+shift+c Mehrere Modifizierer

361```

362 

363### Großbuchstaben

364 

365Ein eigenständiger Großbuchstabe impliziert Umschalt. Zum Beispiel ist `K` gleichbedeutend mit `shift+k`. Dies ist nützlich für Vim-ähnliche Bindungen, bei denen Groß- und Kleinbuchstaben unterschiedliche Bedeutungen haben.

366 

367Großbuchstaben mit Modifizierern (z. B. `ctrl+K`) werden als stilistisch behandelt und implizieren **nicht** Umschalt: `ctrl+K` ist dasselbe wie `ctrl+k`.

368 

369### Akkorde

370 

371Akkorde sind Sequenzen von Tastenkombinationen, die durch Leerzeichen getrennt sind:

372 

373```text theme={null}

374ctrl+k ctrl+s Drücken Sie Strg+K, loslassen, dann Strg+S

375```

376 

377### Spezielle Tasten

378 

379* `escape` oder `esc` - Escape-Taste

380* `enter` oder `return` - Enter-Taste

381* `tab` - Tab-Taste

382* `space` - Leertaste

383* `up`, `down`, `left`, `right` - Pfeiltasten

384* `backspace`, `delete` - Löschtasten

385 

386## Standardkürzel aufheben

387 

388Setzen Sie eine Aktion auf `null`, um ein Standardkürzel aufzuheben:

389 

390```json theme={null}

391{

392 "bindings": [

393 {

394 "context": "Chat",

395 "bindings": {

396 "ctrl+s": null

397 }

398 }

399 ]

400}

401```

402 

403Dies funktioniert auch für Akkord-Bindings. Das Aufheben aller Akkorde, die ein Präfix teilen, gibt dieses Präfix für die Verwendung als Single-Key-Binding frei:

404 

405```json theme={null}

406{

407 "bindings": [

408 {

409 "context": "Chat",

410 "bindings": {

411 "ctrl+x ctrl+k": null,

412 "ctrl+x ctrl+e": null,

413 "ctrl+x": "chat:newline"

414 }

415 }

416 ]

417}

418```

419 

420Wenn Sie einige, aber nicht alle Akkorde auf einem Präfix aufheben, führt das Drücken des Präfix immer noch in den Akkord-Wartmodus für die verbleibenden Bindings ein.

421 

422## Reservierte Kürzel

423 

424Diese Kürzel können nicht neu gebunden werden:

425 

426| Kürzel | Grund |

427| :-------- | :------------------------------------------------- |

428| Ctrl+C | Hardcodierter Interrupt/Abbruch |

429| Ctrl+D | Hardcodierter Ausstieg |

430| Ctrl+M | Identisch mit Enter in Terminals (beide senden CR) |

431| Caps Lock | Nicht an Terminalanwendungen übermittelt |

432 

433## Terminal-Konflikte

434 

435Einige Kürzel können mit Terminal-Multiplexern in Konflikt geraten:

436 

437| Kürzel | Konflikt |

438| :----- | :--------------------------------------- |

439| Ctrl+B | tmux-Präfix (zweimal drücken zum Senden) |

440| Ctrl+A | GNU Screen-Präfix |

441| Ctrl+Z | Unix-Prozess-Suspend (SIGTSTP) |

442 

443## Vim-Modus-Interaktion

444 

445Wenn der Vim-Modus aktiviert ist über `/config` → Editor-Modus, arbeiten Keybindings und Vim-Modus unabhängig:

446 

447* **Vim-Modus** verarbeitet Eingaben auf der Texteingangsebene (Cursor-Bewegung, Modi, Bewegungen)

448* **Keybindings** verarbeiten Aktionen auf der Komponentenebene (Aufgaben umschalten, senden usw.)

449* Die Escape-Taste im Vim-Modus wechselt von INSERT zu NORMAL-Modus; sie löst nicht `chat:cancel` aus

450* Die meisten Ctrl+Taste-Kürzel werden durch den Vim-Modus zum Keybinding-System weitergeleitet

451* Im Vim-NORMAL-Modus zeigt `?` das Hilfemenü an (Vim-Verhalten)

452 

453## Validierung

454 

455Claude Code validiert Ihre Keybindings und zeigt Warnungen für:

456 

457* Parse-Fehler (ungültiges JSON oder Struktur)

458* Ungültige Kontextnamen

459* Reservierte Kürzel-Konflikte

460* Terminal-Multiplexer-Konflikte

461* Doppelte Bindings im selben Kontext

462 

463Führen Sie `/doctor` aus, um Keybinding-Warnungen anzuzeigen.

llm-gateway.md +196 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# LLM-Gateway-Konfiguration

6 

7> Erfahren Sie, wie Sie Claude Code für die Zusammenarbeit mit LLM-Gateway-Lösungen konfigurieren. Behandelt Gateway-Anforderungen, Authentifizierungskonfiguration, Modellauswahl und anbieter-spezifisches Endpoint-Setup.

8 

9LLM-Gateways bieten eine zentralisierte Proxy-Schicht zwischen Claude Code und Modellanbietern und bieten häufig:

10 

11* **Zentralisierte Authentifizierung** - Einzelner Punkt für die API-Schlüsselverwaltung

12* **Nutzungsverfolgung** - Überwachen Sie die Nutzung über Teams und Projekte hinweg

13* **Kostenkontrollen** - Implementieren Sie Budgets und Ratenlimits

14* **Audit-Protokollierung** - Verfolgen Sie alle Modellinteraktionen zur Compliance

15* **Modell-Routing** - Wechseln Sie zwischen Anbietern ohne Code-Änderungen

16 

17## Gateway-Anforderungen

18 

19Damit ein LLM-Gateway mit Claude Code funktioniert, muss es die folgenden Anforderungen erfüllen:

20 

21**API-Format**

22 

23Das Gateway muss Clients mindestens eines der folgenden API-Formate bereitstellen:

24 

251. **Anthropic Messages**: `/v1/messages`, `/v1/messages/count_tokens`

26 * Muss Request-Header weiterleiten: `anthropic-beta`, `anthropic-version`

27 

282. **Bedrock InvokeModel**: `/invoke`, `/invoke-with-response-stream`

29 * Muss Request-Body-Felder beibehalten: `anthropic_beta`, `anthropic_version`

30 

313. **Vertex rawPredict**: `:rawPredict`, `:streamRawPredict`, `/count-tokens:rawPredict`

32 * Muss Request-Header weiterleiten: `anthropic-beta`, `anthropic-version`

33 

34Das Nichtweiterleiten von Headern oder das Nichtbeibehalten von Body-Feldern kann zu eingeschränkter Funktionalität oder der Unmöglichkeit führen, Claude Code-Funktionen zu nutzen.

35 

36<Note>

37 Claude Code bestimmt, welche Funktionen aktiviert werden sollen, basierend auf dem API-Format. Bei Verwendung des Anthropic Messages-Formats mit Bedrock oder Vertex müssen Sie möglicherweise die Umgebungsvariable `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` setzen.

38</Note>

39 

40**Request-Header**

41 

42Claude Code enthält die folgenden Header bei jeder API-Anfrage:

43 

44| Header | Beschreibung |

45| :------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

46| `X-Claude-Code-Session-Id` | Ein eindeutiger Bezeichner für die aktuelle Claude Code-Sitzung. Proxies können dies verwenden, um alle API-Anfragen aus einer einzelnen Sitzung zu aggregieren, ohne den Request-Body zu analysieren. |

47 

48Claude Code stellt auch einen kurzen Attributionsblock dem System-Prompt voran, der die Client-Version und einen Fingerabdruck aus dem Gespräch enthält. Die Anthropic API entfernt diesen Block vor der Verarbeitung, sodass er sich nicht auf First-Party-Prompt-Caching auswirkt. Wenn Ihr Gateway seinen eigenen Prompt-Cache mit dem vollständigen Request-Body als Schlüssel implementiert, setzen Sie [`CLAUDE_CODE_ATTRIBUTION_HEADER=0`](/de/env-vars), um ihn auszulassen.

49 

50## Konfiguration

51 

52### Modellauswahl

53 

54Standardmäßig verwendet Claude Code Standard-Modellnamen für das ausgewählte API-Format.

55 

56Wenn `ANTHROPIC_BASE_URL` auf ein Gateway verweist, das das Anthropic Messages-Format bereitstellt, fragt Claude Code beim Start den `/v1/models`-Endpunkt des Gateways ab und fügt die zurückgegebenen Modelle zur `/model`-Auswahl hinzu. Jeder erkannte Eintrag ist mit „Aus Gateway" gekennzeichnet und verwendet das Feld `display_name` aus der Antwort, wenn eines bereitgestellt wird. Dies erfordert Claude Code v2.1.126 oder später.

57 

58Die Erkennung gilt nur für das Anthropic Messages-Format. Sie wird nicht für Bedrock- oder Vertex-Pass-Through-Endpunkte ausgeführt und wird nicht ausgeführt, wenn `ANTHROPIC_BASE_URL` nicht gesetzt ist oder auf `api.anthropic.com` verweist.

59 

60Die Erkennungsanfrage authentifiziert sich auf die gleiche Weise wie Inferenzanfragen: Sie sendet `ANTHROPIC_AUTH_TOKEN` als Bearer-Token oder `ANTHROPIC_API_KEY` als `x-api-key`-Header, wenn kein Auth-Token gesetzt ist, zusammen mit allen Headern aus `ANTHROPIC_CUSTOM_HEADERS`. Nur Modelle, deren ID mit `claude` oder `anthropic` beginnt, werden zur Auswahl hinzugefügt. Die Ergebnisse werden in `~/.claude/cache/gateway-models.json` zwischengespeichert und bei jedem Start aktualisiert. Wenn die Anfrage fehlschlägt oder das Gateway `/v1/models` nicht implementiert, wird die Auswahl auf die zwischengespeicherte Liste vom vorherigen Start oder auf die integrierte Modellliste zurückgesetzt.

61 

62Wenn Ihr Gateway Modellnamen verwendet, die nicht dem Erkennungsfilter entsprechen, verwenden Sie die in [Modellkonfiguration](/de/model-config) dokumentierten Umgebungsvariablen, um sie manuell hinzuzufügen.

63 

64## LiteLLM-Konfiguration

65 

66<Warning>

67 LiteLLM PyPI-Versionen 1.82.7 und 1.82.8 wurden mit Malware zum Diebstahl von Anmeldedaten kompromittiert. Installieren Sie diese Versionen nicht. Wenn Sie diese bereits installiert haben:

68 

69 * Entfernen Sie das Paket

70 * Rotieren Sie alle Anmeldedaten auf betroffenen Systemen

71 * Folgen Sie den Abhilfeschritten in [BerriAI/litellm#24518](https://github.com/BerriAI/litellm/issues/24518)

72 

73 LiteLLM ist ein Drittanbieter-Proxy-Service. Anthropic befürwortet, wartet oder prüft nicht die Sicherheit oder Funktionalität von LiteLLM. Diese Anleitung wird zu Informationszwecken bereitgestellt und kann veraltet werden. Verwenden Sie sie nach eigenem Ermessen.

74</Warning>

75 

76### Voraussetzungen

77 

78* Claude Code auf die neueste Version aktualisiert

79* LiteLLM Proxy Server bereitgestellt und zugänglich

80* Zugriff auf Claude-Modelle über Ihren gewählten Anbieter

81 

82### Grundlegende LiteLLM-Einrichtung

83 

84**Konfigurieren Sie Claude Code**:

85 

86#### Authentifizierungsmethoden

87 

88##### Statischer API-Schlüssel

89 

90Einfachste Methode mit einem festen API-Schlüssel:

91 

92```bash theme={null}

93# In Umgebung setzen

94export ANTHROPIC_AUTH_TOKEN=sk-litellm-static-key

95 

96# Oder in Claude Code-Einstellungen

97{

98 "env": {

99 "ANTHROPIC_AUTH_TOKEN": "sk-litellm-static-key"

100 }

101}

102```

103 

104Dieser Wert wird als `Authorization`-Header gesendet.

105 

106##### Dynamischer API-Schlüssel mit Helper

107 

108Für rotierende Schlüssel oder Pro-Benutzer-Authentifizierung:

109 

1101. Erstellen Sie ein API-Schlüssel-Helper-Skript:

111 

112```bash theme={null}

113#!/bin/bash

114# ~/bin/get-litellm-key.sh

115 

116# Beispiel: Schlüssel aus Vault abrufen

117vault kv get -field=api_key secret/litellm/claude-code

118 

119# Beispiel: JWT-Token generieren

120jwt encode \

121 --secret="${JWT_SECRET}" \

122 --exp="+1h" \

123 '{"user":"'${USER}'","team":"engineering"}'

124```

125 

1262. Konfigurieren Sie Claude Code-Einstellungen zur Verwendung des Helpers:

127 

128```json theme={null}

129{

130 "apiKeyHelper": "~/bin/get-litellm-key.sh"

131}

132```

133 

1343. Legen Sie das Token-Aktualisierungsintervall fest:

135 

136```bash theme={null}

137# Alle Stunde aktualisieren (3600000 ms)

138export CLAUDE_CODE_API_KEY_HELPER_TTL_MS=3600000

139```

140 

141Dieser Wert wird als `Authorization`- und `X-Api-Key`-Header gesendet. Der `apiKeyHelper` hat eine niedrigere Priorität als `ANTHROPIC_AUTH_TOKEN` oder `ANTHROPIC_API_KEY`.

142 

143#### Einheitlicher Endpoint (empfohlen)

144 

145Verwendung von LiteLLMs [Anthropic-Format-Endpoint](https://docs.litellm.ai/docs/anthropic_unified):

146 

147```bash theme={null}

148export ANTHROPIC_BASE_URL=https://litellm-server:4000

149```

150 

151**Vorteile des einheitlichen Endpoints gegenüber Pass-Through-Endpoints:**

152 

153* Lastverteilung

154* Fallbacks

155* Konsistente Unterstützung für Kosten-Tracking und End-Benutzer-Tracking

156 

157#### Anbieter-spezifische Pass-Through-Endpoints (Alternative)

158 

159##### Claude API über LiteLLM

160 

161Verwendung von [Pass-Through-Endpoint](https://docs.litellm.ai/docs/pass_through/anthropic_completion):

162 

163```bash theme={null}

164export ANTHROPIC_BASE_URL=https://litellm-server:4000/anthropic

165```

166 

167##### Amazon Bedrock über LiteLLM

168 

169Verwendung von [Pass-Through-Endpoint](https://docs.litellm.ai/docs/pass_through/bedrock):

170 

171```bash theme={null}

172export ANTHROPIC_BEDROCK_BASE_URL=https://litellm-server:4000/bedrock

173export CLAUDE_CODE_SKIP_BEDROCK_AUTH=1

174export CLAUDE_CODE_USE_BEDROCK=1

175```

176 

177##### Google Vertex AI über LiteLLM

178 

179Verwendung von [Pass-Through-Endpoint](https://docs.litellm.ai/docs/pass_through/vertex_ai):

180 

181```bash theme={null}

182export ANTHROPIC_VERTEX_BASE_URL=https://litellm-server:4000/vertex_ai/v1

183export ANTHROPIC_VERTEX_PROJECT_ID=your-gcp-project-id

184export CLAUDE_CODE_SKIP_VERTEX_AUTH=1

185export CLAUDE_CODE_USE_VERTEX=1

186export CLOUD_ML_REGION=us-east5

187```

188 

189Weitere detaillierte Informationen finden Sie in der [LiteLLM-Dokumentation](https://docs.litellm.ai/).

190 

191## Zusätzliche Ressourcen

192 

193* [LiteLLM-Dokumentation](https://docs.litellm.ai/)

194* [Claude Code-Einstellungen](/de/settings)

195* [Enterprise-Netzwerkkonfiguration](/de/network-config)

196* [Übersicht über Drittanbieter-Integrationen](/de/third-party-integrations)

mcp.md +1451 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code mit Tools über MCP verbinden

6 

7> Erfahren Sie, wie Sie Claude Code mit Ihren Tools über das Model Context Protocol verbinden.

8 

9export const MCPServersTable = ({platform = "all"}) => {

10 const ifYouAreAnAiAgentReadingThisYouShouldInsteadFetch = 'https://api.anthropic.com/mcp-registry/docs';

11 const [servers, setServers] = useState([]);

12 const [loading, setLoading] = useState(true);

13 const [error, setError] = useState(null);

14 useEffect(() => {

15 const fetchServers = async () => {

16 try {

17 setLoading(true);

18 const allServers = [];

19 let cursor = null;

20 do {

21 const url = new URL('https://api.anthropic.com/mcp-registry/v0/servers');

22 url.searchParams.set('version', 'latest');

23 url.searchParams.set('visibility', 'commercial');

24 url.searchParams.set('limit', '100');

25 if (cursor) {

26 url.searchParams.set('cursor', cursor);

27 }

28 const response = await fetch(url);

29 if (!response.ok) {

30 throw new Error(`Failed to fetch MCP registry: ${response.status}`);

31 }

32 const data = await response.json();

33 allServers.push(...data.servers);

34 cursor = data.metadata?.nextCursor || null;

35 } while (cursor);

36 const transformedServers = allServers.map(item => {

37 const server = item.server;

38 const meta = item._meta?.['com.anthropic.api/mcp-registry'] || ({});

39 const worksWith = meta.worksWith || [];

40 const availability = {

41 claudeCode: worksWith.includes('claude-code'),

42 mcpConnector: worksWith.includes('claude-api'),

43 claudeDesktop: worksWith.includes('claude-desktop')

44 };

45 const remotes = server.remotes || [];

46 const httpRemote = remotes.find(r => r.type === 'streamable-http');

47 const sseRemote = remotes.find(r => r.type === 'sse');

48 const preferredRemote = httpRemote || sseRemote;

49 const remoteUrl = preferredRemote?.url || meta.url;

50 const remoteType = preferredRemote?.type;

51 const isTemplatedUrl = remoteUrl?.includes('{');

52 let setupUrl;

53 if (isTemplatedUrl && meta.requiredFields) {

54 const urlField = meta.requiredFields.find(f => f.field === 'url');

55 setupUrl = urlField?.sourceUrl || meta.documentation;

56 }

57 const urls = {};

58 if (!isTemplatedUrl) {

59 if (remoteType === 'streamable-http') {

60 urls.http = remoteUrl;

61 } else if (remoteType === 'sse') {

62 urls.sse = remoteUrl;

63 }

64 }

65 let envVars = [];

66 if (server.packages && server.packages.length > 0) {

67 const npmPackage = server.packages.find(p => p.registryType === 'npm');

68 if (npmPackage) {

69 urls.stdio = `npx -y ${npmPackage.identifier}`;

70 if (npmPackage.environmentVariables) {

71 envVars = npmPackage.environmentVariables;

72 }

73 }

74 }

75 return {

76 name: meta.displayName || server.title || server.name,

77 description: meta.oneLiner || server.description,

78 documentation: meta.documentation,

79 urls: urls,

80 envVars: envVars,

81 availability: availability,

82 customCommands: meta.claudeCodeCopyText ? {

83 claudeCode: meta.claudeCodeCopyText

84 } : undefined,

85 setupUrl: setupUrl

86 };

87 });

88 setServers(transformedServers);

89 setError(null);

90 } catch (err) {

91 setError(err.message);

92 console.error('Error fetching MCP registry:', err);

93 } finally {

94 setLoading(false);

95 }

96 };

97 fetchServers();

98 }, []);

99 const generateClaudeCodeCommand = server => {

100 if (server.customCommands && server.customCommands.claudeCode) {

101 return server.customCommands.claudeCode.replace('--transport streamable-http', '--transport http');

102 }

103 const serverSlug = server.name.toLowerCase().replace(/[^a-z0-9]/g, '-');

104 if (server.urls.http) {

105 return `claude mcp add ${serverSlug} --transport http ${server.urls.http}`;

106 }

107 if (server.urls.sse) {

108 return `claude mcp add ${serverSlug} --transport sse ${server.urls.sse}`;

109 }

110 if (server.urls.stdio) {

111 const envFlags = server.envVars && server.envVars.length > 0 ? server.envVars.map(v => `--env ${v.name}=YOUR_${v.name}`).join(' ') : '';

112 const baseCommand = `claude mcp add ${serverSlug} --transport stdio`;

113 return envFlags ? `${baseCommand} ${envFlags} -- ${server.urls.stdio}` : `${baseCommand} -- ${server.urls.stdio}`;

114 }

115 return null;

116 };

117 if (loading) {

118 return <div>Loading MCP servers...</div>;

119 }

120 if (error) {

121 return <div>Error loading MCP servers: {error}</div>;

122 }

123 const filteredServers = servers.filter(server => {

124 if (platform === "claudeCode") {

125 return server.availability.claudeCode;

126 } else if (platform === "mcpConnector") {

127 return server.availability.mcpConnector;

128 } else if (platform === "claudeDesktop") {

129 return server.availability.claudeDesktop;

130 } else if (platform === "all") {

131 return true;

132 } else {

133 throw new Error(`Unknown platform: ${platform}`);

134 }

135 });

136 return <>

137 <style jsx>{`

138 .cards-container {

139 display: grid;

140 gap: 1rem;

141 margin-bottom: 2rem;

142 }

143 .server-card {

144 border: 1px solid var(--border-color, #e5e7eb);

145 border-radius: 6px;

146 padding: 1rem;

147 }

148 .command-row {

149 display: flex;

150 align-items: center;

151 gap: 0.25rem;

152 }

153 .command-row code {

154 font-size: 0.75rem;

155 overflow-x: auto;

156 }

157 `}</style>

158 

159 <div className="cards-container">

160 {filteredServers.map(server => {

161 const claudeCodeCommand = generateClaudeCodeCommand(server);

162 const mcpUrl = server.urls.http || server.urls.sse;

163 const commandToShow = platform === "claudeCode" ? claudeCodeCommand : mcpUrl;

164 return <div key={server.name} className="server-card">

165 <div>

166 {server.documentation ? <a href={server.documentation}>

167 <strong>{server.name}</strong>

168 </a> : <strong>{server.name}</strong>}

169 </div>

170 

171 <p style={{

172 margin: '0.5rem 0',

173 fontSize: '0.9rem'

174 }}>

175 {server.description}

176 </p>

177 

178 {server.setupUrl && <p style={{

179 margin: '0.25rem 0',

180 fontSize: '0.8rem',

181 fontStyle: 'italic',

182 opacity: 0.7

183 }}>

184 Requires user-specific URL.{' '}

185 <a href={server.setupUrl} style={{

186 textDecoration: 'underline'

187 }}>

188 Get your URL here

189 </a>.

190 </p>}

191 

192 {commandToShow && !server.setupUrl && <>

193 <p style={{

194 display: 'block',

195 fontSize: '0.75rem',

196 fontWeight: 500,

197 minWidth: 'fit-content',

198 marginTop: '0.5rem',

199 marginBottom: 0

200 }}>

201 {platform === "claudeCode" ? "Command" : "URL"}

202 </p>

203 <div className="command-row">

204 <code>

205 {commandToShow}

206 </code>

207 </div>

208 </>}

209 </div>;

210 })}

211 </div>

212 </>;

213};

214 

215Claude Code kann sich über das [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction), einen offenen Standard für KI-Tool-Integrationen, mit Hunderten von externen Tools und Datenquellen verbinden. MCP-Server geben Claude Code Zugriff auf Ihre Tools, Datenbanken und APIs.

216 

217Verbinden Sie einen Server, wenn Sie feststellen, dass Sie Daten aus einem anderen Tool wie einem Issue-Tracker oder einem Überwachungs-Dashboard in den Chat kopieren. Nach der Verbindung kann Claude direkt auf dieses System zugreifen und handeln, anstatt mit dem zu arbeiten, was Sie einfügen.

218 

219## Was Sie mit MCP tun können

220 

221Mit verbundenen MCP-Servern können Sie Claude Code auffordern:

222 

223* **Funktionen aus Issue-Trackern implementieren**: „Füge die in JIRA-Issue ENG-4521 beschriebene Funktion hinzu und erstelle einen PR auf GitHub."

224* **Überwachungsdaten analysieren**: „Überprüfe Sentry und Statsig, um die Nutzung der in ENG-4521 beschriebenen Funktion zu überprüfen."

225* **Datenbanken abfragen**: „Finde E-Mail-Adressen von 10 zufälligen Benutzern, die die Funktion ENG-4521 verwendet haben, basierend auf unserer PostgreSQL-Datenbank."

226* **Designs integrieren**: „Aktualisiere unsere Standard-E-Mail-Vorlage basierend auf den neuen Figma-Designs, die in Slack gepostet wurden"

227* **Workflows automatisieren**: „Erstelle Gmail-Entwürfe, die diese 10 Benutzer zu einer Feedback-Sitzung zur neuen Funktion einladen."

228* **Auf externe Ereignisse reagieren**: Ein MCP-Server kann auch als [Kanal](/de/channels) fungieren, der Nachrichten in Ihre Sitzung pusht, sodass Claude auf Telegram-Nachrichten, Discord-Chats oder Webhook-Ereignisse reagiert, während Sie weg sind.

229 

230## Beliebte MCP-Server

231 

232Hier sind einige häufig verwendete MCP-Server, die Sie mit Claude Code verbinden können:

233 

234<Warning>

235 Verwenden Sie MCP-Server von Drittanbietern auf eigenes Risiko – Anthropic hat

236 die Korrektheit oder Sicherheit aller dieser Server nicht überprüft.

237 Stellen Sie sicher, dass Sie den MCP-Servern vertrauen, die Sie installieren.

238 Seien Sie besonders vorsichtig bei der Verwendung von MCP-Servern, die nicht vertrauenswürdige

239 Inhalte abrufen könnten, da diese Sie dem Risiko von Prompt-Injection aussetzen können.

240</Warning>

241 

242<MCPServersTable platform="claudeCode" />

243 

244<Note>

245 **Benötigen Sie eine spezifische Integration?** [Finden Sie Hunderte weitere MCP-Server auf GitHub](https://github.com/modelcontextprotocol/servers), oder erstellen Sie Ihren eigenen mit dem [MCP SDK](https://modelcontextprotocol.io/quickstart/server).

246</Note>

247 

248## MCP-Server installieren

249 

250MCP-Server können je nach Ihren Anforderungen auf drei verschiedene Arten konfiguriert werden:

251 

252### Option 1: Einen Remote-HTTP-Server hinzufügen

253 

254HTTP-Server sind die empfohlene Option für die Verbindung mit Remote-MCP-Servern. Dies ist das am weitesten unterstützte Transportprotokoll für Cloud-basierte Dienste.

255 

256```bash theme={null}

257# Grundlegende Syntax

258claude mcp add --transport http <name> <url>

259 

260# Echtes Beispiel: Mit Notion verbinden

261claude mcp add --transport http notion https://mcp.notion.com/mcp

262 

263# Beispiel mit Bearer-Token

264claude mcp add --transport http secure-api https://api.example.com/mcp \

265 --header "Authorization: Bearer your-token"

266```

267 

268### Option 2: Einen Remote-SSE-Server hinzufügen

269 

270<Warning>

271 Das SSE-Transportprotokoll (Server-Sent Events) ist veraltet. Verwenden Sie stattdessen HTTP-Server, wo verfügbar.

272</Warning>

273 

274```bash theme={null}

275# Grundlegende Syntax

276claude mcp add --transport sse <name> <url>

277 

278# Echtes Beispiel: Mit Asana verbinden

279claude mcp add --transport sse asana https://mcp.asana.com/sse

280 

281# Beispiel mit Authentifizierungs-Header

282claude mcp add --transport sse private-api https://api.company.com/sse \

283 --header "X-API-Key: your-key-here"

284```

285 

286### Option 3: Einen lokalen Stdio-Server hinzufügen

287 

288Stdio-Server werden als lokale Prozesse auf Ihrem Computer ausgeführt. Sie sind ideal für Tools, die direkten Systemzugriff oder benutzerdefinierte Skripte benötigen.

289 

290```bash theme={null}

291# Grundlegende Syntax

292claude mcp add [options] <name> -- <command> [args...]

293 

294# Echtes Beispiel: Airtable-Server hinzufügen

295claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \

296 -- npx -y airtable-mcp-server

297```

298 

299<Note>

300 **Wichtig: Reihenfolge der Optionen**

301 

302 Alle Optionen (`--transport`, `--env`, `--scope`, `--header`) müssen **vor** dem Servernamen kommen. Der `--` (Doppelstrich) trennt dann den Servernamen von dem Befehl und den Argumenten, die an den MCP-Server übergeben werden.

303 

304 Zum Beispiel:

305 

306 * `claude mcp add --transport stdio myserver -- npx server` → führt `npx server` aus

307 * `claude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080` → führt `python server.py --port 8080` mit `KEY=value` in der Umgebung aus

308 

309 Dies verhindert Konflikte zwischen Claudes Flags und den Flags des Servers.

310</Note>

311 

312### Verwalten Ihrer Server

313 

314Nach der Konfiguration können Sie Ihre MCP-Server mit diesen Befehlen verwalten:

315 

316```bash theme={null}

317# Alle konfigurierten Server auflisten

318claude mcp list

319 

320# Details für einen bestimmten Server abrufen

321claude mcp get github

322 

323# Einen Server entfernen

324claude mcp remove github

325 

326# (innerhalb von Claude Code) Serverstatus überprüfen

327/mcp

328```

329 

330### Dynamische Tool-Updates

331 

332Claude Code unterstützt MCP-`list_changed`-Benachrichtigungen, die es MCP-Servern ermöglichen, ihre verfügbaren Tools, Prompts und Ressourcen dynamisch zu aktualisieren, ohne dass Sie die Verbindung trennen und erneut verbinden müssen. Wenn ein MCP-Server eine `list_changed`-Benachrichtigung sendet, aktualisiert Claude Code automatisch die verfügbaren Funktionen von diesem Server.

333 

334### Automatische Wiederverbindung

335 

336Wenn ein HTTP- oder SSE-Server während einer Sitzung die Verbindung trennt, verbindet sich Claude Code automatisch mit exponentiellem Backoff wieder: bis zu fünf Versuche, beginnend mit einer Verzögerung von einer Sekunde und sich jedes Mal verdoppelnd. Der Server wird als ausstehend in `/mcp` angezeigt, während die Wiederverbindung läuft. Nach fünf fehlgeschlagenen Versuchen wird der Server als fehlgeschlagen markiert und Sie können ihn manuell von `/mcp` aus erneut versuchen. Stdio-Server sind lokale Prozesse und werden nicht automatisch wiederverbunden.

337 

338Das gleiche Backoff gilt, wenn ein HTTP- oder SSE-Server beim Start seine anfängliche Verbindung nicht herstellt. Ab v2.1.121 versucht Claude Code die anfängliche Verbindung bis zu dreimal bei vorübergehenden Fehlern wie einer 5xx-Antwort, einer Verbindungsverweigerung oder einem Timeout erneut, markiert den Server dann als fehlgeschlagen, wenn er immer noch keine Verbindung herstellen kann. Authentifizierungs- und Not-Found-Fehler werden nicht erneut versucht, da sie eine Konfigurationsänderung erfordern, um behoben zu werden.

339 

340### Push-Nachrichten mit Kanälen

341 

342Ein MCP-Server kann auch Nachrichten direkt in Ihre Sitzung pushen, sodass Claude auf externe Ereignisse wie CI-Ergebnisse, Überwachungswarnungen oder Chat-Nachrichten reagieren kann. Um dies zu aktivieren, deklariert Ihr Server die Funktion `claude/channel` und Sie aktivieren sie mit dem Flag `--channels` beim Start. Siehe [Kanäle](/de/channels), um einen offiziell unterstützten Kanal zu verwenden, oder [Kanäle-Referenz](/de/channels-reference), um Ihren eigenen zu erstellen.

343 

344<Tip>

345 Tipps:

346 

347 * Verwenden Sie das Flag `--scope`, um anzugeben, wo die Konfiguration gespeichert wird:

348 * `local` (Standard): Nur für Sie im aktuellen Projekt verfügbar (hieß in älteren Versionen `project`)

349 * `project`: Geteilt mit allen im Projekt über die Datei `.mcp.json`

350 * `user`: Für Sie über alle Projekte hinweg verfügbar (hieß in älteren Versionen `global`)

351 * Legen Sie Umgebungsvariablen mit `--env`-Flags fest (zum Beispiel `--env KEY=value`)

352 * Konfigurieren Sie das Startup-Timeout des MCP-Servers mit der Umgebungsvariablen MCP\_TIMEOUT (zum Beispiel `MCP_TIMEOUT=10000 claude` setzt ein 10-Sekunden-Timeout)

353 * Claude Code zeigt eine Warnung an, wenn die MCP-Tool-Ausgabe 10.000 Token überschreitet. Um dieses Limit zu erhöhen, setzen Sie die Umgebungsvariable `MAX_MCP_OUTPUT_TOKENS` (zum Beispiel `MAX_MCP_OUTPUT_TOKENS=50000`)

354 * Verwenden Sie `/mcp`, um sich bei Remote-Servern zu authentifizieren, die OAuth 2.0-Authentifizierung erfordern

355</Tip>

356 

357### Von Plugins bereitgestellte MCP-Server

358 

359[Plugins](/de/plugins) können MCP-Server bündeln und automatisch Tools und Integrationen bereitstellen, wenn das Plugin aktiviert ist. Plugin-MCP-Server funktionieren identisch mit benutzerkonfigurierten Servern.

360 

361**Wie Plugin-MCP-Server funktionieren**:

362 

363* Plugins definieren MCP-Server in `.mcp.json` im Plugin-Root oder inline in `plugin.json`

364* Wenn ein Plugin aktiviert ist, starten seine MCP-Server automatisch

365* Plugin-MCP-Tools erscheinen neben manuell konfigurierten MCP-Tools

366* Plugin-Server werden durch die Plugin-Installation verwaltet (nicht durch `/mcp`-Befehle)

367 

368**Beispiel-Plugin-MCP-Konfiguration**:

369 

370In `.mcp.json` im Plugin-Root:

371 

372```json theme={null}

373{

374 "mcpServers": {

375 "database-tools": {

376 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

377 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],

378 "env": {

379 "DB_URL": "${DB_URL}"

380 }

381 }

382 }

383}

384```

385 

386Oder inline in `plugin.json`:

387 

388```json theme={null}

389{

390 "name": "my-plugin",

391 "mcpServers": {

392 "plugin-api": {

393 "command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",

394 "args": ["--port", "8080"]

395 }

396 }

397}

398```

399 

400**Plugin-MCP-Funktionen**:

401 

402* **Automatischer Lebenszyklus**: Bei Sitzungsstart verbinden sich Server für aktivierte Plugins automatisch. Wenn Sie ein Plugin während einer Sitzung aktivieren oder deaktivieren, führen Sie `/reload-plugins` aus, um seine MCP-Server zu verbinden oder zu trennen

403* **Umgebungsvariablen**: Verwenden Sie `${CLAUDE_PLUGIN_ROOT}` für gebündelte Plugin-Dateien und `${CLAUDE_PLUGIN_DATA}` für [persistente Daten](/de/plugins-reference#persistent-data-directory), die Plugin-Updates überstehen

404* **Zugriff auf Benutzerumgebung**: Zugriff auf die gleichen Umgebungsvariablen wie manuell konfigurierte Server

405* **Mehrere Transporttypen**: Unterstützung für Stdio-, SSE- und HTTP-Transporte (die Transportunterstützung kann je nach Server variieren)

406 

407**Anzeigen von Plugin-MCP-Servern**:

408 

409```bash theme={null}

410# Innerhalb von Claude Code alle MCP-Server einschließlich Plugin-Server anzeigen

411/mcp

412```

413 

414Plugin-Server erscheinen in der Liste mit Indikatoren, die zeigen, dass sie von Plugins stammen.

415 

416**Vorteile von Plugin-MCP-Servern**:

417 

418* **Gebündelte Verteilung**: Tools und Server zusammen verpackt

419* **Automatische Einrichtung**: Keine manuelle MCP-Konfiguration erforderlich

420* **Team-Konsistenz**: Alle erhalten die gleichen Tools, wenn das Plugin installiert ist

421 

422Siehe die [Plugin-Komponenten-Referenz](/de/plugins-reference#mcp-servers) für Details zum Bündeln von MCP-Servern mit Plugins.

423 

424## MCP-Installationsbereiche

425 

426MCP-Server können auf drei verschiedenen Bereichsebenen konfiguriert werden. Der Bereich, den Sie wählen, steuert, in welchen Projekten der Server geladen wird und ob die Konfiguration mit Ihrem Team geteilt wird.

427 

428| Bereich | Wird geladen in | Mit Team geteilt | Gespeichert in |

429| ------------------------- | --------------------- | -------------------------- | --------------------------- |

430| [Lokal](#local-scope) | Nur aktuelles Projekt | Nein | `~/.claude.json` |

431| [Projekt](#project-scope) | Nur aktuelles Projekt | Ja, über Versionskontrolle | `.mcp.json` im Projekt-Root |

432| [Benutzer](#user-scope) | Alle Ihre Projekte | Nein | `~/.claude.json` |

433 

434### Lokaler Bereich

435 

436Der lokale Bereich ist der Standard. Ein lokal begrenzter Server wird nur in dem Projekt geladen, in dem Sie ihn hinzugefügt haben, und bleibt privat für Sie. Claude Code speichert ihn in `~/.claude.json` unter dem Pfad dieses Projekts, daher wird derselbe Server nicht in Ihren anderen Projekten angezeigt. Verwenden Sie den lokalen Bereich für persönliche Entwicklungsserver, experimentelle Konfigurationen oder Server mit Anmeldedaten, die Sie nicht in der Versionskontrolle haben möchten.

437 

438<Note>

439 Der Begriff „lokaler Bereich" für MCP-Server unterscheidet sich von allgemeinen lokalen Einstellungen. Lokal begrenzte MCP-Server werden in `~/.claude.json` (Ihr Home-Verzeichnis) gespeichert, während allgemeine lokale Einstellungen `.claude/settings.local.json` (im Projektverzeichnis) verwenden. Siehe [Einstellungen](/de/settings#settings-files) für Details zu Einstellungsdatei-Speicherorten.

440</Note>

441 

442```bash theme={null}

443# Einen lokal begrenzten Server hinzufügen (Standard)

444claude mcp add --transport http stripe https://mcp.stripe.com

445 

446# Lokalen Bereich explizit angeben

447claude mcp add --transport http stripe --scope local https://mcp.stripe.com

448```

449 

450Der Befehl schreibt den Server in den Eintrag für Ihr aktuelles Projekt in `~/.claude.json`. Das folgende Beispiel zeigt das Ergebnis, wenn Sie ihn von `/path/to/your/project` aus ausführen:

451 

452```json theme={null}

453{

454 "projects": {

455 "/path/to/your/project": {

456 "mcpServers": {

457 "stripe": {

458 "type": "http",

459 "url": "https://mcp.stripe.com"

460 }

461 }

462 }

463 }

464}

465```

466 

467### Projektbereich

468 

469Projektbegrenzte Server ermöglichen Teamzusammenarbeit durch das Speichern von Konfigurationen in einer `.mcp.json`-Datei im Root-Verzeichnis Ihres Projekts. Diese Datei ist dazu bestimmt, in die Versionskontrolle eingecheckt zu werden, um sicherzustellen, dass alle Teammitglieder Zugriff auf die gleichen MCP-Tools und -Dienste haben. Wenn Sie einen projektbegrenzten Server hinzufügen, erstellt oder aktualisiert Claude Code automatisch diese Datei mit der entsprechenden Konfigurationsstruktur.

470 

471```bash theme={null}

472# Einen projektbegrenzten Server hinzufügen

473claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp

474```

475 

476Die resultierende `.mcp.json`-Datei folgt einem standardisierten Format:

477 

478```json theme={null}

479{

480 "mcpServers": {

481 "shared-server": {

482 "command": "/path/to/server",

483 "args": [],

484 "env": {}

485 }

486 }

487}

488```

489 

490Aus Sicherheitsgründen fordert Claude Code eine Genehmigung an, bevor projektbegrenzte Server aus `.mcp.json`-Dateien verwendet werden. Wenn Sie diese Genehmigungswahlmöglichkeiten zurücksetzen müssen, verwenden Sie den Befehl `claude mcp reset-project-choices`.

491 

492### Benutzerbereich

493 

494Benutzerbegrenzte Server werden in `~/.claude.json` gespeichert und bieten projektübergreifende Zugänglichkeit, wodurch sie über alle Projekte auf Ihrem Computer verfügbar sind und gleichzeitig privat für Ihr Benutzerkonto bleiben. Dieser Bereich funktioniert gut für persönliche Utility-Server, Entwicklungstools oder Dienste, die Sie häufig über verschiedene Projekte hinweg verwenden.

495 

496```bash theme={null}

497# Einen Benutzer-Server hinzufügen

498claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic

499```

500 

501### Bereichshierarchie und Vorrang

502 

503Wenn derselbe Server auf mehreren Bereichen definiert ist, verbindet sich Claude Code einmal damit und verwendet die Definition aus der höchsten Vorrangsquelle:

504 

5051. Lokaler Bereich

5062. Projektbereich

5073. Benutzerbereich

5084. [Von Plugins bereitgestellte Server](/de/plugins)

5095. [Claude.ai-Connectoren](#use-mcp-servers-from-claude-ai)

510 

511Die drei Bereiche stimmen Duplikate nach Name ab. Plugins und Connectoren stimmen nach Endpunkt ab, daher wird einer, der auf die gleiche URL oder den gleichen Befehl wie ein Server oben verweist, als Duplikat behandelt.

512 

513### Umgebungsvariablen-Erweiterung in `.mcp.json`

514 

515Claude Code unterstützt die Umgebungsvariablen-Erweiterung in `.mcp.json`-Dateien, die es Teams ermöglicht, Konfigurationen zu teilen und gleichzeitig Flexibilität für maschinenspezifische Pfade und vertrauliche Werte wie API-Schlüssel zu bewahren.

516 

517**Unterstützte Syntax:**

518 

519* `${VAR}` - Erweitert sich zum Wert der Umgebungsvariablen `VAR`

520* `${VAR:-default}` - Erweitert sich zu `VAR`, wenn gesetzt, andernfalls wird `default` verwendet

521 

522**Erweiterungsorte:**

523Umgebungsvariablen können erweitert werden in:

524 

525* `command` - Der Server-Ausführungspfad

526* `args` - Befehlszeilenargumente

527* `env` - Umgebungsvariablen, die an den Server übergeben werden

528* `url` - Für HTTP-Server-Typen

529* `headers` - Für HTTP-Server-Authentifizierung

530 

531**Beispiel mit Variablenerweiterung:**

532 

533```json theme={null}

534{

535 "mcpServers": {

536 "api-server": {

537 "type": "http",

538 "url": "${API_BASE_URL:-https://api.example.com}/mcp",

539 "headers": {

540 "Authorization": "Bearer ${API_KEY}"

541 }

542 }

543 }

544}

545```

546 

547Wenn eine erforderliche Umgebungsvariable nicht gesetzt ist und keinen Standardwert hat, kann Claude Code die Konfiguration nicht analysieren.

548 

549## Praktische Beispiele

550 

551{/* ### Beispiel: Browser-Tests mit Playwright automatisieren

552 

553```bash

554claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest

555```

556 

557Dann schreiben und führen Sie Browser-Tests aus:

558 

559```text

560Test if the login flow works with test@example.com

561```

562```text

563Take a screenshot of the checkout page on mobile

564```

565```text

566Verify that the search feature returns results

567``` */}

568 

569### Beispiel: Fehler mit Sentry überwachen

570 

571```bash theme={null}

572claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

573```

574 

575Authentifizieren Sie sich mit Ihrem Sentry-Konto:

576 

577```text theme={null}

578/mcp

579```

580 

581Debuggen Sie dann Produktionsprobleme:

582 

583```text theme={null}

584What are the most common errors in the last 24 hours?

585```

586 

587```text theme={null}

588Show me the stack trace for error ID abc123

589```

590 

591```text theme={null}

592Which deployment introduced these new errors?

593```

594 

595### Beispiel: Mit GitHub für Code-Reviews verbinden

596 

597GitHubs Remote-MCP-Server authentifiziert sich mit einem GitHub-Personal-Access-Token, der als Header übergeben wird. Um einen zu erhalten, öffnen Sie Ihre [GitHub-Token-Einstellungen](https://github.com/settings/personal-access-tokens), generieren Sie ein neues feingranulares Token mit Zugriff auf die Repositories, mit denen Claude arbeiten soll, und fügen Sie dann den Server hinzu:

598 

599```bash theme={null}

600claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \

601 --header "Authorization: Bearer YOUR_GITHUB_PAT"

602```

603 

604Arbeiten Sie dann mit GitHub:

605 

606```text theme={null}

607Review PR #456 and suggest improvements

608```

609 

610```text theme={null}

611Create a new issue for the bug we just found

612```

613 

614```text theme={null}

615Show me all open PRs assigned to me

616```

617 

618### Beispiel: Ihre PostgreSQL-Datenbank abfragen

619 

620```bash theme={null}

621claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \

622 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"

623```

624 

625Fragen Sie dann Ihre Datenbank natürlich ab:

626 

627```text theme={null}

628What's our total revenue this month?

629```

630 

631```text theme={null}

632Show me the schema for the orders table

633```

634 

635```text theme={null}

636Find customers who haven't made a purchase in 90 days

637```

638 

639## Mit Remote-MCP-Servern authentifizieren

640 

641Viele Cloud-basierte MCP-Server erfordern Authentifizierung. Claude Code unterstützt OAuth 2.0 für sichere Verbindungen.

642 

643<Steps>

644 <Step title="Fügen Sie den Server hinzu, der Authentifizierung erfordert">

645 Zum Beispiel:

646 

647 ```bash theme={null}

648 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

649 ```

650 </Step>

651 

652 <Step title="Verwenden Sie den /mcp-Befehl innerhalb von Claude Code">

653 In Claude Code verwenden Sie den Befehl:

654 

655 ```text theme={null}

656 /mcp

657 ```

658 

659 Folgen Sie dann den Schritten in Ihrem Browser, um sich anzumelden.

660 </Step>

661</Steps>

662 

663<Tip>

664 Tipps:

665 

666 * Authentifizierungstoken werden sicher gespeichert und automatisch aktualisiert

667 * Verwenden Sie „Clear authentication" im `/mcp`-Menü, um den Zugriff zu widerrufen

668 * Wenn Ihr Browser nicht automatisch geöffnet wird, kopieren Sie die bereitgestellte URL und öffnen Sie sie manuell

669 * Wenn die Browser-Umleitung nach der Authentifizierung mit einem Verbindungsfehler fehlschlägt, fügen Sie die vollständige Callback-URL aus der Adressleiste Ihres Browsers in die URL-Eingabeaufforderung ein, die in Claude Code angezeigt wird

670 * OAuth-Authentifizierung funktioniert mit HTTP-Servern

671</Tip>

672 

673### Verwenden Sie einen festen OAuth-Callback-Port

674 

675Einige MCP-Server erfordern einen spezifischen Redirect-URI, der im Voraus registriert ist. Standardmäßig wählt Claude Code einen zufällig verfügbaren Port für den OAuth-Callback. Verwenden Sie `--callback-port`, um den Port zu fixieren, damit er einem vorregistrierten Redirect-URI der Form `http://localhost:PORT/callback` entspricht.

676 

677Sie können `--callback-port` allein (mit dynamischer Client-Registrierung) oder zusammen mit `--client-id` (mit vorkonfigurierten Anmeldedaten) verwenden.

678 

679```bash theme={null}

680# Fester Callback-Port mit dynamischer Client-Registrierung

681claude mcp add --transport http \

682 --callback-port 8080 \

683 my-server https://mcp.example.com/mcp

684```

685 

686### Verwenden Sie vorkonfigurierte OAuth-Anmeldedaten

687 

688Einige MCP-Server unterstützen keine automatische OAuth-Einrichtung über Dynamic Client Registration. Wenn Sie einen Fehler wie „Incompatible auth server: does not support dynamic client registration" sehen, erfordert der Server vorkonfigurierte Anmeldedaten. Claude Code unterstützt auch Server, die ein Client ID Metadata Document (CIMD) anstelle von Dynamic Client Registration verwenden, und erkennt diese automatisch. Wenn die automatische Erkennung fehlschlägt, registrieren Sie zunächst eine OAuth-App über das Entwicklerportal des Servers und geben Sie dann die Anmeldedaten beim Hinzufügen des Servers an.

689 

690<Steps>

691 <Step title="Registrieren Sie eine OAuth-App beim Server">

692 Erstellen Sie eine App über das Entwicklerportal des Servers und notieren Sie sich Ihre Client-ID und Ihren Client-Secret.

693 

694 Viele Server erfordern auch einen Redirect-URI. Wenn ja, wählen Sie einen Port und registrieren Sie einen Redirect-URI im Format `http://localhost:PORT/callback`. Verwenden Sie denselben Port mit `--callback-port` im nächsten Schritt.

695 </Step>

696 

697 <Step title="Fügen Sie den Server mit Ihren Anmeldedaten hinzu">

698 Wählen Sie eine der folgenden Methoden. Der für `--callback-port` verwendete Port kann ein beliebiger verfügbarer Port sein. Er muss nur dem Redirect-URI entsprechen, den Sie im vorherigen Schritt registriert haben.

699 

700 <Tabs>

701 <Tab title="claude mcp add">

702 Verwenden Sie `--client-id`, um die Client-ID Ihrer App zu übergeben. Das Flag `--client-secret` fordert das Secret mit maskierter Eingabe an:

703 

704 ```bash theme={null}

705 claude mcp add --transport http \

706 --client-id your-client-id --client-secret --callback-port 8080 \

707 my-server https://mcp.example.com/mcp

708 ```

709 </Tab>

710 

711 <Tab title="claude mcp add-json">

712 Fügen Sie das Objekt `oauth` in die JSON-Konfiguration ein und übergeben Sie `--client-secret` als separates Flag:

713 

714 ```bash theme={null}

715 claude mcp add-json my-server \

716 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' \

717 --client-secret

718 ```

719 </Tab>

720 

721 <Tab title="claude mcp add-json (nur Callback-Port)">

722 Verwenden Sie `--callback-port` ohne Client-ID, um den Port zu fixieren und gleichzeitig die dynamische Client-Registrierung zu verwenden:

723 

724 ```bash theme={null}

725 claude mcp add-json my-server \

726 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"callbackPort":8080}}'

727 ```

728 </Tab>

729 

730 <Tab title="CI / Umgebungsvariable">

731 Legen Sie das Secret über eine Umgebungsvariable fest, um die interaktive Eingabeaufforderung zu überspringen:

732 

733 ```bash theme={null}

734 MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \

735 --client-id your-client-id --client-secret --callback-port 8080 \

736 my-server https://mcp.example.com/mcp

737 ```

738 </Tab>

739 </Tabs>

740 </Step>

741 

742 <Step title="Authentifizieren Sie sich in Claude Code">

743 Führen Sie `/mcp` in Claude Code aus und folgen Sie dem Browser-Login-Ablauf.

744 </Step>

745</Steps>

746 

747<Tip>

748 Tipps:

749 

750 * Das Client-Secret wird sicher in Ihrem System-Keychain (macOS) oder einer Anmeldedatei gespeichert, nicht in Ihrer Konfiguration

751 * Wenn der Server einen öffentlichen OAuth-Client ohne Secret verwendet, verwenden Sie nur `--client-id` ohne `--client-secret`

752 * `--callback-port` kann mit oder ohne `--client-id` verwendet werden

753 * Diese Flags gelten nur für HTTP- und SSE-Transporte. Sie haben keine Auswirkung auf Stdio-Server

754 * Verwenden Sie `claude mcp get <name>`, um zu überprüfen, dass OAuth-Anmeldedaten für einen Server konfiguriert sind

755</Tip>

756 

757### Überschreiben Sie die OAuth-Metadaten-Erkennung

758 

759Verweisen Sie Claude Code auf eine spezifische OAuth-Autorisierungsserver-Metadaten-URL, um die Standard-Erkennungskette zu umgehen. Legen Sie `authServerMetadataUrl` fest, wenn die Standard-Endpunkte des MCP-Servers Fehler zurückgeben, oder wenn Sie die Erkennung durch einen internen Proxy leiten möchten. Standardmäßig überprüft Claude Code zunächst RFC 9728 Protected Resource Metadata unter `/.well-known/oauth-protected-resource` und fällt dann auf RFC 8414 Authorization Server Metadata unter `/.well-known/oauth-authorization-server` zurück.

760 

761Legen Sie `authServerMetadataUrl` im Objekt `oauth` der Konfiguration Ihres Servers in `.mcp.json` fest:

762 

763```json theme={null}

764{

765 "mcpServers": {

766 "my-server": {

767 "type": "http",

768 "url": "https://mcp.example.com/mcp",

769 "oauth": {

770 "authServerMetadataUrl": "https://auth.example.com/.well-known/openid-configuration"

771 }

772 }

773 }

774}

775```

776 

777Die URL muss `https://` verwenden. `authServerMetadataUrl` erfordert Claude Code v2.1.64 oder später. Die `scopes_supported` der Metadaten-URL überschreiben die Bereiche, die der Upstream-Server bewirbt.

778 

779### Beschränken Sie OAuth-Bereiche

780 

781Legen Sie `oauth.scopes` fest, um die Bereiche zu fixieren, die Claude Code während des Autorisierungsflusses anfordert. Dies ist die unterstützte Methode, um einen MCP-Server auf eine von Ihrem Sicherheitsteam genehmigte Teilmenge zu beschränken, wenn der Upstream-Autorisierungsserver mehr Bereiche bewirbt, als Sie gewähren möchten. Der Wert ist eine einzelne durch Leerzeichen getrennte Zeichenkette, die dem `scope`-Parameter-Format in RFC 6749 §3.3 entspricht.

782 

783```json theme={null}

784{

785 "mcpServers": {

786 "slack": {

787 "type": "http",

788 "url": "https://mcp.slack.com/mcp",

789 "oauth": {

790 "scopes": "channels:read chat:write search:read"

791 }

792 }

793 }

794}

795```

796 

797`oauth.scopes` hat Vorrang vor sowohl `authServerMetadataUrl` als auch den Bereichen, die der Server unter `/.well-known` entdeckt. Lassen Sie es ungesetzt, damit der MCP-Server den angeforderten Bereichssatz bestimmt.

798 

799Wenn der Autorisierungsserver `offline_access` in `scopes_supported` bewirbt, fügt Claude Code es zu den fixierten Bereichen hinzu, damit das Zugriffs-Token ohne neue Browser-Anmeldung aktualisiert werden kann.

800 

801Wenn der Server später einen 403 `insufficient_scope` für einen Tool-Aufruf zurückgibt, authentifiziert sich Claude Code mit den gleichen fixierten Bereichen erneut. Erweitern Sie `oauth.scopes`, wenn ein Tool, das Sie benötigen, einen Bereich außerhalb der Fixierung erfordert.

802 

803### Verwenden Sie dynamische Header für benutzerdefinierte Authentifizierung

804 

805Wenn Ihr MCP-Server ein anderes Authentifizierungsschema verwendet als OAuth (wie Kerberos, kurzlebige Token oder ein internes SSO), verwenden Sie `headersHelper`, um Request-Header zur Verbindungszeit zu generieren. Claude Code führt den Befehl aus und fügt seine Ausgabe in die Verbindungs-Header ein.

806 

807```json theme={null}

808{

809 "mcpServers": {

810 "internal-api": {

811 "type": "http",

812 "url": "https://mcp.internal.example.com",

813 "headersHelper": "/opt/bin/get-mcp-auth-headers.sh"

814 }

815 }

816}

817```

818 

819Der Befehl kann auch inline sein:

820 

821```json theme={null}

822{

823 "mcpServers": {

824 "internal-api": {

825 "type": "http",

826 "url": "https://mcp.internal.example.com",

827 "headersHelper": "echo '{\"Authorization\": \"Bearer '\"$(get-token)\"'\"}'"

828 }

829 }

830}

831```

832 

833**Anforderungen:**

834 

835* Der Befehl muss ein JSON-Objekt mit String-Schlüssel-Wert-Paaren auf stdout schreiben

836* Der Befehl wird in einer Shell mit einem 10-Sekunden-Timeout ausgeführt

837* Dynamische Header überschreiben alle statischen `headers` mit dem gleichen Namen

838 

839Der Helper wird bei jeder Verbindung neu ausgeführt (beim Sitzungsstart und bei Wiederverbindung). Es gibt kein Caching, daher ist Ihr Skript für jede Token-Wiederverwendung verantwortlich.

840 

841Claude Code setzt diese Umgebungsvariablen beim Ausführen des Helpers:

842 

843| Variable | Wert |

844| :---------------------------- | :----------------------- |

845| `CLAUDE_CODE_MCP_SERVER_NAME` | der Name des MCP-Servers |

846| `CLAUDE_CODE_MCP_SERVER_URL` | die URL des MCP-Servers |

847 

848Verwenden Sie diese, um ein einzelnes Helper-Skript zu schreiben, das mehrere MCP-Server bedient.

849 

850<Note>

851 `headersHelper` führt beliebige Shell-Befehle aus. Wenn es auf Projekt- oder lokalem Bereich definiert ist, wird es nur nach Ihrer Zustimmung zum Workspace-Trust-Dialog ausgeführt.

852</Note>

853 

854## MCP-Server aus JSON-Konfiguration hinzufügen

855 

856Wenn Sie eine JSON-Konfiguration für einen MCP-Server haben, können Sie sie direkt hinzufügen:

857 

858<Steps>

859 <Step title="Fügen Sie einen MCP-Server aus JSON hinzu">

860 ```bash theme={null}

861 # Grundlegende Syntax

862 claude mcp add-json <name> '<json>'

863 

864 # Beispiel: Hinzufügen eines HTTP-Servers mit JSON-Konfiguration

865 claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'

866 

867 # Beispiel: Hinzufügen eines Stdio-Servers mit JSON-Konfiguration

868 claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'

869 

870 # Beispiel: Hinzufügen eines HTTP-Servers mit vorkonfigurierten OAuth-Anmeldedaten

871 claude mcp add-json my-server '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' --client-secret

872 ```

873 </Step>

874 

875 <Step title="Überprüfen Sie, dass der Server hinzugefügt wurde">

876 ```bash theme={null}

877 claude mcp get weather-api

878 ```

879 </Step>

880</Steps>

881 

882<Tip>

883 Tipps:

884 

885 * Stellen Sie sicher, dass das JSON in Ihrer Shell ordnungsgemäß escaped ist

886 * Das JSON muss dem MCP-Server-Konfigurationsschema entsprechen

887 * Sie können `--scope user` verwenden, um den Server zu Ihrer Benutzerkonfiguration statt zur projektspezifischen hinzuzufügen

888</Tip>

889 

890## MCP-Server aus Claude Desktop importieren

891 

892Wenn Sie bereits MCP-Server in Claude Desktop konfiguriert haben, können Sie diese importieren:

893 

894<Steps>

895 <Step title="Importieren Sie Server aus Claude Desktop">

896 ```bash theme={null}

897 # Grundlegende Syntax

898 claude mcp add-from-claude-desktop

899 ```

900 </Step>

901 

902 <Step title="Wählen Sie aus, welche Server importiert werden sollen">

903 Nach dem Ausführen des Befehls wird ein interaktives Dialogfeld angezeigt, in dem Sie auswählen können, welche Server Sie importieren möchten.

904 </Step>

905 

906 <Step title="Überprüfen Sie, dass die Server importiert wurden">

907 ```bash theme={null}

908 claude mcp list

909 ```

910 </Step>

911</Steps>

912 

913<Tip>

914 Tipps:

915 

916 * Diese Funktion funktioniert nur auf macOS und Windows Subsystem for Linux (WSL)

917 * Sie liest die Claude Desktop-Konfigurationsdatei von ihrem Standardort auf diesen Plattformen

918 * Verwenden Sie das Flag `--scope user`, um Server zu Ihrer Benutzerkonfiguration hinzuzufügen

919 * Importierte Server haben die gleichen Namen wie in Claude Desktop

920 * Wenn Server mit den gleichen Namen bereits vorhanden sind, erhalten sie ein numerisches Suffix (zum Beispiel `server_1`)

921</Tip>

922 

923## MCP-Server von Claude.ai verwenden

924 

925Wenn Sie sich in Claude Code mit einem [Claude.ai](https://claude.ai)-Konto angemeldet haben, sind MCP-Server, die Sie in Claude.ai hinzugefügt haben, automatisch in Claude Code verfügbar:

926 

927<Steps>

928 <Step title="Konfigurieren Sie MCP-Server in Claude.ai">

929 Fügen Sie Server unter [claude.ai/customize/connectors](https://claude.ai/customize/connectors) hinzu. Bei Team- und Enterprise-Plänen können nur Administratoren Server hinzufügen.

930 </Step>

931 

932 <Step title="Authentifizieren Sie den MCP-Server">

933 Führen Sie alle erforderlichen Authentifizierungsschritte in Claude.ai durch.

934 </Step>

935 

936 <Step title="Zeigen Sie Server in Claude Code an und verwalten Sie sie">

937 In Claude Code verwenden Sie den Befehl:

938 

939 ```text theme={null}

940 /mcp

941 ```

942 

943 Claude.ai-Server erscheinen in der Liste mit Indikatoren, die zeigen, dass sie von Claude.ai stammen.

944 </Step>

945</Steps>

946 

947Um Claude.ai-MCP-Server in Claude Code zu deaktivieren, setzen Sie die Umgebungsvariable `ENABLE_CLAUDEAI_MCP_SERVERS` auf `false`:

948 

949```bash theme={null}

950ENABLE_CLAUDEAI_MCP_SERVERS=false claude

951```

952 

953## Claude Code als MCP-Server verwenden

954 

955Sie können Claude Code selbst als MCP-Server verwenden, mit dem sich andere Anwendungen verbinden können:

956 

957```bash theme={null}

958# Starten Sie Claude als Stdio-MCP-Server

959claude mcp serve

960```

961 

962Sie können dies in Claude Desktop verwenden, indem Sie diese Konfiguration zu claude\_desktop\_config.json hinzufügen:

963 

964```json theme={null}

965{

966 "mcpServers": {

967 "claude-code": {

968 "type": "stdio",

969 "command": "claude",

970 "args": ["mcp", "serve"],

971 "env": {}

972 }

973 }

974}

975```

976 

977<Warning>

978 **Konfigurieren Sie den Pfad der ausführbaren Datei**: Das Feld `command` muss auf die Claude Code-Ausführungsdatei verweisen. Wenn der Befehl `claude` nicht in Ihrem System-PATH vorhanden ist, müssen Sie den vollständigen Pfad zur ausführbaren Datei angeben.

979 

980 Um den vollständigen Pfad zu finden:

981 

982 ```bash theme={null}

983 which claude

984 ```

985 

986 Verwenden Sie dann den vollständigen Pfad in Ihrer Konfiguration:

987 

988 ```json theme={null}

989 {

990 "mcpServers": {

991 "claude-code": {

992 "type": "stdio",

993 "command": "/full/path/to/claude",

994 "args": ["mcp", "serve"],

995 "env": {}

996 }

997 }

998 }

999 ```

1000 

1001 Ohne den korrekten Pfad der ausführbaren Datei treten Fehler wie `spawn claude ENOENT` auf.

1002</Warning>

1003 

1004<Tip>

1005 Tipps:

1006 

1007 * Der Server bietet Zugriff auf Claudes Tools wie View, Edit, LS usw.

1008 * In Claude Desktop versuchen Sie, Claude aufzufordern, Dateien in einem Verzeichnis zu lesen, Änderungen vorzunehmen und mehr.

1009 * Beachten Sie, dass dieser MCP-Server nur Claudes Tools für Ihren MCP-Client verfügbar macht, daher ist Ihr eigener Client dafür verantwortlich, Benutzerbestätigung für einzelne Tool-Aufrufe zu implementieren.

1010</Tip>

1011 

1012## MCP-Ausgabelimits und Warnungen

1013 

1014Wenn MCP-Tools große Ausgaben erzeugen, hilft Claude Code bei der Verwaltung der Token-Nutzung, um zu verhindern, dass Ihr Gesprächskontext überwältigt wird:

1015 

1016* **Ausgabe-Warnungsschwelle**: Claude Code zeigt eine Warnung an, wenn eine MCP-Tool-Ausgabe 10.000 Token überschreitet

1017* **Konfigurierbares Limit**: Sie können die maximale zulässige MCP-Ausgabe-Token mit der Umgebungsvariablen `MAX_MCP_OUTPUT_TOKENS` anpassen

1018* **Standardlimit**: Das Standardmaximum beträgt 25.000 Token

1019* **Bereich**: Die Umgebungsvariable gilt für Tools, die kein eigenes Limit deklarieren. Tools, die [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool) setzen, verwenden diesen Wert stattdessen für Textinhalte, unabhängig davon, auf was `MAX_MCP_OUTPUT_TOKENS` gesetzt ist. Tools, die Bilddaten zurückgeben, unterliegen immer noch `MAX_MCP_OUTPUT_TOKENS`

1020 

1021Um das Limit für Tools zu erhöhen, die große Ausgaben erzeugen:

1022 

1023```bash theme={null}

1024export MAX_MCP_OUTPUT_TOKENS=50000

1025claude

1026```

1027 

1028Dies ist besonders nützlich bei der Arbeit mit MCP-Servern, die:

1029 

1030* Große Datensätze oder Datenbanken abfragen

1031* Detaillierte Berichte oder Dokumentation generieren

1032* Umfangreiche Protokolldateien oder Debugging-Informationen verarbeiten

1033 

1034### Erhöhen Sie das Limit für ein bestimmtes Tool

1035 

1036Wenn Sie einen MCP-Server erstellen, können Sie einzelnen Tools ermöglichen, Ergebnisse größer als die Standard-Persist-to-Disk-Schwelle zurückzugeben, indem Sie `_meta["anthropic/maxResultSizeChars"]` in der Tool-Antwort des `tools/list` einstellen. Claude Code erhöht die Schwelle dieses Tools auf den annotierten Wert, bis zu einer harten Obergrenze von 500.000 Zeichen.

1037 

1038Dies ist nützlich für Tools, die inhärent große, aber notwendige Ausgaben zurückgeben, wie Datenbankschemas oder vollständige Dateibäume. Ohne die Anmerkung werden Ergebnisse, die die Standard-Schwelle überschreiten, auf die Festplatte persistiert und durch eine Dateireferenz im Gespräch ersetzt.

1039 

1040```json theme={null}

1041{

1042 "name": "get_schema",

1043 "description": "Returns the full database schema",

1044 "_meta": {

1045 "anthropic/maxResultSizeChars": 200000

1046 }

1047}

1048```

1049 

1050Die Anmerkung gilt unabhängig von `MAX_MCP_OUTPUT_TOKENS` für Textinhalte, daher müssen Benutzer die Umgebungsvariable nicht für Tools erhöhen, die sie deklarieren. Tools, die Bilddaten zurückgeben, unterliegen immer noch dem Token-Limit.

1051 

1052<Warning>

1053 Wenn Sie häufig Ausgabewarnungen bei bestimmten MCP-Servern erhalten, die Sie nicht kontrollieren, erwägen Sie, das Limit `MAX_MCP_OUTPUT_TOKENS` zu erhöhen. Sie können auch den Server-Autor bitten, die Anmerkung `anthropic/maxResultSizeChars` hinzuzufügen oder ihre Antworten zu paginieren. Die Anmerkung hat keine Auswirkung auf Tools, die Bildinhalte zurückgeben; für diese ist das Erhöhen von `MAX_MCP_OUTPUT_TOKENS` die einzige Option.

1054</Warning>

1055 

1056## Reagieren Sie auf MCP-Elicitierungsanfragen

1057 

1058MCP-Server können während einer Aufgabe strukturierte Eingaben von Ihnen anfordern, indem sie Elicitierung verwenden. Wenn ein Server Informationen benötigt, die er nicht selbst abrufen kann, zeigt Claude Code einen interaktiven Dialog an und leitet Ihre Antwort an den Server weiter. Auf Ihrer Seite ist keine Konfiguration erforderlich: Elicitierungs-Dialoge erscheinen automatisch, wenn ein Server sie anfordert.

1059 

1060Server können Eingaben auf zwei Arten anfordern:

1061 

1062* **Formularmodus**: Claude Code zeigt einen Dialog mit Formularfeldern an, die vom Server definiert werden (zum Beispiel eine Eingabeaufforderung für Benutzername und Passwort). Füllen Sie die Felder aus und senden Sie sie ab.

1063* **URL-Modus**: Claude Code öffnet eine Browser-URL für Authentifizierung oder Genehmigung. Führen Sie den Ablauf im Browser durch und bestätigen Sie dann in der CLI.

1064 

1065Um automatisch auf Elicitierungsanfragen ohne Dialog zu reagieren, verwenden Sie den [`Elicitation`-Hook](/de/hooks#Elicitation).

1066 

1067Wenn Sie einen MCP-Server erstellen, der Elicitierung verwendet, siehe die [MCP-Elicitierungs-Spezifikation](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation) für Protokolldetails und Schema-Beispiele.

1068 

1069## MCP-Ressourcen verwenden

1070 

1071MCP-Server können Ressourcen verfügbar machen, auf die Sie mit @-Erwähnungen verweisen können, ähnlich wie Sie auf Dateien verweisen.

1072 

1073### Referenzieren Sie MCP-Ressourcen

1074 

1075<Steps>

1076 <Step title="Verfügbare Ressourcen auflisten">

1077 Geben Sie `@` in Ihre Eingabeaufforderung ein, um verfügbare Ressourcen von allen verbundenen MCP-Servern anzuzeigen. Ressourcen erscheinen neben Dateien im Autocomplete-Menü.

1078 </Step>

1079 

1080 <Step title="Referenzieren Sie eine bestimmte Ressource">

1081 Verwenden Sie das Format `@server:protocol://resource/path`, um auf eine Ressource zu verweisen:

1082 

1083 ```text theme={null}

1084 Can you analyze @github:issue://123 and suggest a fix?

1085 ```

1086 

1087 ```text theme={null}

1088 Please review the API documentation at @docs:file://api/authentication

1089 ```

1090 </Step>

1091 

1092 <Step title="Mehrere Ressourcenreferenzen">

1093 Sie können mehrere Ressourcen in einer einzelnen Eingabeaufforderung referenzieren:

1094 

1095 ```text theme={null}

1096 Compare @postgres:schema://users with @docs:file://database/user-model

1097 ```

1098 </Step>

1099</Steps>

1100 

1101<Tip>

1102 Tipps:

1103 

1104 * Ressourcen werden automatisch abgerufen und als Anhänge eingefügt, wenn sie referenziert werden

1105 * Ressourcenpfade sind fuzzy-durchsuchbar im @-Erwähnungs-Autocomplete

1106 * Claude Code stellt automatisch Tools zur Verfügung, um MCP-Ressourcen aufzulisten und zu lesen, wenn Server diese unterstützen

1107 * Ressourcen können jeden Inhaltstyp enthalten, den der MCP-Server bereitstellt (Text, JSON, strukturierte Daten usw.)

1108</Tip>

1109 

1110## Mit MCP-Tool-Suche skalieren

1111 

1112Die Tool-Suche hält die MCP-Kontextnutzung niedrig, indem Tool-Definitionen aufgeschoben werden, bis Claude sie benötigt. Nur Tool-Namen werden beim Sitzungsstart geladen, daher hat das Hinzufügen weiterer MCP-Server minimale Auswirkungen auf Ihr Kontextfenster.

1113 

1114### Wie es funktioniert

1115 

1116Die Tool-Suche ist standardmäßig aktiviert. MCP-Tools werden aufgeschoben, anstatt sie vorab in den Kontext zu laden, und Claude verwendet ein Such-Tool, um relevante Tools zu entdecken, wenn eine Aufgabe sie benötigt. Nur die Tools, die Claude tatsächlich verwendet, gelangen in den Kontext. Aus Ihrer Perspektive funktionieren MCP-Tools genau wie zuvor.

1117 

1118Wenn Sie schwellenwertbasiertes Laden bevorzugen, setzen Sie `ENABLE_TOOL_SEARCH=auto`, um Schemas vorab zu laden, wenn sie in 10 % des Kontextfensters passen, und verschieben Sie nur den Überschuss. Siehe [Tool-Suche konfigurieren](#configure-tool-search) für alle Optionen.

1119 

1120### Für MCP-Server-Autoren

1121 

1122Wenn Sie einen MCP-Server erstellen, wird das Feld für Server-Anweisungen mit aktivierter Tool-Suche nützlicher. Server-Anweisungen helfen Claude zu verstehen, wann nach Ihren Tools gesucht werden soll, ähnlich wie [Skills](/de/skills) funktionieren.

1123 

1124Fügen Sie klare, aussagekräftige Server-Anweisungen hinzu, die erklären:

1125 

1126* Welche Kategorie von Aufgaben Ihre Tools verarbeiten

1127* Wann Claude nach Ihren Tools suchen sollte

1128* Wichtige Funktionen, die Ihr Server bietet

1129 

1130Claude Code schneidet Tool-Beschreibungen und Server-Anweisungen bei 2 KB ab. Halten Sie sie prägnant, um Kürzungen zu vermeiden, und platzieren Sie kritische Details am Anfang.

1131 

1132### Tool-Suche konfigurieren

1133 

1134Die Tool-Suche ist standardmäßig aktiviert: MCP-Tools werden aufgeschoben und bei Bedarf entdeckt. Sie ist standardmäßig auf Vertex AI deaktiviert, das den Tool-Search-Beta-Header nicht akzeptiert, und wenn `ANTHROPIC_BASE_URL` auf einen Host von Drittanbietern verweist, da die meisten Proxys `tool_reference`-Blöcke nicht weiterleiten. Legen Sie `ENABLE_TOOL_SEARCH` explizit fest, um sich anzumelden. Diese Funktion erfordert Modelle, die `tool_reference`-Blöcke unterstützen: Sonnet 4 und später oder Opus 4 und später. Haiku-Modelle unterstützen die Tool-Suche nicht.

1135 

1136Steuern Sie das Verhalten der Tool-Suche mit der Umgebungsvariablen `ENABLE_TOOL_SEARCH`:

1137 

1138| Wert | Verhalten |

1139| :-------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1140| (nicht gesetzt) | Alle MCP-Tools werden aufgeschoben und bei Bedarf geladen. Fällt auf das Laden vorab zurück auf Vertex AI oder wenn `ANTHROPIC_BASE_URL` ein Host von Drittanbietern ist |

1141| `true` | Alle MCP-Tools werden aufgeschoben, auch auf Vertex AI und für `ANTHROPIC_BASE_URL` von Drittanbietern |

1142| `auto` | Schwellenmodus: Tools werden vorab geladen, wenn sie in 10 % des Kontextfensters passen, andernfalls aufgeschoben |

1143| `auto:<N>` | Schwellenmodus mit benutzerdefiniertem Prozentsatz, wobei `<N>` 0-100 ist (z. B. `auto:5` für 5 %) |

1144| `false` | Alle MCP-Tools werden vorab geladen, keine Verschiebung |

1145 

1146```bash theme={null}

1147# Verwenden Sie eine benutzerdefinierte 5%-Schwelle

1148ENABLE_TOOL_SEARCH=auto:5 claude

1149 

1150# Deaktivieren Sie die Tool-Suche vollständig

1151ENABLE_TOOL_SEARCH=false claude

1152```

1153 

1154Oder legen Sie den Wert im Feld `env` Ihrer [settings.json](/de/settings#available-settings) fest.

1155 

1156Sie können das `ToolSearch`-Tool auch spezifisch deaktivieren:

1157 

1158```json theme={null}

1159{

1160 "permissions": {

1161 "deny": ["ToolSearch"]

1162 }

1163}

1164```

1165 

1166### Einen Server von der Verschiebung ausnehmen

1167 

1168Wenn die Tools eines Servers für Claude immer sichtbar sein sollten, ohne einen Suchschritt durchzuführen, setzen Sie `alwaysLoad` in der Konfiguration dieses Servers auf `true`. Jedes Tool von diesem Server wird dann beim Sitzungsstart in den Kontext geladen, unabhängig von der Einstellung `ENABLE_TOOL_SEARCH`. Verwenden Sie dies für eine kleine Anzahl von Tools, die Claude bei jedem Durchgang benötigt, da jedes vorab geladene Tool Kontext verbraucht, der sonst für Ihr Gespräch verfügbar wäre.

1169 

1170Der folgende `.mcp.json`-Eintrag nimmt einen HTTP-Server von der Verschiebung aus, während andere Server aufgeschoben bleiben:

1171 

1172```json theme={null}

1173{

1174 "mcpServers": {

1175 "core-tools": {

1176 "type": "http",

1177 "url": "https://mcp.example.com/mcp",

1178 "alwaysLoad": true

1179 }

1180 }

1181}

1182```

1183 

1184Das Feld `alwaysLoad` ist auf allen Server-Typen verfügbar und erfordert Claude Code v2.1.121 oder später. Ein MCP-Server kann auch einzelne Tools als immer geladen markieren, indem `"anthropic/alwaysLoad": true` im `_meta`-Objekt des Tools enthalten ist, was denselben Effekt nur für dieses Tool hat.

1185 

1186## MCP-Prompts als Befehle verwenden

1187 

1188MCP-Server können Prompts verfügbar machen, die in Claude Code als Befehle verfügbar werden.

1189 

1190### Führen Sie MCP-Prompts aus

1191 

1192<Steps>

1193 <Step title="Entdecken Sie verfügbare Prompts">

1194 Geben Sie `/` ein, um alle verfügbaren Befehle anzuzeigen, einschließlich derer von MCP-Servern. MCP-Prompts erscheinen mit dem Format `/mcp__servername__promptname`.

1195 </Step>

1196 

1197 <Step title="Führen Sie einen Prompt ohne Argumente aus">

1198 ```text theme={null}

1199 /mcp__github__list_prs

1200 ```

1201 </Step>

1202 

1203 <Step title="Führen Sie einen Prompt mit Argumenten aus">

1204 Viele Prompts akzeptieren Argumente. Übergeben Sie sie durch Leerzeichen getrennt nach dem Befehl:

1205 

1206 ```text theme={null}

1207 /mcp__github__pr_review 456

1208 ```

1209 

1210 ```text theme={null}

1211 /mcp__jira__create_issue "Bug in login flow" high

1212 ```

1213 </Step>

1214</Steps>

1215 

1216<Tip>

1217 Tipps:

1218 

1219 * MCP-Prompts werden dynamisch von verbundenen Servern entdeckt

1220 * Argumente werden basierend auf den definierten Parametern des Prompts analysiert

1221 * Prompt-Ergebnisse werden direkt in das Gespräch eingefügt

1222 * Server- und Prompt-Namen werden normalisiert (Leerzeichen werden zu Unterstrichen)

1223</Tip>

1224 

1225## Verwaltete MCP-Konfiguration

1226 

1227Für Organisationen, die eine zentralisierte Kontrolle über MCP-Server benötigen, unterstützt Claude Code zwei Konfigurationsoptionen:

1228 

12291. **Exklusive Kontrolle mit `managed-mcp.json`**: Stellen Sie einen festen Satz von MCP-Servern bereit, die Benutzer nicht ändern oder erweitern können

12302. **Richtlinienbasierte Kontrolle mit Allowlists/Denylists**: Ermöglichen Sie Benutzern, ihre eigenen Server hinzuzufügen, aber beschränken Sie, welche zulässig sind

1231 

1232Diese Optionen ermöglichen IT-Administratoren:

1233 

1234* **Kontrollieren Sie, auf welche MCP-Server Mitarbeiter zugreifen können**: Stellen Sie einen standardisierten Satz genehmigter MCP-Server in der gesamten Organisation bereit

1235* **Verhindern Sie nicht autorisierte MCP-Server**: Beschränken Sie Benutzer daran, nicht genehmigte MCP-Server hinzuzufügen

1236* **Deaktivieren Sie MCP vollständig**: Entfernen Sie die MCP-Funktionalität vollständig, falls erforderlich

1237 

1238### Option 1: Exklusive Kontrolle mit managed-mcp.json

1239 

1240Wenn Sie eine `managed-mcp.json`-Datei bereitstellen, übernimmt sie die **exklusive Kontrolle** über alle MCP-Server. Benutzer können keine MCP-Server außer denen, die in dieser Datei definiert sind, hinzufügen, ändern oder verwenden. Dies ist der einfachste Ansatz für Organisationen, die vollständige Kontrolle wünschen.

1241 

1242Systemadministratoren stellen die Konfigurationsdatei in einem systemweiten Verzeichnis bereit:

1243 

1244* macOS: `/Library/Application Support/ClaudeCode/managed-mcp.json`

1245* Linux und WSL: `/etc/claude-code/managed-mcp.json`

1246* Windows: `C:\Program Files\ClaudeCode\managed-mcp.json`

1247 

1248<Note>

1249 Dies sind systemweite Pfade (nicht Benutzer-Home-Verzeichnisse wie `~/Library/...`), die Administratorrechte erfordern. Sie sind dazu bestimmt, von IT-Administratoren bereitgestellt zu werden.

1250</Note>

1251 

1252Die `managed-mcp.json`-Datei verwendet das gleiche Format wie eine Standard-`.mcp.json`-Datei:

1253 

1254```json theme={null}

1255{

1256 "mcpServers": {

1257 "github": {

1258 "type": "http",

1259 "url": "https://api.githubcopilot.com/mcp/"

1260 },

1261 "sentry": {

1262 "type": "http",

1263 "url": "https://mcp.sentry.dev/mcp"

1264 },

1265 "company-internal": {

1266 "type": "stdio",

1267 "command": "/usr/local/bin/company-mcp-server",

1268 "args": ["--config", "/etc/company/mcp-config.json"],

1269 "env": {

1270 "COMPANY_API_URL": "https://internal.company.com"

1271 }

1272 }

1273 }

1274}

1275```

1276 

1277### Option 2: Richtlinienbasierte Kontrolle mit Allowlists und Denylists

1278 

1279Anstatt exklusive Kontrolle zu übernehmen, können Administratoren Benutzern erlauben, ihre eigenen MCP-Server zu konfigurieren, während sie Einschränkungen durchsetzen, welche Server zulässig sind. Dieser Ansatz verwendet `allowedMcpServers` und `deniedMcpServers` in der [verwalteten Einstellungsdatei](/de/settings#settings-files).

1280 

1281<Note>

1282 **Wahl zwischen Optionen**: Verwenden Sie Option 1 (`managed-mcp.json`), wenn Sie einen festen Satz von Servern ohne Benutzeranpassung bereitstellen möchten. Verwenden Sie Option 2 (Allowlists/Denylists), wenn Sie Benutzern erlauben möchten, ihre eigenen Server innerhalb von Richtlinienbeschränkungen hinzuzufügen.

1283</Note>

1284 

1285#### Einschränkungsoptionen

1286 

1287Jeder Eintrag in der Allowlist oder Denylist kann Server auf drei Arten einschränken:

1288 

12891. **Nach Servername** (`serverName`): Entspricht dem konfigurierten Namen des Servers

12902. **Nach Befehl** (`serverCommand`): Entspricht dem genauen Befehl und den Argumenten, die zum Starten von Stdio-Servern verwendet werden

12913. **Nach URL-Muster** (`serverUrl`): Entspricht Remote-Server-URLs mit Wildcard-Unterstützung

1292 

1293**Wichtig**: Jeder Eintrag muss genau einen von `serverName`, `serverCommand` oder `serverUrl` haben.

1294 

1295#### Beispielkonfiguration

1296 

1297```json theme={null}

1298{

1299 "allowedMcpServers": [

1300 // Nach Servername zulassen

1301 { "serverName": "github" },

1302 { "serverName": "sentry" },

1303 

1304 // Nach exaktem Befehl zulassen (für Stdio-Server)

1305 { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem"] },

1306 { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },

1307 

1308 // Nach URL-Muster zulassen (für Remote-Server)

1309 { "serverUrl": "https://mcp.company.com/*" },

1310 { "serverUrl": "https://*.internal.corp/*" }

1311 ],

1312 "deniedMcpServers": [

1313 // Nach Servername blockieren

1314 { "serverName": "dangerous-server" },

1315 

1316 // Nach exaktem Befehl blockieren (für Stdio-Server)

1317 { "serverCommand": ["npx", "-y", "unapproved-package"] },

1318 

1319 // Nach URL-Muster blockieren (für Remote-Server)

1320 { "serverUrl": "https://*.untrusted.com/*" }

1321 ]

1322}

1323```

1324 

1325#### Wie befehlsbasierte Einschränkungen funktionieren

1326 

1327**Exakte Übereinstimmung**:

1328 

1329* Befehlsarrays müssen **genau** übereinstimmen – sowohl der Befehl als auch alle Argumente in der richtigen Reihenfolge

1330* Beispiel: `["npx", "-y", "server"]` entspricht NICHT `["npx", "server"]` oder `["npx", "-y", "server", "--flag"]`

1331 

1332**Stdio-Server-Verhalten**:

1333 

1334* Wenn die Allowlist **irgendwelche** `serverCommand`-Einträge enthält, müssen Stdio-Server einem dieser Befehle entsprechen

1335* Stdio-Server können nicht allein nach Name bestehen, wenn Befehlsbeschränkungen vorhanden sind

1336* Dies stellt sicher, dass Administratoren erzwingen können, welche Befehle ausgeführt werden dürfen

1337 

1338**Verhalten von Remote-Servern**:

1339 

1340* Remote-Server (HTTP, SSE, WebSocket) verwenden URL-basierte Übereinstimmung, wenn `serverUrl`-Einträge in der Allowlist vorhanden sind

1341* Wenn keine URL-Einträge vorhanden sind, greifen Remote-Server auf namensbasierte Übereinstimmung zurück

1342* Befehlsbeschränkungen gelten nicht für Remote-Server

1343 

1344#### Wie URL-basierte Einschränkungen funktionieren

1345 

1346URL-Muster unterstützen Wildcards mit `*`, um eine beliebige Zeichenfolge zu entsprechen. Dies ist nützlich, um ganze Domänen oder Subdomänen zuzulassen.

1347 

1348**Wildcard-Beispiele**:

1349 

1350* `https://mcp.company.com/*` – Alle Pfade auf einer bestimmten Domäne zulassen

1351* `https://*.example.com/*` – Jede Subdomain von example.com zulassen

1352* `http://localhost:*/*` – Jeden Port auf localhost zulassen

1353 

1354**Verhalten von Remote-Servern**:

1355 

1356* Wenn die Allowlist **irgendwelche** `serverUrl`-Einträge enthält, müssen Remote-Server einem dieser URL-Muster entsprechen

1357* Remote-Server können nicht allein nach Name bestehen, wenn URL-Beschränkungen vorhanden sind

1358* Dies stellt sicher, dass Administratoren erzwingen können, welche Remote-Endpunkte zulässig sind

1359 

1360<Accordion title="Beispiel: Nur-URL-Allowlist">

1361 ```json theme={null}

1362 {

1363 "allowedMcpServers": [

1364 { "serverUrl": "https://mcp.company.com/*" },

1365 { "serverUrl": "https://*.internal.corp/*" }

1366 ]

1367 }

1368 ```

1369 

1370 **Ergebnis**:

1371 

1372 * HTTP-Server unter `https://mcp.company.com/api`: ✅ Zulässig (entspricht URL-Muster)

1373 * HTTP-Server unter `https://api.internal.corp/mcp`: ✅ Zulässig (entspricht Wildcard-Subdomain)

1374 * HTTP-Server unter `https://external.com/mcp`: ❌ Blockiert (entspricht keinem URL-Muster)

1375 * Stdio-Server mit beliebigem Befehl: ❌ Blockiert (keine Namen- oder Befehlseinträge zum Abgleichen)

1376</Accordion>

1377 

1378<Accordion title="Beispiel: Nur-Befehl-Allowlist">

1379 ```json theme={null}

1380 {

1381 "allowedMcpServers": [

1382 { "serverCommand": ["npx", "-y", "approved-package"] }

1383 ]

1384 }

1385 ```

1386 

1387 **Ergebnis**:

1388 

1389 * Stdio-Server mit `["npx", "-y", "approved-package"]`: ✅ Zulässig (entspricht Befehl)

1390 * Stdio-Server mit `["node", "server.js"]`: ❌ Blockiert (entspricht nicht dem Befehl)

1391 * HTTP-Server mit Namen „my-api": ❌ Blockiert (keine Nameneinträge zum Abgleichen)

1392</Accordion>

1393 

1394<Accordion title="Beispiel: Gemischte Namen- und Befehl-Allowlist">

1395 ```json theme={null}

1396 {

1397 "allowedMcpServers": [

1398 { "serverName": "github" },

1399 { "serverCommand": ["npx", "-y", "approved-package"] }

1400 ]

1401 }

1402 ```

1403 

1404 **Ergebnis**:

1405 

1406 * Stdio-Server mit Namen „local-tool" und `["npx", "-y", "approved-package"]`: ✅ Zulässig (entspricht Befehl)

1407 * Stdio-Server mit Namen „local-tool" und `["node", "server.js"]`: ❌ Blockiert (Befehlseinträge vorhanden, aber entspricht nicht)

1408 * Stdio-Server mit Namen „github" und `["node", "server.js"]`: ❌ Blockiert (Stdio-Server müssen Befehlen entsprechen, wenn Befehlseinträge vorhanden sind)

1409 * HTTP-Server mit Namen „github": ✅ Zulässig (entspricht Name)

1410 * HTTP-Server mit Namen „other-api": ❌ Blockiert (Name entspricht nicht)

1411</Accordion>

1412 

1413<Accordion title="Beispiel: Nur-Namen-Allowlist">

1414 ```json theme={null}

1415 {

1416 "allowedMcpServers": [

1417 { "serverName": "github" },

1418 { "serverName": "internal-tool" }

1419 ]

1420 }

1421 ```

1422 

1423 **Ergebnis**:

1424 

1425 * Stdio-Server mit Namen „github" und beliebigem Befehl: ✅ Zulässig (keine Befehlsbeschränkungen)

1426 * Stdio-Server mit Namen „internal-tool" und beliebigem Befehl: ✅ Zulässig (keine Befehlsbeschränkungen)

1427 * HTTP-Server mit Namen „github": ✅ Zulässig (entspricht Name)

1428 * Beliebiger Server mit Namen „other": ❌ Blockiert (Name entspricht nicht)

1429</Accordion>

1430 

1431#### Allowlist-Verhalten (`allowedMcpServers`)

1432 

1433* `undefined` (Standard): Keine Einschränkungen – Benutzer können jeden MCP-Server konfigurieren

1434* Leeres Array `[]`: Vollständige Sperrung – Benutzer können keinen MCP-Server konfigurieren

1435* Liste von Einträgen: Benutzer können nur Server konfigurieren, die nach Name, Befehl oder URL-Muster übereinstimmen

1436 

1437#### Denylist-Verhalten (`deniedMcpServers`)

1438 

1439* `undefined` (Standard): Keine Server werden blockiert

1440* Leeres Array `[]`: Keine Server werden blockiert

1441* Liste von Einträgen: Angegebene Server werden über alle Bereiche hinweg explizit blockiert

1442 

1443#### Wichtige Hinweise

1444 

1445* **Option 1 und Option 2 können kombiniert werden**: Wenn `managed-mcp.json` vorhanden ist, hat es exklusive Kontrolle und Benutzer können keine Server hinzufügen. Allowlists/Denylists gelten immer noch für die verwalteten Server selbst.

1446* **Denylist hat absolute Vorrang**: Wenn ein Server einem Denylist-Eintrag entspricht (nach Name, Befehl oder URL), wird er blockiert, auch wenn er auf der Allowlist ist

1447* Namensbasierte, befehlsbasierte und URL-basierte Einschränkungen funktionieren zusammen: Ein Server wird zugelassen, wenn er einem Namenseintrag, einem Befehlseintrag oder einem URL-Muster entspricht (es sei denn, er wird durch Denylist blockiert)

1448 

1449<Note>

1450 **Bei Verwendung von `managed-mcp.json`**: Benutzer können MCP-Server nicht über `claude mcp add` oder Konfigurationsdateien hinzufügen. Die Einstellungen `allowedMcpServers` und `deniedMcpServers` gelten immer noch, um zu filtern, welche verwalteten Server tatsächlich geladen werden.

1451</Note>

memory.md +408 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Wie Claude sich Ihr Projekt merkt

6 

7> Geben Sie Claude persistente Anweisungen mit CLAUDE.md-Dateien, und lassen Sie Claude automatisch Erkenntnisse mit Auto-Memory sammeln.

8 

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

10 

11* **CLAUDE.md-Dateien**: Anweisungen, die Sie schreiben, um Claude persistenten Kontext zu geben

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

13 

14Diese Seite behandelt folgende Themen:

15 

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

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

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

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

20 

21## CLAUDE.md vs. Auto-Memory

22 

23Claude Code hat zwei komplementäre Memory-Systeme. Beide werden zu Beginn jeder Konversation geladen. Claude behandelt sie als Kontext, nicht als erzwungene Konfiguration. Je spezifischer und prägnanter Ihre Anweisungen sind, desto konsistenter folgt Claude ihnen.

24 

25| | CLAUDE.md-Dateien | Auto-Memory |

26| :------------------ | :---------------------------------------------- | :-------------------------------------------------------------------- |

27| **Wer schreibt es** | Sie | Claude |

28| **Was es enthält** | Anweisungen und Regeln | Erkenntnisse und Muster |

29| **Umfang** | Projekt, Benutzer oder Organisation | Pro Worktree |

30| **Geladen in** | Jede Sitzung | Jede Sitzung (erste 200 Zeilen oder 25 KB) |

31| **Verwenden für** | Coding-Standards, Workflows, Projektarchitektur | Build-Befehle, Debugging-Erkenntnisse, Vorlieben, die Claude entdeckt |

32 

33Verwenden Sie CLAUDE.md-Dateien, wenn Sie Claudes Verhalten lenken möchten. Auto-Memory lässt Claude aus Ihren Korrektionen lernen, ohne manuelle Anstrengung.

34 

35Subagents können auch ihre eigene Auto-Memory pflegen. Weitere Informationen finden Sie unter [Subagent-Konfiguration](/de/sub-agents#enable-persistent-memory).

36 

37## CLAUDE.md-Dateien

38 

39CLAUDE.md-Dateien sind Markdown-Dateien, die Claude persistente Anweisungen für ein Projekt, Ihren persönlichen Workflow oder Ihre gesamte Organisation geben. Sie schreiben diese Dateien in Klartext; Claude liest sie zu Beginn jeder Sitzung.

40 

41### Wann sollte ich zu CLAUDE.md hinzufügen

42 

43Behandeln Sie CLAUDE.md als den Ort, an dem Sie aufschreiben, was Sie sonst erneut erklären würden. Fügen Sie hinzu, wenn:

44 

45* Claude denselben Fehler ein zweites Mal macht

46* Eine Code-Review etwas findet, das Claude über diese Codebasis hätte wissen sollen

47* Sie tippen die gleiche Korrektur oder Klarstellung in den Chat, die Sie letzte Sitzung eingegeben haben

48* Ein neuer Teamkollege den gleichen Kontext benötigen würde, um produktiv zu sein

49 

50Halten Sie es bei Fakten, die Claude in jeder Sitzung behalten sollte: Build-Befehle, Konventionen, Projektlayout, „immer X machen"-Regeln. Wenn ein Eintrag ein mehrstufiges Verfahren ist oder nur für einen Teil der Codebasis wichtig ist, verschieben Sie ihn stattdessen zu einem [Skill](/de/skills) oder einer [pfadgebundenen Regel](#organize-rules-with-claude/rules/). Die [Funktionsübersicht](/de/features-overview#build-your-setup-over-time) behandelt, wann Sie jeden Mechanismus verwenden.

51 

52### Wählen Sie, wo Sie CLAUDE.md-Dateien ablegen

53 

54CLAUDE.md-Dateien können sich an mehreren Orten befinden, jeder mit einem anderen Umfang. Spezifischere Orte haben Vorrang vor breiteren.

55 

56| Umfang | Ort | Zweck | Anwendungsbeispiele | Geteilt mit |

57| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -------------------------------------- |

58| **Verwaltete Richtlinie** | • macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`<br />• Linux und WSL: `/etc/claude-code/CLAUDE.md`<br />• Windows: `C:\Program Files\ClaudeCode\CLAUDE.md` | Organisationsweite Anweisungen, verwaltet von IT/DevOps | Unternehmens-Coding-Standards, Sicherheitsrichtlinien, Compliance-Anforderungen | Alle Benutzer in der Organisation |

59| **Projektanweisungen** | `./CLAUDE.md` oder `./.claude/CLAUDE.md` | Team-gemeinsame Anweisungen für das Projekt | Projektarchitektur, Coding-Standards, häufige Workflows | Team-Mitglieder über Versionskontrolle |

60| **Benutzeranweisungen** | `~/.claude/CLAUDE.md` | Persönliche Vorlieben für alle Projekte | Code-Styling-Vorlieben, persönliche Tooling-Shortcuts | Nur Sie (alle Projekte) |

61| **Lokale Anweisungen** | `./CLAUDE.local.md` | Persönliche projektspezifische Vorlieben; zu `.gitignore` hinzufügen | Ihre Sandbox-URLs, bevorzugte Testdaten | Nur Sie (aktuelles Projekt) |

62 

63CLAUDE.md- und CLAUDE.local.md-Dateien in der Verzeichnishierarchie über dem Arbeitsverzeichnis werden beim Start vollständig geladen. Dateien in Unterverzeichnissen werden bei Bedarf geladen, wenn Claude Dateien in diesen Verzeichnissen liest. Weitere Informationen finden Sie unter [Wie CLAUDE.md-Dateien geladen werden](#how-claude-md-files-load).

64 

65Für große Projekte können Sie Anweisungen in themaspezifische Dateien aufteilen, indem Sie [Projektregeln](#organize-rules-with-claude/rules/) verwenden. Regeln ermöglichen es Ihnen, Anweisungen auf bestimmte Dateitypen oder Unterverzeichnisse zu beschränken.

66 

67### Richten Sie eine Projekt-CLAUDE.md ein

68 

69Eine Projekt-CLAUDE.md kann entweder in `./CLAUDE.md` oder `./.claude/CLAUDE.md` gespeichert werden. Erstellen Sie diese Datei und fügen Sie Anweisungen hinzu, die für jeden gelten, der am Projekt arbeitet: Build- und Test-Befehle, Coding-Standards, architektonische Entscheidungen, Namenskonventionen und häufige Workflows. Diese Anweisungen werden über Versionskontrolle mit Ihrem Team geteilt, daher konzentrieren Sie sich auf projektweite Standards statt auf persönliche Vorlieben.

70 

71<Tip>

72 Führen Sie `/init` aus, um automatisch eine Start-CLAUDE.md zu generieren. Claude analysiert Ihre Codebasis und erstellt eine Datei mit Build-Befehlen, Test-Anweisungen und Projektkonventionen, die es entdeckt. Wenn bereits eine CLAUDE.md vorhanden ist, schlägt `/init` Verbesserungen vor, statt sie zu überschreiben. Verfeinern Sie sie von dort aus mit Anweisungen, die Claude nicht selbst entdecken würde.

73 

74 Setzen Sie `CLAUDE_CODE_NEW_INIT=1`, um einen interaktiven mehrstufigen Ablauf zu aktivieren. `/init` fragt, welche Artefakte eingerichtet werden sollen: CLAUDE.md-Dateien, Skills und Hooks. Es erkundet dann Ihre Codebasis mit einem Subagent, füllt Lücken durch Folgefragen aus und präsentiert einen überprüfbaren Vorschlag, bevor Dateien geschrieben werden.

75</Tip>

76 

77### Schreiben Sie effektive Anweisungen

78 

79CLAUDE.md-Dateien werden zu Beginn jeder Sitzung in das Context Window geladen und verbrauchen Token zusammen mit Ihrer Konversation. Die [Context Window-Visualisierung](/de/context-window) zeigt, wo CLAUDE.md relativ zum Rest des Startup-Kontexts geladen wird. Da sie Kontext statt erzwungene Konfiguration sind, beeinflusst die Art, wie Sie Anweisungen schreiben, wie zuverlässig Claude ihnen folgt. Spezifische, prägnante, gut strukturierte Anweisungen funktionieren am besten.

80 

81**Größe**: Ziel unter 200 Zeilen pro CLAUDE.md-Datei. Längere Dateien verbrauchen mehr Kontext und reduzieren die Einhaltung. Wenn Ihre Anweisungen zu groß werden, verwenden Sie [pfadgebundene Regeln](#path-specific-rules), damit Anweisungen nur geladen werden, wenn Claude mit übereinstimmenden Dateien arbeitet, um Rauschen zu reduzieren und Kontextraum zu sparen. Sie können auch Inhalte in [Importe](#import-additional-files) aufteilen, um sie zu organisieren, obwohl importierte Dateien immer noch geladen werden und beim Start in das Context Window eingehen.

82 

83**Struktur**: Verwenden Sie Markdown-Header und Aufzählungszeichen, um verwandte Anweisungen zu gruppieren. Claude scannt die Struktur genauso wie Leser: organisierte Abschnitte sind leichter zu befolgen als dichte Absätze.

84 

85**Spezifität**: Schreiben Sie Anweisungen, die konkret genug sind, um überprüft zu werden. Zum Beispiel:

86 

87* „Verwenden Sie 2-Leerzeichen-Einrückung" statt „Formatieren Sie Code ordnungsgemäß"

88* „Führen Sie `npm test` vor dem Commit aus" statt „Testen Sie Ihre Änderungen"

89* „API-Handler befinden sich in `src/api/handlers/`" statt „Halten Sie Dateien organisiert"

90 

91**Konsistenz**: Wenn zwei Regeln sich widersprechen, kann Claude eine willkürlich auswählen. Überprüfen Sie Ihre CLAUDE.md-Dateien, verschachtelte CLAUDE.md-Dateien in Unterverzeichnissen und [`.claude/rules/`](#organize-rules-with-claude/rules/) regelmäßig, um veraltete oder widersprüchliche Anweisungen zu entfernen. In Monorepos verwenden Sie [`claudeMdExcludes`](#exclude-specific-claude-md-files), um CLAUDE.md-Dateien von anderen Teams zu überspringen, die für Ihre Arbeit nicht relevant sind.

92 

93### Importieren Sie zusätzliche Dateien

94 

95CLAUDE.md-Dateien können zusätzliche Dateien mit der Syntax `@path/to/import` importieren. Importierte Dateien werden erweitert und beim Start zusammen mit der CLAUDE.md, die sie referenziert, in den Kontext geladen.

96 

97Sowohl relative als auch absolute Pfade sind zulässig. Relative Pfade werden relativ zur Datei aufgelöst, die den Import enthält, nicht zum Arbeitsverzeichnis. Importierte Dateien können rekursiv andere Dateien importieren, mit einer maximalen Tiefe von fünf Hops.

98 

99Um eine README, package.json und einen Workflow-Leitfaden einzubeziehen, referenzieren Sie sie mit der `@`-Syntax überall in Ihrer CLAUDE.md:

100 

101```text theme={null}

102Siehe @README für Projektübersicht und @package.json für verfügbare npm-Befehle für dieses Projekt.

103 

104# Zusätzliche Anweisungen

105- Git-Workflow @docs/git-instructions.md

106```

107 

108Für persönliche Vorlieben pro Projekt, die nicht in die Versionskontrolle eingecheckt werden sollten, erstellen Sie eine `CLAUDE.local.md` im Projektstammverzeichnis. Sie wird zusammen mit `CLAUDE.md` geladen und wird auf die gleiche Weise behandelt. Fügen Sie `CLAUDE.local.md` zu Ihrer `.gitignore` hinzu, damit sie nicht committed wird; das Ausführen von `/init` und das Auswählen der persönlichen Option tut dies für Sie.

109 

110Wenn Sie über mehrere Git-Worktrees desselben Repositories arbeiten, existiert eine gitignorierte `CLAUDE.local.md` nur in dem Worktree, in dem Sie sie erstellt haben. Um persönliche Anweisungen über Worktrees hinweg zu teilen, importieren Sie stattdessen eine Datei aus Ihrem Home-Verzeichnis:

111 

112```text theme={null}

113# Individuelle Vorlieben

114- @~/.claude/my-project-instructions.md

115```

116 

117<Warning>

118 Wenn Claude Code zum ersten Mal externe Importe in einem Projekt antrifft, zeigt es einen Genehmigungsdialog an, der die Dateien auflistet. Wenn Sie ablehnen, bleiben die Importe deaktiviert und der Dialog wird nicht erneut angezeigt.

119</Warning>

120 

121Für einen strukturierteren Ansatz zur Organisation von Anweisungen siehe [`.claude/rules/`](#organize-rules-with-claude/rules/).

122 

123### AGENTS.md

124 

125Claude Code liest `CLAUDE.md`, nicht `AGENTS.md`. Wenn Ihr Repository bereits `AGENTS.md` für andere Coding-Agenten verwendet, erstellen Sie eine `CLAUDE.md`, die es importiert, damit beide Tools die gleichen Anweisungen lesen, ohne sie zu duplizieren. Sie können auch Claude-spezifische Anweisungen unter dem Import hinzufügen. Claude lädt die importierte Datei beim Sitzungsstart und hängt dann den Rest an:

126 

127```markdown CLAUDE.md theme={null}

128@AGENTS.md

129 

130## Claude Code

131 

132Verwenden Sie Plan Mode für Änderungen unter `src/billing/`.

133```

134 

135### Wie CLAUDE.md-Dateien geladen werden

136 

137Claude Code liest CLAUDE.md-Dateien, indem es die Verzeichnisstruktur von Ihrem aktuellen Arbeitsverzeichnis aus durchläuft und jedes Verzeichnis unterwegs auf `CLAUDE.md`- und `CLAUDE.local.md`-Dateien überprüft. Das bedeutet, wenn Sie Claude Code in `foo/bar/` ausführen, lädt es Anweisungen aus `foo/bar/CLAUDE.md`, `foo/CLAUDE.md` und allen `CLAUDE.local.md`-Dateien daneben.

138 

139Alle entdeckten Dateien werden in den Kontext verkettet, statt sich gegenseitig zu überschreiben. Innerhalb der Verzeichnishierarchie wird Inhalt vom Dateisystem-Root bis zu Ihrem Arbeitsverzeichnis geordnet. Für das Beispiel `foo/bar/` erscheint `foo/CLAUDE.md` im Kontext vor `foo/bar/CLAUDE.md`, sodass Anweisungen näher an dem Ort, an dem Sie Claude gestartet haben, zuletzt gelesen werden. Innerhalb jedes Verzeichnisses wird `CLAUDE.local.md` nach `CLAUDE.md` angehängt, sodass Ihre persönlichen Notizen das letzte sind, das Claude auf dieser Ebene liest.

140 

141Claude entdeckt auch `CLAUDE.md`- und `CLAUDE.local.md`-Dateien in Unterverzeichnissen unter Ihrem aktuellen Arbeitsverzeichnis. Statt sie beim Start zu laden, werden sie eingebunden, wenn Claude Dateien in diesen Unterverzeichnissen liest.

142 

143Wenn Sie in einem großen Monorepo arbeiten, in dem CLAUDE.md-Dateien anderer Teams aufgegriffen werden, verwenden Sie [`claudeMdExcludes`](#exclude-specific-claude-md-files), um sie zu überspringen.

144 

145Block-Level-HTML-Kommentare (`<!-- maintainer notes -->`) in CLAUDE.md-Dateien werden vor der Injektion in Claudes Kontext entfernt. Verwenden Sie sie, um Notizen für menschliche Betreuer zu hinterlassen, ohne Kontext-Token darauf zu verschwenden. Kommentare innerhalb von Code-Blöcken werden beibehalten. Wenn Sie eine CLAUDE.md-Datei direkt mit dem Read-Tool öffnen, bleiben Kommentare sichtbar.

146 

147#### Laden aus zusätzlichen Verzeichnissen

148 

149Das Flag `--add-dir` gibt Claude Zugriff auf zusätzliche Verzeichnisse außerhalb Ihres Hauptarbeitsverzeichnisses. Standardmäßig werden CLAUDE.md-Dateien aus diesen Verzeichnissen nicht geladen.

150 

151Um auch Memory-Dateien aus zusätzlichen Verzeichnissen zu laden, setzen Sie die Umgebungsvariable `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD`:

152 

153```bash theme={null}

154CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config

155```

156 

157Dies lädt `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md` und `CLAUDE.local.md` aus dem zusätzlichen Verzeichnis. `CLAUDE.local.md` wird übersprungen, wenn Sie `local` aus [`--setting-sources`](/de/cli-reference) ausschließen.

158 

159### Organisieren Sie Regeln mit `.claude/rules/`

160 

161Für größere Projekte können Sie Anweisungen in mehrere Dateien mit dem Verzeichnis `.claude/rules/` organisieren. Dies hält Anweisungen modular und leichter für Teams zu pflegen. Regeln können auch [auf bestimmte Dateipfade beschränkt werden](#path-specific-rules), sodass sie nur in den Kontext geladen werden, wenn Claude mit übereinstimmenden Dateien arbeitet, was Rauschen reduziert und Kontextraum spart.

162 

163<Note>

164 Regeln werden in jeder Sitzung oder beim Öffnen übereinstimmender Dateien in den Kontext geladen. Für aufgabenspezifische Anweisungen, die nicht ständig im Kontext sein müssen, verwenden Sie stattdessen [Skills](/de/skills), die nur geladen werden, wenn Sie sie aufrufen oder wenn Claude bestimmt, dass sie für Ihren Prompt relevant sind.

165</Note>

166 

167#### Richten Sie Regeln ein

168 

169Platzieren Sie Markdown-Dateien im Verzeichnis `.claude/rules/` Ihres Projekts. Jede Datei sollte ein Thema abdecken, mit einem beschreibenden Dateinamen wie `testing.md` oder `api-design.md`. Alle `.md`-Dateien werden rekursiv entdeckt, sodass Sie Regeln in Unterverzeichnisse wie `frontend/` oder `backend/` organisieren können:

170 

171```text theme={null}

172your-project/

173├── .claude/

174│ ├── CLAUDE.md # Hauptprojektanweisungen

175│ └── rules/

176│ ├── code-style.md # Code-Style-Richtlinien

177│ ├── testing.md # Test-Konventionen

178│ └── security.md # Sicherheitsanforderungen

179```

180 

181Regeln ohne [`paths`-Frontmatter](#path-specific-rules) werden beim Start mit der gleichen Priorität wie `.claude/CLAUDE.md` geladen.

182 

183#### Pfadspezifische Regeln

184 

185Regeln können mit YAML-Frontmatter mit dem Feld `paths` auf bestimmte Dateien beschränkt werden. Diese bedingten Regeln gelten nur, wenn Claude mit Dateien arbeitet, die den angegebenen Mustern entsprechen.

186 

187```markdown theme={null}

188---

189paths:

190 - "src/api/**/*.ts"

191---

192 

193# API-Entwicklungsregeln

194 

195- Alle API-Endpunkte müssen Eingabevalidierung enthalten

196- Verwenden Sie das Standard-Fehlerantwortformat

197- Fügen Sie OpenAPI-Dokumentationskommentare ein

198```

199 

200Regeln ohne ein `paths`-Feld werden bedingungslos geladen und gelten für alle Dateien. Pfadgebundene Regeln werden ausgelöst, wenn Claude Dateien liest, die dem Muster entsprechen, nicht bei jedem Tool-Einsatz.

201 

202Verwenden Sie Glob-Muster im Feld `paths`, um Dateien nach Erweiterung, Verzeichnis oder einer beliebigen Kombination zu vergleichen:

203 

204| Muster | Passt zu |

205| ---------------------- | ------------------------------------------------- |

206| `**/*.ts` | Alle TypeScript-Dateien in jedem Verzeichnis |

207| `src/**/*` | Alle Dateien unter dem Verzeichnis `src/` |

208| `*.md` | Markdown-Dateien im Projektstamm |

209| `src/components/*.tsx` | React-Komponenten in einem bestimmten Verzeichnis |

210 

211Sie können mehrere Muster angeben und Klammer-Expansion verwenden, um mehrere Erweiterungen in einem Muster zu vergleichen:

212 

213```markdown theme={null}

214---

215paths:

216 - "src/**/*.{ts,tsx}"

217 - "lib/**/*.ts"

218 - "tests/**/*.test.ts"

219---

220```

221 

222#### Teilen Sie Regeln über Projekte hinweg mit Symlinks

223 

224Das Verzeichnis `.claude/rules/` unterstützt Symlinks, sodass Sie einen gemeinsamen Satz von Regeln pflegen und in mehrere Projekte verlinken können. Symlinks werden aufgelöst und normal geladen, und zirkuläre Symlinks werden erkannt und elegant behandelt.

225 

226Dieses Beispiel verlinkt sowohl ein gemeinsames Verzeichnis als auch eine einzelne Datei:

227 

228```bash theme={null}

229ln -s ~/shared-claude-rules .claude/rules/shared

230ln -s ~/company-standards/security.md .claude/rules/security.md

231```

232 

233#### Benutzerebenen-Regeln

234 

235Persönliche Regeln in `~/.claude/rules/` gelten für jedes Projekt auf Ihrem Computer. Verwenden Sie sie für Vorlieben, die nicht projektspezifisch sind:

236 

237```text theme={null}

238~/.claude/rules/

239├── preferences.md # Ihre persönlichen Coding-Vorlieben

240└── workflows.md # Ihre bevorzugten Workflows

241```

242 

243Benutzerebenen-Regeln werden vor Projektregeln geladen, was Projektregeln höhere Priorität gibt.

244 

245### Verwalten Sie CLAUDE.md für große Teams

246 

247Für Organisationen, die Claude Code über Teams bereitstellen, können Sie Anweisungen zentralisieren und steuern, welche CLAUDE.md-Dateien geladen werden.

248 

249#### Stellen Sie organisationsweite CLAUDE.md bereit

250 

251Organisationen können eine zentral verwaltete CLAUDE.md bereitstellen, die für alle Benutzer auf einem Computer gilt. Diese Datei kann nicht durch individuelle Einstellungen ausgeschlossen werden.

252 

253<Steps>

254 <Step title="Erstellen Sie die Datei am Ort der verwalteten Richtlinie">

255 * macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`

256 * Linux und WSL: `/etc/claude-code/CLAUDE.md`

257 * Windows: `C:\Program Files\ClaudeCode\CLAUDE.md`

258 </Step>

259 

260 <Step title="Stellen Sie mit Ihrem Konfigurationsverwaltungssystem bereit">

261 Verwenden Sie MDM, Group Policy, Ansible oder ähnliche Tools, um die Datei über Entwicklermaschinen zu verteilen. Weitere Informationen finden Sie unter [verwaltete Einstellungen](/de/permissions#managed-settings) für andere organisationsweite Konfigurationsoptionen.

262 </Step>

263</Steps>

264 

265Eine verwaltete CLAUDE.md und [verwaltete Einstellungen](/de/settings#settings-files) dienen unterschiedlichen Zwecken. Verwenden Sie Einstellungen für technische Durchsetzung und CLAUDE.md für Verhaltensanleitung:

266 

267| Anliegen | Konfigurieren in |

268| :------------------------------------------------------ | :---------------------------------------------------------------- |

269| Blockieren Sie bestimmte Tools, Befehle oder Dateipfade | Verwaltete Einstellungen: `permissions.deny` |

270| Erzwingen Sie Sandbox-Isolation | Verwaltete Einstellungen: `sandbox.enabled` |

271| Umgebungsvariablen und API-Provider-Routing | Verwaltete Einstellungen: `env` |

272| Authentifizierungsmethode und Organisationssperre | Verwaltete Einstellungen: `forceLoginMethod`, `forceLoginOrgUUID` |

273| Code-Style und Qualitätsrichtlinien | Verwaltete CLAUDE.md |

274| Datenbehandlung und Compliance-Erinnerungen | Verwaltete CLAUDE.md |

275| Verhaltensanweisungen für Claude | Verwaltete CLAUDE.md |

276 

277Einstellungsregeln werden vom Client unabhängig davon durchgesetzt, was Claude entscheidet zu tun. CLAUDE.md-Anweisungen prägen Claudes Verhalten, sind aber keine harte Durchsetzungsebene.

278 

279#### Schließen Sie bestimmte CLAUDE.md-Dateien aus

280 

281In großen Monorepos können Vorgänger-CLAUDE.md-Dateien Anweisungen enthalten, die für Ihre Arbeit nicht relevant sind. Die Einstellung `claudeMdExcludes` ermöglicht es Ihnen, bestimmte Dateien nach Pfad oder Glob-Muster zu überspringen.

282 

283Dieses Beispiel schließt eine CLAUDE.md auf oberster Ebene und ein Regelverzeichnis aus einem übergeordneten Ordner aus. Fügen Sie es zu `.claude/settings.local.json` hinzu, damit der Ausschluss lokal auf Ihrem Computer bleibt:

284 

285```json theme={null}

286{

287 "claudeMdExcludes": [

288 "**/monorepo/CLAUDE.md",

289 "/home/user/monorepo/other-team/.claude/rules/**"

290 ]

291}

292```

293 

294Muster werden mit Glob-Syntax gegen absolute Dateipfade abgeglichen. Sie können `claudeMdExcludes` auf jeder [Einstellungsebene](/de/settings#settings-files) konfigurieren: Benutzer, Projekt, lokal oder verwaltete Richtlinie. Arrays werden über Ebenen hinweg zusammengeführt.

295 

296CLAUDE.md-Dateien mit verwalteter Richtlinie können nicht ausgeschlossen werden. Dies stellt sicher, dass organisationsweite Anweisungen unabhängig von individuellen Einstellungen immer gelten.

297 

298## Auto-Memory

299 

300Auto-Memory lässt Claude Wissen über Sitzungen hinweg sammeln, ohne dass Sie etwas schreiben müssen. Claude speichert Notizen für sich selbst, während es arbeitet: Build-Befehle, Debugging-Erkenntnisse, Architektur-Notizen, Code-Style-Vorlieben und Workflow-Gewohnheiten. Claude speichert nicht jede Sitzung etwas. Es entscheidet, was es sich merken sollte, basierend darauf, ob die Information in einer zukünftigen Konversation nützlich wäre.

301 

302<Note>

303 Auto-Memory erfordert Claude Code v2.1.59 oder später. Überprüfen Sie Ihre Version mit `claude --version`.

304</Note>

305 

306### Aktivieren oder deaktivieren Sie Auto-Memory

307 

308Auto-Memory ist standardmäßig aktiviert. Um es umzuschalten, öffnen Sie `/memory` in einer Sitzung und verwenden Sie den Auto-Memory-Schalter, oder setzen Sie `autoMemoryEnabled` in Ihren Projekteinstellungen:

309 

310```json theme={null}

311{

312 "autoMemoryEnabled": false

313}

314```

315 

316Um Auto-Memory über eine Umgebungsvariable zu deaktivieren, setzen Sie `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1`.

317 

318### Speicherort

319 

320Jedes Projekt erhält sein eigenes Memory-Verzeichnis unter `~/.claude/projects/<project>/memory/`. Der Pfad `<project>` wird aus dem Git-Repository abgeleitet, sodass alle Worktrees und Unterverzeichnisse innerhalb desselben Repos ein Auto-Memory-Verzeichnis teilen. Außerhalb eines Git-Repos wird stattdessen das Projektstammverzeichnis verwendet.

321 

322Um Auto-Memory an einem anderen Ort zu speichern, setzen Sie `autoMemoryDirectory` in Ihren Benutzereinstellungen unter `~/.claude/settings.json`:

323 

324```json theme={null}

325{

326 "autoMemoryDirectory": "~/my-custom-memory-dir"

327}

328```

329 

330Der Wert muss ein absoluter Pfad sein oder mit `~/` beginnen. Diese Einstellung wird von Richtlinien- und Benutzereinstellungen sowie vom Flag `--settings` akzeptiert. Sie wird nicht von Projekt- oder lokalen Einstellungen akzeptiert, da beide Dateien im Projektverzeichnis gespeichert sind und ein geklontes Repository entweder zum Umleiten von Auto-Memory-Schreibvorgängen an sensible Orte bereitstellen könnte.

331 

332Das Verzeichnis enthält einen `MEMORY.md`-Einstiegspunkt und optionale Themadateien:

333 

334```text theme={null}

335~/.claude/projects/<project>/memory/

336├── MEMORY.md # Prägnanter Index, geladen in jede Sitzung

337├── debugging.md # Detaillierte Notizen zu Debugging-Mustern

338├── api-conventions.md # API-Design-Entscheidungen

339└── ... # Alle anderen Themadateien, die Claude erstellt

340```

341 

342`MEMORY.md` fungiert als Index des Memory-Verzeichnisses. Claude liest und schreibt Dateien in diesem Verzeichnis während Ihrer Sitzung und verwendet `MEMORY.md`, um den Überblick zu behalten, was wo gespeichert ist.

343 

344Auto-Memory ist maschinenlokal. Alle Worktrees und Unterverzeichnisse innerhalb desselben Git-Repositories teilen ein Auto-Memory-Verzeichnis. Dateien werden nicht über Maschinen oder Cloud-Umgebungen hinweg geteilt.

345 

346### Wie es funktioniert

347 

348Die ersten 200 Zeilen von `MEMORY.md`, oder die ersten 25 KB, je nachdem, was zuerst erreicht wird, werden zu Beginn jeder Konversation geladen. Inhalte über diese Schwelle hinaus werden nicht beim Sitzungsstart geladen. Claude hält `MEMORY.md` prägnant, indem es detaillierte Notizen in separate Themadateien verschiebt.

349 

350Diese Grenze gilt nur für `MEMORY.md`. CLAUDE.md-Dateien werden unabhängig von der Länge vollständig geladen, obwohl kürzere Dateien bessere Einhaltung erzeugen.

351 

352Themadateien wie `debugging.md` oder `patterns.md` werden nicht beim Start geladen. Claude liest sie bei Bedarf mit seinen Standard-Datei-Tools, wenn es die Informationen benötigt.

353 

354Claude liest und schreibt Memory-Dateien während Ihrer Sitzung. Wenn Sie „Writing memory" oder „Recalled memory" in der Claude Code-Schnittstelle sehen, aktualisiert oder liest Claude aktiv aus `~/.claude/projects/<project>/memory/`.

355 

356### Überprüfen und bearbeiten Sie Ihr Memory

357 

358Auto-Memory-Dateien sind einfaches Markdown, das Sie jederzeit bearbeiten oder löschen können. Führen Sie [`/memory`](#view-and-edit-with-memory) aus, um Memory-Dateien innerhalb einer Sitzung zu durchsuchen und zu öffnen.

359 

360## Anzeigen und Bearbeiten mit `/memory`

361 

362Der Befehl `/memory` listet alle CLAUDE.md-, CLAUDE.local.md- und Regelsdateien auf, die in Ihrer aktuellen Sitzung geladen sind, ermöglicht es Ihnen, Auto-Memory ein- oder auszuschalten, und bietet einen Link zum Öffnen des Auto-Memory-Ordners. Wählen Sie eine beliebige Datei aus, um sie in Ihrem Editor zu öffnen.

363 

364Wenn Sie Claude bitten, sich etwas zu merken, wie „immer pnpm verwenden, nicht npm" oder „denken Sie daran, dass die API-Tests eine lokale Redis-Instanz erfordern", speichert Claude es in Auto-Memory. Um Anweisungen stattdessen zu CLAUDE.md hinzuzufügen, bitten Sie Claude direkt, wie „fügen Sie dies zu CLAUDE.md hinzu", oder bearbeiten Sie die Datei selbst über `/memory`.

365 

366## Fehlerbehebung bei Memory-Problemen

367 

368Dies sind die häufigsten Probleme mit CLAUDE.md und Auto-Memory, zusammen mit Schritten zum Debuggen.

369 

370### Claude folgt meiner CLAUDE.md nicht

371 

372CLAUDE.md-Inhalte werden als Benutzernachricht nach dem System-Prompt bereitgestellt, nicht als Teil des System-Prompts selbst. Claude liest ihn und versucht, ihm zu folgen, aber es gibt keine Garantie für strikte Einhaltung, besonders bei vagen oder widersprüchlichen Anweisungen.

373 

374Zum Debuggen:

375 

376* Führen Sie `/memory` aus, um zu überprüfen, dass Ihre CLAUDE.md- und CLAUDE.local.md-Dateien geladen werden. Wenn eine Datei nicht aufgelistet ist, kann Claude sie nicht sehen.

377* Überprüfen Sie, dass die relevante CLAUDE.md an einem Ort ist, der für Ihre Sitzung geladen wird (siehe [Wählen Sie, wo Sie CLAUDE.md-Dateien ablegen](#choose-where-to-put-claude-md-files)).

378* Machen Sie Anweisungen spezifischer. „Verwenden Sie 2-Leerzeichen-Einrückung" funktioniert besser als „formatieren Sie Code schön".

379* Suchen Sie nach widersprüchlichen Anweisungen über CLAUDE.md-Dateien hinweg. Wenn zwei Dateien unterschiedliche Anleitungen für das gleiche Verhalten geben, kann Claude eine willkürlich auswählen.

380 

381Für Anweisungen, die Sie auf System-Prompt-Ebene haben möchten, verwenden Sie [`--append-system-prompt`](/de/cli-reference#system-prompt-flags). Dies muss bei jeder Invokation übergeben werden, daher ist es besser für Skripte und Automatisierung als für interaktive Nutzung geeignet.

382 

383<Tip>

384 Verwenden Sie den [`InstructionsLoaded`-Hook](/de/hooks#instructionsloaded), um genau zu protokollieren, welche Anweisungsdateien geladen sind, wann sie geladen werden und warum. Dies ist nützlich zum Debuggen von pfadspezifischen Regeln oder Lazy-Loading-Dateien in Unterverzeichnissen.

385</Tip>

386 

387### Ich weiß nicht, was Auto-Memory gespeichert hat

388 

389Führen Sie `/memory` aus und wählen Sie den Auto-Memory-Ordner aus, um zu durchsuchen, was Claude gespeichert hat. Alles ist einfaches Markdown, das Sie lesen, bearbeiten oder löschen können.

390 

391### Meine CLAUDE.md ist zu groß

392 

393Dateien über 200 Zeilen verbrauchen mehr Kontext und können die Einhaltung reduzieren. Verwenden Sie [pfadgebundene Regeln](#path-specific-rules), um Anweisungen nur zu laden, wenn Claude mit übereinstimmenden Dateien arbeitet, oder trimmen Sie Inhalte, die nicht in jeder Sitzung benötigt werden. Das Aufteilen in [`@path`-Importe](#import-additional-files) hilft bei der Organisation, reduziert aber nicht den Kontext, da importierte Dateien beim Start geladen werden.

394 

395### Anweisungen scheinen nach `/compact` verloren zu gehen

396 

397Projekt-Root-CLAUDE.md übersteht Komprimierung: Nach `/compact` liest Claude sie neu von der Festplatte und injiziert sie frisch in die Sitzung. Verschachtelte CLAUDE.md-Dateien in Unterverzeichnissen werden nicht automatisch erneut injiziert; sie werden neu geladen, wenn Claude das nächste Mal eine Datei in diesem Unterverzeichnis liest.

398 

399Wenn eine Anweisung nach der Komprimierung verschwunden ist, wurde sie entweder nur in der Konversation gegeben oder befindet sich in einer verschachtelten CLAUDE.md, die noch nicht neu geladen wurde. Fügen Sie Anweisungen, die nur in der Konversation gegeben wurden, zu CLAUDE.md hinzu, um sie über Sitzungen hinweg zu erhalten. Weitere Informationen finden Sie unter [Was übersteht Komprimierung](/de/context-window#what-survives-compaction) für die vollständige Aufschlüsselung.

400 

401Weitere Informationen finden Sie unter [Schreiben Sie effektive Anweisungen](#write-effective-instructions) für Anleitungen zu Größe, Struktur und Spezifität.

402 

403## Verwandte Ressourcen

404 

405* [Debuggen Sie Ihre Konfiguration](/de/debug-your-config): Diagnostizieren Sie, warum CLAUDE.md oder Einstellungen nicht wirksam werden

406* [Skills](/de/skills): Verpacken Sie wiederholbare Workflows, die bei Bedarf geladen werden

407* [Einstellungen](/de/settings): Konfigurieren Sie Claude Code-Verhalten mit Einstellungsdateien

408* [Subagent-Memory](/de/sub-agents#enable-persistent-memory): Lassen Sie Subagents ihre eigene Auto-Memory pflegen

microsoft-foundry.md +314 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code auf Microsoft Foundry

6 

7> Erfahren Sie, wie Sie Claude Code über Microsoft Foundry konfigurieren, einschließlich Setup, Konfiguration und Fehlerbehebung.

8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79export const Experiment = ({flag, treatment, children}) => {

80 const VID_KEY = 'exp_vid';

81 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

82 const fnv1a = s => {

83 let h = 0x811c9dc5;

84 for (let i = 0; i < s.length; i++) {

85 h ^= s.charCodeAt(i);

86 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

87 }

88 return h >>> 0;

89 };

90 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

91 const [decision] = useState(() => {

92 const params = new URLSearchParams(location.search);

93 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

94 const force = params.get('gb-force');

95 if (force) {

96 for (const p of force.split(',')) {

97 const [k, v] = p.split(':');

98 if (k === flag) return {

99 variant: v || 'treatment',

100 track: false

101 };

102 }

103 }

104 if (navigator.globalPrivacyControl) {

105 return {

106 variant: 'control',

107 track: false

108 };

109 }

110 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

111 if (prefsMatch) {

112 try {

113 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

114 return {

115 variant: 'control',

116 track: false

117 };

118 }

119 } catch {

120 return {

121 variant: 'control',

122 track: false

123 };

124 }

125 } else {

126 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

127 if (!country || CONSENT_COUNTRIES.has(country)) {

128 return {

129 variant: 'control',

130 track: false

131 };

132 }

133 }

134 let vid;

135 try {

136 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

137 if (ajsMatch) {

138 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

139 } else {

140 vid = localStorage.getItem(VID_KEY);

141 if (!vid) {

142 vid = crypto.randomUUID();

143 }

144 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

145 }

146 try {

147 localStorage.setItem(VID_KEY, vid);

148 } catch {}

149 } catch {

150 return {

151 variant: 'control',

152 track: false

153 };

154 }

155 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

156 return {

157 variant,

158 track: true,

159 vid

160 };

161 });

162 useEffect(() => {

163 if (!decision.track) return;

164 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

165 method: 'POST',

166 headers: {

167 'Content-Type': 'application/json',

168 'x-service-name': 'claude_code_docs'

169 },

170 body: JSON.stringify({

171 events: [{

172 event_type: 'GrowthbookExperimentEvent',

173 event_data: {

174 device_id: decision.vid,

175 anonymous_id: decision.vid,

176 timestamp: new Date().toISOString(),

177 experiment_id: flag,

178 variation_id: decision.variant === 'treatment' ? 1 : 0,

179 environment: 'production'

180 }

181 }]

182 }),

183 keepalive: true

184 }).catch(() => {});

185 }, []);

186 return decision.variant === 'treatment' ? treatment : children;

187};

188 

189<Experiment flag="docs-contact-sales-cta" treatment={<ContactSalesCard surface="foundry" />} />

190 

191## Voraussetzungen

192 

193Bevor Sie Claude Code mit Microsoft Foundry konfigurieren, stellen Sie sicher, dass Sie über Folgendes verfügen:

194 

195* Ein Azure-Abonnement mit Zugriff auf Microsoft Foundry

196* RBAC-Berechtigungen zum Erstellen von Microsoft Foundry-Ressourcen und Bereitstellungen

197* Azure CLI installiert und konfiguriert (optional - nur erforderlich, wenn Sie keinen anderen Mechanismus zum Abrufen von Anmeldedaten haben)

198 

199<Note>

200 Wenn Sie Claude Code für mehrere Benutzer bereitstellen, [fixieren Sie Ihre Modellversionen](#4-pin-model-versions), um Fehler zu vermeiden, wenn Anthropic neue Modelle veröffentlicht.

201</Note>

202 

203## Setup

204 

205### 1. Microsoft Foundry-Ressource bereitstellen

206 

207Erstellen Sie zunächst eine Claude-Ressource in Azure:

208 

2091. Navigieren Sie zum [Microsoft Foundry-Portal](https://ai.azure.com/)

2102. Erstellen Sie eine neue Ressource und notieren Sie sich Ihren Ressourcennamen

2113. Erstellen Sie Bereitstellungen für die Claude-Modelle:

212 * Claude Opus

213 * Claude Sonnet

214 * Claude Haiku

215 

216### 2. Azure-Anmeldedaten konfigurieren

217 

218Claude Code unterstützt zwei Authentifizierungsmethoden für Microsoft Foundry. Wählen Sie die Methode, die Ihren Sicherheitsanforderungen am besten entspricht.

219 

220**Option A: API-Schlüssel-Authentifizierung**

221 

2221. Navigieren Sie zu Ihrer Ressource im Microsoft Foundry-Portal

2232. Gehen Sie zum Abschnitt **Endpunkte und Schlüssel**

2243. Kopieren Sie **API-Schlüssel**

2254. Legen Sie die Umgebungsvariable fest:

226 

227```bash theme={null}

228export ANTHROPIC_FOUNDRY_API_KEY=your-azure-api-key

229```

230 

231**Option B: Microsoft Entra ID-Authentifizierung**

232 

233Wenn `ANTHROPIC_FOUNDRY_API_KEY` nicht gesetzt ist, verwendet Claude Code automatisch die Azure SDK [Standard-Anmeldekette](https://learn.microsoft.com/en-us/azure/developer/javascript/sdk/authentication/credential-chains#defaultazurecredential-overview).

234Dies unterstützt eine Vielzahl von Methoden zur Authentifizierung lokaler und Remote-Workloads.

235 

236In lokalen Umgebungen können Sie häufig die Azure CLI verwenden:

237 

238```bash theme={null}

239az login

240```

241 

242<Note>

243 Bei Verwendung von Microsoft Foundry sind die Befehle `/login` und `/logout` deaktiviert, da die Authentifizierung über Azure-Anmeldedaten erfolgt.

244</Note>

245 

246### 3. Claude Code konfigurieren

247 

248Legen Sie die folgenden Umgebungsvariablen fest, um Microsoft Foundry zu aktivieren:

249 

250```bash theme={null}

251# Microsoft Foundry-Integration aktivieren

252export CLAUDE_CODE_USE_FOUNDRY=1

253 

254# Azure-Ressourcenname (ersetzen Sie {resource} durch Ihren Ressourcennamen)

255export ANTHROPIC_FOUNDRY_RESOURCE={resource}

256# Oder geben Sie die vollständige Basis-URL an:

257# export ANTHROPIC_FOUNDRY_BASE_URL=https://{resource}.services.ai.azure.com/anthropic

258```

259 

260### 4. Modellversionen fixieren

261 

262<Warning>

263 Fixieren Sie spezifische Modellversionen für jede Bereitstellung. Wenn Sie Modellaliase (`sonnet`, `opus`, `haiku`) ohne Fixierung verwenden, kann Claude Code versuchen, eine neuere Modellversion zu verwenden, die nicht in Ihrem Foundry-Konto verfügbar ist, was bestehende Benutzer bricht, wenn Anthropic Updates veröffentlicht. Wenn Sie Azure-Bereitstellungen erstellen, wählen Sie eine spezifische Modellversion anstelle von „automatisch auf die neueste Version aktualisieren".

264</Warning>

265 

266Legen Sie die Modellvariablen so fest, dass sie den Bereitstellungsnamen entsprechen, die Sie in Schritt 1 erstellt haben.

267 

268Ohne `ANTHROPIC_DEFAULT_OPUS_MODEL` wird der `opus`-Alias auf Foundry zu Opus 4.6 aufgelöst. Legen Sie ihn auf die Opus 4.7-ID fest, um das neueste Modell zu verwenden:

269 

270```bash theme={null}

271export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'

272export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'

273export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5'

274```

275 

276Aktuelle und ältere Modell-IDs finden Sie unter [Modellübersicht](https://platform.claude.com/docs/en/about-claude/models/overview). Siehe [Modellkonfiguration](/de/model-config#pin-models-for-third-party-deployments) für die vollständige Liste der Umgebungsvariablen.

277 

278[Prompt Caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) ist automatisch aktiviert. Um stattdessen eine 1-Stunden-Cache-TTL anstelle des 5-Minuten-Standards anzufordern, legen Sie die folgende Variable fest; Cache-Schreibvorgänge mit einer 1-Stunden-TTL werden mit einem höheren Satz abgerechnet:

279 

280```bash theme={null}

281export ENABLE_PROMPT_CACHING_1H=1

282```

283 

284## Azure RBAC-Konfiguration

285 

286Die Standardrollen `Azure AI User` und `Cognitive Services User` enthalten alle erforderlichen Berechtigungen zum Aufrufen von Claude-Modellen.

287 

288Für restriktivere Berechtigungen erstellen Sie eine benutzerdefinierte Rolle mit Folgendem:

289 

290```json theme={null}

291{

292 "permissions": [

293 {

294 "dataActions": [

295 "Microsoft.CognitiveServices/accounts/providers/*"

296 ]

297 }

298 ]

299}

300```

301 

302Weitere Informationen finden Sie in der [Microsoft Foundry RBAC-Dokumentation](https://learn.microsoft.com/en-us/azure/ai-foundry/concepts/rbac-azure-ai-foundry).

303 

304## Fehlerbehebung

305 

306Wenn Sie einen Fehler erhalten „Failed to get token from azureADTokenProvider: ChainedTokenCredential authentication failed":

307 

308* Konfigurieren Sie Entra ID in der Umgebung, oder legen Sie `ANTHROPIC_FOUNDRY_API_KEY` fest.

309 

310## Zusätzliche Ressourcen

311 

312* [Microsoft Foundry-Dokumentation](https://learn.microsoft.com/en-us/azure/ai-foundry/what-is-azure-ai-foundry)

313* [Microsoft Foundry-Modelle](https://ai.azure.com/explore/models)

314* [Microsoft Foundry-Preise](https://azure.microsoft.com/en-us/pricing/details/ai-foundry/)

model-config.md +382 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Modellkonfiguration

6 

7> Erfahren Sie mehr über die Claude Code-Modellkonfiguration, einschließlich Modellaliase wie `opusplan`

8 

9## Verfügbare Modelle

10 

11Für die `model`-Einstellung in Claude Code können Sie konfigurieren:

12 

13* Einen **Modellalias**

14* Einen **Modellnamen**

15 * Anthropic API: Einen vollständigen **[Modellnamen](https://platform.claude.com/docs/de/about-claude/models/overview)**

16 * Bedrock: ein Inference-Profil-ARN

17 * Foundry: einen Bereitstellungsnamen

18 * Vertex: einen Versionsnamen

19 

20### Modellaliase

21 

22Modellaliase bieten eine bequeme Möglichkeit, Modelleinstellungen auszuwählen, ohne sich genaue Versionsnummern merken zu müssen:

23 

24| Modellalias | Verhalten |

25| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

26| **`default`** | Spezieller Wert, der jede Modellüberschreibung löscht und auf das empfohlene Modell für Ihren Kontotyp zurückgesetzt wird. Ist selbst kein Modellalias |

27| **`best`** | Verwendet das leistungsfähigste verfügbare Modell, derzeit gleichwertig mit `opus` |

28| **`sonnet`** | Verwendet das neueste Sonnet-Modell für tägliche Codierungsaufgaben |

29| **`opus`** | Verwendet das neueste Opus-Modell für komplexe Reasoning-Aufgaben |

30| **`haiku`** | Verwendet das schnelle und effiziente Haiku-Modell für einfache Aufgaben |

31| **`sonnet[1m]`** | Verwendet Sonnet mit einem [1-Million-Token-Kontextfenster](https://platform.claude.com/docs/de/build-with-claude/context-windows#1m-token-context-window) für lange Sitzungen |

32| **`opus[1m]`** | Verwendet Opus mit einem [1-Million-Token-Kontextfenster](https://platform.claude.com/docs/de/build-with-claude/context-windows#1m-token-context-window) für lange Sitzungen |

33| **`opusplan`** | Spezieller Modus, der `opus` während des Plan-Modus verwendet und dann zu `sonnet` für die Ausführung wechselt |

34 

35Bei der Anthropic API wird `opus` zu Opus 4.7 und `sonnet` zu Sonnet 4.6 aufgelöst. Bei Bedrock, Vertex und Foundry wird `opus` zu Opus 4.6 und `sonnet` zu Sonnet 4.5 aufgelöst; neuere Modelle sind bei diesen Anbietern verfügbar, indem Sie den vollständigen Modellnamen explizit auswählen oder `ANTHROPIC_DEFAULT_OPUS_MODEL` oder `ANTHROPIC_DEFAULT_SONNET_MODEL` setzen.

36 

37Aliase verweisen auf die empfohlene Version für Ihren Anbieter und werden im Laufe der Zeit aktualisiert. Um eine bestimmte Version zu fixieren, verwenden Sie den vollständigen Modellnamen (z. B. `claude-opus-4-7`) oder setzen Sie die entsprechende Umgebungsvariable wie `ANTHROPIC_DEFAULT_OPUS_MODEL`.

38 

39<Note>

40 Opus 4.7 erfordert Claude Code v2.1.111 oder später. Führen Sie `claude update` aus, um zu aktualisieren.

41</Note>

42 

43### Einstellung Ihres Modells

44 

45Sie können Ihr Modell auf mehrere Arten konfigurieren, aufgelistet nach Priorität:

46 

471. **Während der Sitzung** - Verwenden Sie `/model <alias|name>`, um sofort zu wechseln, oder führen Sie `/model` ohne Argument aus, um die Auswahl zu öffnen. Die Auswahl fordert zur Bestätigung auf, wenn das Gespräch vorherige Ausgaben hat, da die nächste Antwort den vollständigen Verlauf ohne zwischengespeicherten Kontext erneut liest

482. **Beim Start** - Starten Sie mit `claude --model <alias|name>`

493. **Umgebungsvariable** - Setzen Sie `ANTHROPIC_MODEL=<alias|name>`

504. **Einstellungen** - Konfigurieren Sie dauerhaft in Ihrer Einstellungsdatei mit dem `model`-Feld.

51 

52Ihre `/model`-Auswahl wird in den Benutzereinstellungen gespeichert und bleibt über Neustarts hinweg erhalten. Ab v2.1.117 schreibt Claude Code Ihre Auswahl auch in `.claude/settings.local.json`, wenn die `.claude/settings.json` des Projekts ein anderes Modell festlegt, damit sie nach einem Neustart in diesem Projekt weiterhin gilt. Verwaltete Einstellungen haben Vorrang und werden beim nächsten Start erneut angewendet.

53 

54Wenn das aktive Modell beim Start aus Projekt- oder verwalteten Einstellungen stammt und nicht aus Ihrer eigenen Auswahl, zeigt der Startheader an, welche Einstellungsdatei es festgelegt hat. Führen Sie `/model` aus, um es für die aktuelle Sitzung zu überschreiben.

55 

56Beispielverwendung:

57 

58```bash theme={null}

59# Mit Opus starten

60claude --model opus

61 

62# Während der Sitzung zu Sonnet wechseln

63/model sonnet

64```

65 

66Beispiel-Einstellungsdatei:

67 

68```json theme={null}

69{

70 "permissions": {

71 ...

72 },

73 "model": "opus"

74}

75```

76 

77## Modellauswahl einschränken

78 

79Enterprise-Administratoren können `availableModels` in [verwalteten oder Richtlinieneinstellungen](/de/settings#settings-files) verwenden, um einzuschränken, welche Modelle Benutzer auswählen können.

80 

81Wenn `availableModels` gesetzt ist, können Benutzer nicht über `/model`, das `--model`-Flag oder die `ANTHROPIC_MODEL`-Umgebungsvariable zu Modellen wechseln, die nicht in der Liste enthalten sind.

82 

83```json theme={null}

84{

85 "availableModels": ["sonnet", "haiku"]

86}

87```

88 

89### Standardmodell-Verhalten

90 

91Die Option „Standard" in der Modellauswahl wird von `availableModels` nicht beeinflusst. Sie bleibt immer verfügbar und stellt den Laufzeit-Standard des Systems dar, [basierend auf dem Abonnement-Tier des Benutzers](#default-model-setting).

92 

93Auch mit `availableModels: []` können Benutzer Claude Code weiterhin mit dem Standardmodell für ihren Tier verwenden.

94 

95### Kontrollieren Sie das Modell, auf dem Benutzer ausgeführt werden

96 

97Die `model`-Einstellung ist eine anfängliche Auswahl, keine Erzwingung. Sie legt fest, welches Modell aktiv ist, wenn eine Sitzung startet, aber Benutzer können weiterhin `/model` öffnen und „Standard" auswählen, das unabhängig davon auf den Systemstandard für ihren Tier aufgelöst wird, was `model` gesetzt ist.

98 

99Um die Modellerfahrung vollständig zu kontrollieren, kombinieren Sie drei Einstellungen:

100 

101* **`availableModels`**: schränkt ein, welche benannten Modelle Benutzer wechseln können

102* **`model`**: legt die anfängliche Modellauswahl fest, wenn eine Sitzung startet

103* **`ANTHROPIC_DEFAULT_SONNET_MODEL`** / **`ANTHROPIC_DEFAULT_OPUS_MODEL`** / **`ANTHROPIC_DEFAULT_HAIKU_MODEL`**: steuern, worauf sich die Option „Standard" und die Aliase `sonnet`, `opus` und `haiku` auflösen

104 

105Dieses Beispiel startet Benutzer auf Sonnet 4.5, begrenzt die Auswahl auf Sonnet und Haiku und fixiert „Standard" auf Sonnet 4.5 statt auf die neueste Version:

106 

107```json theme={null}

108{

109 "model": "claude-sonnet-4-5",

110 "availableModels": ["claude-sonnet-4-5", "haiku"],

111 "env": {

112 "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-5"

113 }

114}

115```

116 

117Ohne den `env`-Block würde ein Benutzer, der „Standard" in der Auswahl auswählt, die neueste Sonnet-Version erhalten und damit die Versionsfixierung in `model` und `availableModels` umgehen.

118 

119### Merge-Verhalten

120 

121Wenn `availableModels` auf mehreren Ebenen gesetzt ist, z. B. in Benutzereinstellungen und Projekteinstellungen, werden Arrays zusammengeführt und dedupliziert. Um eine strikte Zulassungsliste durchzusetzen, setzen Sie `availableModels` in verwalteten oder Richtlinieneinstellungen, die die höchste Priorität haben.

122 

123### Mantle-Modell-IDs

124 

125Wenn der [Bedrock Mantle-Endpunkt](/de/amazon-bedrock#use-the-mantle-endpoint) aktiviert ist, werden Einträge in `availableModels`, die mit `anthropic.` beginnen, als benutzerdefinierte Optionen zur `/model`-Auswahl hinzugefügt und zum Mantle-Endpunkt weitergeleitet. Dies ist eine Ausnahme zu der in [Modelle für Drittanbieter-Bereitstellungen fixieren](#pin-models-for-third-party-deployments) beschriebenen Alias-Only-Übereinstimmung. Die Einstellung schränkt die Auswahl weiterhin auf aufgelistete Einträge ein, daher fügen Sie die Standard-Aliase zusammen mit allen Mantle-IDs ein.

126 

127## Spezielles Modellverhalten

128 

129### `default`-Modelleinstellung

130 

131Das Verhalten von `default` hängt von Ihrem Kontotyp ab:

132 

133* **Max und Team Premium**: Standard ist Opus 4.7

134* **Pro, Team Standard, Enterprise und Anthropic API**: Standard ist Sonnet 4.6

135* **Bedrock, Vertex und Foundry**: Standard ist Sonnet 4.5

136 

137Claude Code kann automatisch auf Sonnet zurückfallen, wenn Sie einen Nutzungsschwellenwert mit Opus erreichen.

138 

139<Note>

140 Am 23. April 2026 wird das Standardmodell für Enterprise-Pay-as-you-go- und Anthropic-API-Benutzer zu Opus 4.7 geändert. Um einen anderen Standard beizubehalten, setzen Sie `ANTHROPIC_MODEL` oder das `model`-Feld in [Server-verwalteten Einstellungen](/de/server-managed-settings).

141</Note>

142 

143### `opusplan`-Modelleinstellung

144 

145Der `opusplan`-Modellalias bietet einen automatisierten Hybrid-Ansatz:

146 

147* **Im Plan-Modus** - Verwendet `opus` für komplexes Reasoning und Architekturentscheidungen

148* **Im Ausführungsmodus** - Wechselt automatisch zu `sonnet` für Code-Generierung und Implementierung

149 

150Dies gibt Ihnen das Beste aus beiden Welten: Opus's überlegenes Reasoning für die Planung und Sonnets Effizienz für die Ausführung.

151 

152Die Plan-Modus-Opus-Phase wird mit dem Standard-200K-Kontextfenster ausgeführt. Die in [Erweiterter Kontext](#extended-context) beschriebene automatische 1M-Aktualisierung gilt für die `opus`-Modelleinstellung und erstreckt sich nicht auf `opusplan`.

153 

154### Anpassung des Aufwandsniveaus

155 

156[Aufwandsniveaus](https://platform.claude.com/docs/de/build-with-claude/effort) steuern adaptives Reasoning, das das Modell entscheiden lässt, ob und wie viel es bei jedem Schritt basierend auf der Aufgabenkomplexität denken soll. Niedrigerer Aufwand ist schneller und günstiger für unkomplizierte Aufgaben, während höherer Aufwand tieferes Reasoning für komplexe Probleme bietet.

157 

158Aufwand wird auf Opus 4.7, Opus 4.6 und Sonnet 4.6 unterstützt. Die verfügbaren Ebenen hängen vom Modell ab:

159 

160| Modell | Ebenen |

161| :---------------------- | :-------------------------------------- |

162| Opus 4.7 | `low`, `medium`, `high`, `xhigh`, `max` |

163| Opus 4.6 und Sonnet 4.6 | `low`, `medium`, `high`, `max` |

164 

165Wenn Sie eine Ebene setzen, die das aktive Modell nicht unterstützt, greift Claude Code auf die höchste unterstützte Ebene bei oder unter der von Ihnen gesetzten zurück. Zum Beispiel wird `xhigh` auf Opus 4.6 als `high` ausgeführt.

166 

167Ab v2.1.117 ist der Standard-Aufwand `xhigh` auf Opus 4.7 und `high` auf Opus 4.6 und Sonnet 4.6.

168 

169Wenn Sie Opus 4.7 zum ersten Mal ausführen, wendet Claude Code `xhigh` an, auch wenn Sie zuvor ein anderes Aufwandsniveau für Opus 4.6 oder Sonnet 4.6 gesetzt haben. Führen Sie `/effort` erneut aus, um nach dem Wechsel ein anderes Niveau zu wählen.

170 

171`low`, `medium`, `high` und `xhigh` bleiben über Sitzungen hinweg erhalten. `max` bietet das tiefste Reasoning ohne Einschränkung bei der Token-Ausgabe und gilt nur für die aktuelle Sitzung, außer wenn es über die `CLAUDE_CODE_EFFORT_LEVEL`-Umgebungsvariable gesetzt wird.

172 

173#### Wählen Sie ein Aufwandsniveau

174 

175Jede Ebene tauscht Token-Ausgabe gegen Fähigkeit. Der Standard eignet sich für die meisten Codierungsaufgaben; passen Sie an, wenn Sie ein anderes Gleichgewicht wünschen.

176 

177| Ebene | Wann man es verwendet |

178| :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- |

179| `low` | Reservieren Sie für kurze, begrenzte, latenzempfindliche Aufgaben, die nicht intelligenzempfindlich sind |

180| `medium` | Reduziert Token-Nutzung für kostensensitive Arbeiten, die etwas Intelligenz opfern können |

181| `high` | Balanciert Token-Nutzung und Intelligenz. Verwenden Sie als Minimum für intelligenzempfindliche Arbeiten oder um Token-Ausgabe relativ zu `xhigh` zu reduzieren |

182| `xhigh` | Beste Ergebnisse für die meisten Codierungs- und Agentenaufgaben. Empfohlener Standard bei Opus 4.7 |

183| `max` | Kann die Leistung bei anspruchsvollen Aufgaben verbessern, kann aber abnehmende Erträge zeigen und ist anfällig für Überdenken. Testen Sie vor breiter Übernahme |

184 

185Die Aufwandsskala ist pro Modell kalibriert, daher stellt der gleiche Ebenenname nicht den gleichen zugrunde liegenden Wert über Modelle hinweg dar.

186 

187Für einmaliges tiefes Reasoning ohne Änderung Ihrer Sitzungseinstellung fügen Sie „ultrathink" in Ihren Prompt ein. Dies fügt eine In-Context-Anweisung hinzu, die das Modell anweist, bei diesem Durchgang mehr zu denken; es ändert nicht das an die API gesendete Aufwandsniveau.

188 

189#### Setzen Sie das Aufwandsniveau

190 

191Sie können Aufwand durch eine der folgenden Methoden ändern:

192 

193* **`/effort`**: Führen Sie `/effort` ohne Argumente aus, um einen interaktiven Schieberegler zu öffnen, `/effort` gefolgt von einem Ebenennamen, um ihn direkt zu setzen, oder `/effort auto`, um auf den Modellstandard zurückzusetzen

194* **In `/model`**: Verwenden Sie die Pfeiltasten nach links/rechts, um den Aufwand-Schieberegler anzupassen, wenn Sie ein Modell auswählen

195* **`--effort`-Flag**: Übergeben Sie einen Ebenennamen, um ihn für eine einzelne Sitzung beim Starten von Claude Code zu setzen

196* **Umgebungsvariable**: Setzen Sie `CLAUDE_CODE_EFFORT_LEVEL` auf einen Ebenennamen oder `auto`

197* **Einstellungen**: Setzen Sie `effortLevel` in Ihrer Einstellungsdatei

198* **Skill- und Subagent-Frontmatter**: Setzen Sie `effort` in einer [Skill](/de/skills#frontmatter-reference)- oder [Subagent](/de/sub-agents#supported-frontmatter-fields)-Markdown-Datei, um das Aufwandsniveau zu überschreiben, wenn dieser Skill oder Subagent ausgeführt wird

199 

200Die Umgebungsvariable hat Vorrang vor allen anderen Methoden, dann Ihre konfigurierte Ebene, dann der Modellstandard. Frontmatter-Aufwand gilt, wenn dieser Skill oder Subagent aktiv ist, und überschreibt die Sitzungsebene, aber nicht die Umgebungsvariable.

201 

202Der Aufwand-Schieberegler erscheint in `/model`, wenn ein unterstütztes Modell ausgewählt ist. Das aktuelle Aufwandsniveau wird auch neben dem Logo und dem Spinner angezeigt, z. B. „with low effort", damit Sie bestätigen können, welche Einstellung aktiv ist, ohne `/model` zu öffnen.

203 

204#### Adaptives Reasoning und feste Thinking-Budgets

205 

206Adaptives Reasoning macht Thinking bei jedem Schritt optional, daher kann Claude schneller auf Routine-Prompts reagieren und tieferes Denken für Schritte reservieren, die davon profitieren. Wenn Sie möchten, dass Claude häufiger oder seltener denkt als das aktuelle Niveau erzeugt, können Sie dies direkt in Ihrem Prompt oder in `CLAUDE.md` sagen; das Modell reagiert auf diese Anleitung innerhalb seiner Aufwandseinstellung.

207 

208Opus 4.7 verwendet immer adaptives Reasoning. Der Modus mit festem Thinking-Budget und `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` gelten nicht dafür.

209 

210Bei Opus 4.6 und Sonnet 4.6 können Sie `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` setzen, um zum vorherigen festen Thinking-Budget zurückzukehren, das von `MAX_THINKING_TOKENS` gesteuert wird. Siehe [Umgebungsvariablen](/de/env-vars).

211 

212### Erweiterter Kontext

213 

214Opus 4.7, Opus 4.6 und Sonnet 4.6 unterstützen ein [1-Million-Token-Kontextfenster](https://platform.claude.com/docs/de/build-with-claude/context-windows#1m-token-context-window) für lange Sitzungen mit großen Codebases.

215 

216Die Verfügbarkeit variiert je nach Modell und Plan. Bei Max-, Team- und Enterprise-Plänen wird Opus automatisch auf 1M-Kontext ohne zusätzliche Konfiguration aktualisiert. Dies gilt für beide Team Standard- und Team Premium-Plätze.

217 

218| Plan | Opus mit 1M-Kontext | Sonnet mit 1M-Kontext |

219| ------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ |

220| Max, Team und Enterprise | Im Abonnement enthalten | Erfordert [zusätzliche Nutzung](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

221| Pro | Erfordert [zusätzliche Nutzung](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) | Erfordert [zusätzliche Nutzung](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

222| API und Pay-as-you-go | Vollständiger Zugriff | Vollständiger Zugriff |

223 

224Um 1M-Kontext vollständig zu deaktivieren, setzen Sie `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`. Dies entfernt 1M-Modellvarianten aus der Modellauswahl. Siehe [Umgebungsvariablen](/de/env-vars).

225 

226Das 1M-Kontextfenster verwendet Standard-Modellpreise ohne Aufschlag für Token über 200K. Für Pläne, bei denen erweiterter Kontext in Ihrem Abonnement enthalten ist, bleibt die Nutzung von Ihrem Abonnement abgedeckt. Für Pläne, die über zusätzliche Nutzung auf erweiterten Kontext zugreifen, werden Token zur zusätzlichen Nutzung abgerechnet.

227 

228Wenn Ihr Konto 1M-Kontext unterstützt, erscheint die Option in der Modellauswahl (`/model`) in den neuesten Versionen von Claude Code. Wenn Sie sie nicht sehen, versuchen Sie, Ihre Sitzung neu zu starten.

229 

230Sie können auch das `[1m]`-Suffix mit Modellaliasen oder vollständigen Modellnamen verwenden:

231 

232```bash theme={null}

233# Verwenden Sie den opus[1m]- oder sonnet[1m]-Alias

234/model opus[1m]

235/model sonnet[1m]

236 

237# Oder fügen Sie [1m] an einen vollständigen Modellnamen an

238/model claude-opus-4-7[1m]

239```

240 

241## Überprüfung Ihres aktuellen Modells

242 

243Sie können sehen, welches Modell Sie derzeit verwenden, auf mehrere Arten:

244 

2451. In der [Statuszeile](/de/statusline) (falls konfiguriert)

2462. In `/status`, das auch Ihre Kontoinformationen anzeigt.

247 

248## Benutzerdefinierte Modelloption hinzufügen

249 

250Verwenden Sie `ANTHROPIC_CUSTOM_MODEL_OPTION`, um einen einzelnen benutzerdefinierten Eintrag zur `/model`-Auswahl hinzuzufügen, ohne die integrierten Aliase zu ersetzen. Dies ist nützlich zum Testen von Modell-IDs, die Claude Code standardmäßig nicht auflistet. Für LLM-Gateway-Bereitstellungen füllt Claude Code die Auswahl automatisch vom `/v1/models`-Endpunkt des Gateways auf, daher ist diese Variable nur erforderlich, wenn die Erkennung das gewünschte Modell nicht zurückgibt. Siehe [LLM-Gateway-Modellauswahl](/de/llm-gateway#model-selection).

251 

252Dieses Beispiel setzt alle drei Variablen, um eine Gateway-gesteuerte Opus-Bereitstellung auswählbar zu machen:

253 

254```bash theme={null}

255export ANTHROPIC_CUSTOM_MODEL_OPTION="my-gateway/claude-opus-4-7"

256export ANTHROPIC_CUSTOM_MODEL_OPTION_NAME="Opus via Gateway"

257export ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION="Custom deployment routed through the internal LLM gateway"

258```

259 

260Der benutzerdefinierte Eintrag erscheint am unteren Ende der `/model`-Auswahl. `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` und `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` sind optional. Wenn weggelassen, wird die Modell-ID als Name verwendet und die Beschreibung wird standardmäßig auf `Custom model (<model-id>)` gesetzt.

261 

262Claude Code überspringt die Validierung für die Modell-ID, die in `ANTHROPIC_CUSTOM_MODEL_OPTION` gesetzt ist, daher können Sie jeden String verwenden, den Ihr API-Endpunkt akzeptiert.

263 

264## Umgebungsvariablen

265 

266Sie können die folgenden Umgebungsvariablen verwenden, die vollständige **Modellnamen** (oder Äquivalente für Ihren API-Anbieter) sein müssen, um die Modellnamen zu steuern, auf die die Aliase verweisen.

267 

268| Umgebungsvariable | Beschreibung |

269| -------------------------------- | --------------------------------------------------------------------------------------------------------------------- |

270| `ANTHROPIC_DEFAULT_OPUS_MODEL` | Das Modell, das für `opus` verwendet werden soll, oder für `opusplan`, wenn Plan Mode aktiv ist. |

271| `ANTHROPIC_DEFAULT_SONNET_MODEL` | Das Modell, das für `sonnet` verwendet werden soll, oder für `opusplan`, wenn Plan Mode nicht aktiv ist. |

272| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Das Modell, das für `haiku` verwendet werden soll, oder [Hintergrundfunktionalität](/de/costs#background-token-usage) |

273| `CLAUDE_CODE_SUBAGENT_MODEL` | Das Modell, das für [Subagents](/de/sub-agents) verwendet werden soll |

274 

275Hinweis: `ANTHROPIC_SMALL_FAST_MODEL` ist veraltet zugunsten von `ANTHROPIC_DEFAULT_HAIKU_MODEL`.

276 

277### Modelle für Drittanbieter-Bereitstellungen fixieren

278 

279Beim Bereitstellen von Claude Code über [Bedrock](/de/amazon-bedrock), [Vertex AI](/de/google-vertex-ai) oder [Foundry](/de/microsoft-foundry) sollten Sie Modellversionen vor dem Rollout für Benutzer fixieren.

280 

281Ohne Fixierung verwendet Claude Code Modellaliase (`sonnet`, `opus`, `haiku`), die zur neuesten Version aufgelöst werden. Wenn Anthropic ein neues Modell veröffentlicht, das noch nicht in einem Benutzerkonto aktiviert ist, sehen Bedrock- und Vertex AI-Benutzer einen Hinweis und greifen für diese Sitzung auf die vorherige Version zurück, während Foundry-Benutzer Fehler sehen, da Foundry keine entsprechende Startprüfung hat.

282 

283<Warning>

284 Setzen Sie alle drei Modell-Umgebungsvariablen auf spezifische Versions-IDs als Teil Ihres anfänglichen Setups. Das Fixieren ermöglicht es Ihnen, zu kontrollieren, wann Ihre Benutzer zu einem neuen Modell wechseln.

285</Warning>

286 

287Verwenden Sie die folgenden Umgebungsvariablen mit versionsspezifischen Modell-IDs für Ihren Anbieter:

288 

289| Anbieter | Beispiel |

290| :-------- | :------------------------------------------------------------------- |

291| Bedrock | `export ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-7'` |

292| Vertex AI | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'` |

293| Foundry | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'` |

294 

295Wenden Sie das gleiche Muster auf `ANTHROPIC_DEFAULT_SONNET_MODEL` und `ANTHROPIC_DEFAULT_HAIKU_MODEL` an. Für aktuelle und ältere Modell-IDs über alle Anbieter hinweg siehe [Modellübersicht](https://platform.claude.com/docs/de/about-claude/models/overview). Um Benutzer auf eine neue Modellversion zu aktualisieren, aktualisieren Sie diese Umgebungsvariablen und stellen Sie erneut bereit.

296 

297Um [erweiterten Kontext](#extended-context) für ein fixiertes Modell zu aktivieren, fügen Sie `[1m]` an die Modell-ID in `ANTHROPIC_DEFAULT_OPUS_MODEL` oder `ANTHROPIC_DEFAULT_SONNET_MODEL` an:

298 

299```bash theme={null}

300export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7[1m]'

301```

302 

303Das `[1m]`-Suffix wendet das 1M-Kontextfenster auf alle Verwendungen dieses Alias an, einschließlich `opusplan`. Claude Code entfernt das Suffix, bevor die Modell-ID an Ihren Anbieter gesendet wird. Fügen Sie `[1m]` nur an, wenn das zugrunde liegende Modell 1M-Kontext unterstützt, z. B. Opus 4.7 oder Sonnet 4.6.

304 

305<Note>

306 Die `settings.availableModels`-Zulassungsliste gilt weiterhin bei Verwendung von Drittanbieter-Anbietern. Die Filterung stimmt mit dem Modellalias (`opus`, `sonnet`, `haiku`) überein, nicht mit der anbieterspezifischen Modell-ID.

307</Note>

308 

309### Anzeige und Funktionen des fixierten Modells anpassen

310 

311Wenn Sie ein Modell bei einem Drittanbieter fixieren, erscheint die anbieterspezifische ID in der `/model`-Auswahl und Claude Code erkennt möglicherweise nicht, welche Funktionen das Modell unterstützt. Sie können den Anzeigenamen und die deklarierten Funktionen mit Begleit-Umgebungsvariablen für jedes fixierte Modell überschreiben.

312 

313Diese Variablen wirken sich auf Drittanbieter wie Bedrock, Vertex AI und Foundry aus. Die Variablen `_NAME` und `_DESCRIPTION` wirken sich auch aus, wenn `ANTHROPIC_BASE_URL` auf ein [LLM-Gateway](/de/llm-gateway) verweist. Sie haben keine Auswirkung bei direkter Verbindung zu `api.anthropic.com`.

314 

315| Umgebungsvariable | Beschreibung |

316| ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |

317| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | Anzeigename für das fixierte Opus-Modell in der `/model`-Auswahl. Standardmäßig die Modell-ID, wenn nicht gesetzt |

318| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Anzeige-Beschreibung für das fixierte Opus-Modell in der `/model`-Auswahl. Standardmäßig `Custom Opus model`, wenn nicht gesetzt |

319| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Komma-getrennte Liste der Funktionen, die das fixierte Opus-Modell unterstützt |

320 

321Die gleichen `_NAME`-, `_DESCRIPTION`- und `_SUPPORTED_CAPABILITIES`-Suffixe sind für `ANTHROPIC_DEFAULT_SONNET_MODEL`, `ANTHROPIC_DEFAULT_HAIKU_MODEL` und `ANTHROPIC_CUSTOM_MODEL_OPTION` verfügbar.

322 

323Claude Code aktiviert Funktionen wie [Aufwandsniveaus](#adjust-effort-level) und [erweitertes Denken](/de/common-workflows#use-extended-thinking-thinking-mode) durch Abgleich der Modell-ID mit bekannten Mustern. Anbieterspezifische IDs wie Bedrock-ARNs oder benutzerdefinierte Bereitstellungsnamen stimmen oft nicht mit diesen Mustern überein, wodurch unterstützte Funktionen deaktiviert bleiben. Setzen Sie `_SUPPORTED_CAPABILITIES`, um Claude Code mitzuteilen, welche Funktionen das Modell tatsächlich unterstützt:

324 

325| Funktionswert | Aktiviert |

326| ---------------------- | -------------------------------------------------------------------------------------------- |

327| `effort` | [Aufwandsniveaus](#adjust-effort-level) und der `/effort`-Befehl |

328| `xhigh_effort` | {/* min-version: 2.1.111 */}Das `xhigh`-Aufwandsniveau |

329| `max_effort` | Das `max`-Aufwandsniveau |

330| `thinking` | [Erweitertes Denken](/de/common-workflows#use-extended-thinking-thinking-mode) |

331| `adaptive_thinking` | Adaptives Reasoning, das das Denken dynamisch basierend auf der Aufgabenkomplexität zuordnet |

332| `interleaved_thinking` | Denken zwischen Tool-Aufrufen |

333 

334Wenn `_SUPPORTED_CAPABILITIES` gesetzt ist, werden aufgelistete Funktionen aktiviert und nicht aufgelistete Funktionen werden für das entsprechende fixierte Modell deaktiviert. Wenn die Variable nicht gesetzt ist, greift Claude Code auf die integrierte Erkennung basierend auf der Modell-ID zurück.

335 

336Dieses Beispiel fixiert Opus auf ein benutzerdefiniertes Bedrock-Modell-ARN, setzt einen benutzerfreundlichen Namen und deklariert seine Funktionen:

337 

338```bash theme={null}

339export ANTHROPIC_DEFAULT_OPUS_MODEL='arn:aws:bedrock:us-east-1:123456789012:custom-model/abc'

340export ANTHROPIC_DEFAULT_OPUS_MODEL_NAME='Opus via Bedrock'

341export ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION='Opus 4.7 routed through a Bedrock custom endpoint'

342export ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES='effort,xhigh_effort,max_effort,thinking,adaptive_thinking,interleaved_thinking'

343```

344 

345### Modell-IDs pro Version überschreiben

346 

347Die oben genannten Umgebungsvariablen auf Familienebene konfigurieren eine Modell-ID pro Familienalias. Wenn Sie mehrere Versionen innerhalb der gleichen Familie auf unterschiedliche Anbieter-IDs abbilden müssen, verwenden Sie stattdessen die `modelOverrides`-Einstellung.

348 

349`modelOverrides` ordnet einzelne Anthropic-Modell-IDs den anbieterspezifischen Strings zu, die Claude Code an die API Ihres Anbieters sendet. Wenn ein Benutzer ein zugeordnetes Modell in der `/model`-Auswahl auswählt, verwendet Claude Code Ihren konfigurierten Wert anstelle des integrierten Standards.

350 

351Dies ermöglicht es Enterprise-Administratoren, jede Modellversion zu einem bestimmten Bedrock-Inference-Profil-ARN, Vertex AI-Versionsnamen oder Foundry-Bereitstellungsnamen für Governance, Kostenzuteilung oder regionales Routing zu leiten.

352 

353Setzen Sie `modelOverrides` in Ihrer [Einstellungsdatei](/de/settings#settings-files):

354 

355```json theme={null}

356{

357 "modelOverrides": {

358 "claude-opus-4-7": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-prod",

359 "claude-opus-4-6": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-46-prod",

360 "claude-sonnet-4-6": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/sonnet-prod"

361 }

362}

363```

364 

365Schlüssel müssen Anthropic-Modell-IDs sein, wie in der [Modellübersicht](https://platform.claude.com/docs/de/about-claude/models/overview) aufgelistet. Für datierte Modell-IDs fügen Sie das Datumssuffix genau so ein, wie es dort angezeigt wird. Unbekannte Schlüssel werden ignoriert.

366 

367Überschreibungen ersetzen die integrierten Modell-IDs, die jeden Eintrag in der `/model`-Auswahl unterstützen. Bei Bedrock haben Überschreibungen Vorrang vor allen Inference-Profilen, die Claude Code beim Start automatisch erkennt. Werte, die Sie direkt über `ANTHROPIC_MODEL`, `--model` oder die `ANTHROPIC_DEFAULT_*_MODEL`-Umgebungsvariablen bereitstellen, werden unverändert an den Anbieter übergeben und werden nicht durch `modelOverrides` transformiert.

368 

369`modelOverrides` funktioniert zusammen mit `availableModels`. Die Zulassungsliste wird gegen die Anthropic-Modell-ID ausgewertet, nicht gegen den Überschreibungswert, daher ein Eintrag wie `"opus"` in `availableModels` stimmt weiterhin überein, auch wenn Opus-Versionen ARNs zugeordnet sind.

370 

371### Prompt-Caching-Konfiguration

372 

373Claude Code verwendet automatisch [Prompt-Caching](https://platform.claude.com/docs/de/build-with-claude/prompt-caching), um die Leistung zu optimieren und Kosten zu senken. Sie können Prompt-Caching global oder für bestimmte Modell-Tiers deaktivieren:

374 

375| Umgebungsvariable | Beschreibung |

376| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |

377| `DISABLE_PROMPT_CACHING` | Setzen Sie auf `1`, um Prompt-Caching für alle Modelle zu deaktivieren (hat Vorrang vor modellspezifischen Einstellungen) |

378| `DISABLE_PROMPT_CACHING_HAIKU` | Setzen Sie auf `1`, um Prompt-Caching nur für Haiku-Modelle zu deaktivieren |

379| `DISABLE_PROMPT_CACHING_SONNET` | Setzen Sie auf `1`, um Prompt-Caching nur für Sonnet-Modelle zu deaktivieren |

380| `DISABLE_PROMPT_CACHING_OPUS` | Setzen Sie auf `1`, um Prompt-Caching nur für Opus-Modelle zu deaktivieren |

381 

382Diese Umgebungsvariablen geben Ihnen eine feinkörnige Kontrolle über das Prompt-Caching-Verhalten. Die globale `DISABLE_PROMPT_CACHING`-Einstellung hat Vorrang vor den modellspezifischen Einstellungen, sodass Sie alle Caching schnell deaktivieren können, wenn nötig. Die modellspezifischen Einstellungen sind nützlich für selektive Kontrolle, z. B. beim Debuggen bestimmter Modelle oder bei der Arbeit mit Cloud-Anbietern, die möglicherweise unterschiedliche Caching-Implementierungen haben.

monitoring-usage.md +955 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Überwachung

6 

7> Erfahren Sie, wie Sie OpenTelemetry für Claude Code aktivieren und konfigurieren.

8 

9Verfolgen Sie die Nutzung, Kosten und Toolaktivität von Claude Code in Ihrer Organisation, indem Sie Telemetriedaten über OpenTelemetry (OTel) exportieren. Claude Code exportiert Metriken als Zeitreihendaten über das Standard-Metriken-Protokoll, Ereignisse über das Logs/Events-Protokoll und optional verteilte Traces über das [Traces-Protokoll](#traces-beta). Konfigurieren Sie Ihre Metriken-, Logs- und Traces-Backends, um Ihre Überwachungsanforderungen zu erfüllen.

10 

11## Schnellstart

12 

13Konfigurieren Sie OpenTelemetry mit Umgebungsvariablen:

14 

15```bash theme={null}

16# 1. Telemetrie aktivieren

17export CLAUDE_CODE_ENABLE_TELEMETRY=1

18 

19# 2. Exporter auswählen (beide sind optional - konfigurieren Sie nur das, was Sie benötigen)

20export OTEL_METRICS_EXPORTER=otlp # Optionen: otlp, prometheus, console, none

21export OTEL_LOGS_EXPORTER=otlp # Optionen: otlp, console, none

22 

23# 3. OTLP-Endpunkt konfigurieren (für OTLP-Exporter)

24export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

25export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

26 

27# 4. Authentifizierung festlegen (falls erforderlich)

28export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer your-token"

29 

30# 5. Zum Debuggen: Exportintervalle reduzieren

31export OTEL_METRIC_EXPORT_INTERVAL=10000 # 10 Sekunden (Standard: 60000ms)

32export OTEL_LOGS_EXPORT_INTERVAL=5000 # 5 Sekunden (Standard: 5000ms)

33 

34# 6. Claude Code ausführen

35claude

36```

37 

38<Note>

39 Die Standard-Exportintervalle betragen 60 Sekunden für Metriken und 5 Sekunden für Logs. Während der Einrichtung möchten Sie möglicherweise kürzere Intervalle für Debugging-Zwecke verwenden. Denken Sie daran, diese für die Produktionsnutzung zurückzusetzen.

40</Note>

41 

42Für vollständige Konfigurationsoptionen siehe die [OpenTelemetry-Spezifikation](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options).

43 

44## Administratorkonfiguration

45 

46Administratoren können OpenTelemetry-Einstellungen für alle Benutzer über die [verwaltete Einstellungsdatei](/de/settings#settings-files) konfigurieren. Dies ermöglicht eine zentrale Kontrolle der Telemetrie-Einstellungen in einer Organisation. Weitere Informationen zur Anwendung von Einstellungen finden Sie unter [Einstellungspriorität](/de/settings#settings-precedence).

47 

48Beispiel für verwaltete Einstellungskonfiguration:

49 

50```json theme={null}

51{

52 "env": {

53 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

54 "OTEL_METRICS_EXPORTER": "otlp",

55 "OTEL_LOGS_EXPORTER": "otlp",

56 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

57 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317",

58 "OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Bearer example-token"

59 }

60}

61```

62 

63<Note>

64 Verwaltete Einstellungen können über MDM (Mobile Device Management) oder andere Geräteverwaltungslösungen verteilt werden. Umgebungsvariablen, die in der verwalteten Einstellungsdatei definiert sind, haben hohe Priorität und können von Benutzern nicht überschrieben werden.

65</Note>

66 

67## Konfigurationsdetails

68 

69### Allgemeine Konfigurationsvariablen

70 

71| Umgebungsvariable | Beschreibung | Beispielwerte |

72| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |

73| `CLAUDE_CODE_ENABLE_TELEMETRY` | Aktiviert die Telemetrieerfassung (erforderlich) | `1` |

74| `OTEL_METRICS_EXPORTER` | Metriken-Exporter-Typ(en), kommagetrennt. Verwenden Sie `none` zum Deaktivieren | `console`, `otlp`, `prometheus`, `none` |

75| `OTEL_LOGS_EXPORTER` | Logs/Events-Exporter-Typ(en), kommagetrennt. Verwenden Sie `none` zum Deaktivieren | `console`, `otlp`, `none` |

76| `OTEL_EXPORTER_OTLP_PROTOCOL` | Protokoll für OTLP-Exporter, gilt für alle Signale | `grpc`, `http/json`, `http/protobuf` |

77| `OTEL_EXPORTER_OTLP_ENDPOINT` | OTLP-Collector-Endpunkt für alle Signale | `http://localhost:4317` |

78| `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL` | Protokoll für Metriken, überschreibt allgemeine Einstellung | `grpc`, `http/json`, `http/protobuf` |

79| `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` | OTLP-Metriken-Endpunkt, überschreibt allgemeine Einstellung | `http://localhost:4318/v1/metrics` |

80| `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` | Protokoll für Logs, überschreibt allgemeine Einstellung | `grpc`, `http/json`, `http/protobuf` |

81| `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` | OTLP-Logs-Endpunkt, überschreibt allgemeine Einstellung | `http://localhost:4318/v1/logs` |

82| `OTEL_EXPORTER_OTLP_HEADERS` | Authentifizierungsheader für OTLP | `Authorization=Bearer token` |

83| `OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY` | Client-Schlüssel für mTLS-Authentifizierung | Pfad zur Client-Schlüsseldatei |

84| `OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE` | Client-Zertifikat für mTLS-Authentifizierung | Pfad zur Client-Zertifikatsdatei |

85| `OTEL_METRIC_EXPORT_INTERVAL` | Exportintervall in Millisekunden (Standard: 60000) | `5000`, `60000` |

86| `OTEL_LOGS_EXPORT_INTERVAL` | Logs-Exportintervall in Millisekunden (Standard: 5000) | `1000`, `10000` |

87| `OTEL_LOG_USER_PROMPTS` | Aktiviert die Protokollierung von Benutzer-Prompt-Inhalten (Standard: deaktiviert) | `1` zum Aktivieren |

88| `OTEL_LOG_TOOL_DETAILS` | Aktiviert die Protokollierung von Tool-Parametern und Eingabeargumenten in Tool-Ereignissen und Trace-Span-Attributen: Bash-Befehle, MCP-Server- und Tool-Namen, Skill-Namen und Tool-Eingabe. Aktiviert auch benutzerdefinierte, Plugin- und MCP-Befehlsnamen bei `user_prompt`-Ereignissen (Standard: deaktiviert) | `1` zum Aktivieren |

89| `OTEL_LOG_TOOL_CONTENT` | Aktiviert die Protokollierung von Tool-Eingabe- und Ausgabeinhalten in Span-Ereignissen (Standard: deaktiviert). Erfordert [Tracing](#traces-beta). Der Inhalt wird bei 60 KB gekürzt | `1` zum Aktivieren |

90| `OTEL_LOG_RAW_API_BODIES` | Gibt die vollständige Anthropic Messages API-Anfrage und Antwort JSON als `api_request_body` / `api_response_body` Log-Ereignisse aus (Standard: deaktiviert). Texte enthalten die gesamte Konversationshistorie. Das Aktivieren impliziert Zustimmung zu allem, was `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_TOOL_DETAILS` und `OTEL_LOG_TOOL_CONTENT` offenbaren würden | `1` für Inline-Texte gekürzt bei 60 KB, oder `file:<dir>` für ungekürzte Texte auf der Festplatte mit einem `body_ref`-Zeiger im Ereignis |

91| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | Metriken-Temporalitätspräferenz (Standard: `delta`). Setzen Sie auf `cumulative`, wenn Ihr Backend kumulative Temporalität erwartet | `delta`, `cumulative` |

92| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervall zum Aktualisieren dynamischer Header (Standard: 1740000ms / 29 Minuten) | `900000` |

93 

94### Metriken-Kardinalitätskontrolle

95 

96Die folgenden Umgebungsvariablen steuern, welche Attribute in Metriken enthalten sind, um die Kardinalität zu verwalten:

97 

98| Umgebungsvariable | Beschreibung | Standardwert | Beispiel zum Deaktivieren |

99| ----------------------------------- | -------------------------------------------------------------------------- | ------------ | ------------------------- |

100| `OTEL_METRICS_INCLUDE_SESSION_ID` | Attribut session.id in Metriken einschließen | `true` | `false` |

101| `OTEL_METRICS_INCLUDE_VERSION` | Attribut app.version in Metriken einschließen | `false` | `true` |

102| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Attribute user.account\_uuid und user.account\_id in Metriken einschließen | `true` | `false` |

103 

104Diese Variablen helfen, die Kardinalität von Metriken zu kontrollieren, was sich auf die Speicheranforderungen und die Abfrageleistung in Ihrem Metriken-Backend auswirkt. Eine niedrigere Kardinalität bedeutet in der Regel bessere Leistung und niedrigere Speicherkosten, aber weniger granulare Daten für die Analyse.

105 

106### Traces (Beta)

107 

108Verteiltes Tracing exportiert Spans, die jeden Benutzer-Prompt mit den API-Anfragen und Tool-Ausführungen verknüpfen, die er auslöst, sodass Sie eine vollständige Anfrage als einzelnen Trace in Ihrem Tracing-Backend anzeigen können.

109 

110Tracing ist standardmäßig deaktiviert. Um es zu aktivieren, setzen Sie sowohl `CLAUDE_CODE_ENABLE_TELEMETRY=1` als auch `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1`, und setzen Sie dann `OTEL_TRACES_EXPORTER`, um auszuwählen, wohin Spans gesendet werden. Traces verwenden die [allgemeine OTLP-Konfiguration](#allgemeine-konfigurationsvariablen) für Endpunkt, Protokoll und Header erneut.

111 

112| Umgebungsvariable | Beschreibung | Beispielwerte |

113| ------------------------------------- | -------------------------------------------------------------------------------------------- | ------------------------------------ |

114| `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` | Aktiviert Span-Tracing (erforderlich). `ENABLE_ENHANCED_TELEMETRY_BETA` wird auch akzeptiert | `1` |

115| `OTEL_TRACES_EXPORTER` | Traces-Exporter-Typ(en), kommagetrennt. Verwenden Sie `none` zum Deaktivieren | `console`, `otlp`, `none` |

116| `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL` | Protokoll für Traces, überschreibt `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc`, `http/json`, `http/protobuf` |

117| `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` | OTLP-Traces-Endpunkt, überschreibt `OTEL_EXPORTER_OTLP_ENDPOINT` | `http://localhost:4318/v1/traces` |

118| `OTEL_TRACES_EXPORT_INTERVAL` | Span-Batch-Exportintervall in Millisekunden (Standard: 5000) | `1000`, `10000` |

119 

120Spans schwärzen Benutzer-Prompt-Text, Tool-Eingabedetails und Tool-Inhalte standardmäßig. Setzen Sie `OTEL_LOG_USER_PROMPTS=1`, `OTEL_LOG_TOOL_DETAILS=1` und `OTEL_LOG_TOOL_CONTENT=1`, um sie einzubeziehen.

121 

122Wenn Tracing aktiv ist, erben Bash- und PowerShell-Subprozesse automatisch eine `TRACEPARENT`-Umgebungsvariable, die den W3C-Trace-Kontext des aktiven Tool-Ausführungs-Spans enthält. Dies ermöglicht jedem Subprozess, der `TRACEPARENT` liest, seine eigenen Spans unter demselben Trace zu verschachteln, was eine End-to-End-verteilte Tracing durch Skripte und Befehle ermöglicht, die Claude ausführt.

123 

124In Agent SDK und nicht-interaktiven Sitzungen, die mit `-p` gestartet werden, liest Claude Code auch `TRACEPARENT` und `TRACESTATE` aus seiner eigenen Umgebung, wenn jeder Interaktions-Span gestartet wird. Dies ermöglicht einem Embedding-Prozess, seinen aktiven W3C-Trace-Kontext in den Subprozess zu übergeben, sodass Claude Code's Spans als untergeordnete Elemente des Aufrufers verteilter Trace erscheinen. Interaktive Sitzungen ignorieren eingehende `TRACEPARENT`, um zu vermeiden, dass versehentlich Umgebungswerte aus CI oder Container-Umgebungen geerbt werden.

125 

126#### Span-Hierarchie

127 

128Jeder Benutzer-Prompt startet einen `claude_code.interaction` Root-Span. API-Aufrufe, Tool-Aufrufe und Hook-Ausführungen werden als untergeordnete Elemente aufgezeichnet. Tool-Spans haben zwei untergeordnete Spans: einen für die Zeit, die auf eine Berechtigungsentscheidung gewartet wird, und einen für die Ausführung selbst. Wenn das Task-Tool einen Subagenten erzeugt, werden die API- und Tool-Spans des Subagenten unter dem `claude_code.tool`-Span des übergeordneten Elements verschachtelt.

129 

130```text theme={null}

131claude_code.interaction

132├── claude_code.llm_request

133├── claude_code.hook (erfordert detailliertes Beta-Tracing)

134└── claude_code.tool

135 ├── claude_code.tool.blocked_on_user

136 ├── claude_code.tool.execution

137 └── (Task-Tool) Subagent claude_code.llm_request / claude_code.tool Spans

138```

139 

140In Agent SDK und `claude -p` Sitzungen wird `claude_code.interaction` selbst ein untergeordnetes Element des Aufrufers-Spans, wenn `TRACEPARENT` in der Umgebung gesetzt ist.

141 

142#### Span-Attribute

143 

144Jeder Span trägt die [Standardattribute](#standardattribute) plus ein `span.type`-Attribut, das seinem Namen entspricht. Die folgenden Tabellen listen die zusätzlichen Attribute auf, die auf jedem Span gesetzt sind. Die Spans `llm_request`, `tool.execution` und `hook` setzen OpenTelemetry-Status `ERROR`, wenn sie einen Fehler aufzeichnen; die anderen Spans enden immer mit Status `UNSET`.

145 

146**`claude_code.interaction`**

147 

148| Attribut | Beschreibung | Gated durch |

149| ------------------------- | ------------------------------------------------------------------------- | ----------------------- |

150| `user_prompt` | Prompt-Text. Der Wert ist `<REDACTED>`, es sei denn, das Gate ist gesetzt | `OTEL_LOG_USER_PROMPTS` |

151| `user_prompt_length` | Prompt-Länge in Zeichen | |

152| `interaction.sequence` | 1-basierter Zähler von Interaktionen in dieser Sitzung | |

153| `interaction.duration_ms` | Wanduhr-Dauer des Durchgangs | |

154 

155**`claude_code.llm_request`**

156 

157| Attribut | Beschreibung | Gated durch |

158| -------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------- |

159| `model` | Modellkennung | |

160| `gen_ai.system` | Immer `anthropic`. OpenTelemetry GenAI semantische Konvention | |

161| `gen_ai.request.model` | Gleicher Wert wie `model`. OpenTelemetry GenAI semantische Konvention | |

162| `query_source` | Subsystem, das die Anfrage gestellt hat, wie `repl_main_thread` oder ein Subagent-Name | |

163| `speed` | `fast` oder `normal` | |

164| `llm_request.context` | `interaction`, `tool` oder `standalone` je nach übergeordnetem Span | |

165| `duration_ms` | Wanduhr-Dauer einschließlich Wiederholungen | |

166| `ttft_ms` | Zeit bis zum ersten Token in Millisekunden | |

167| `input_tokens` | Eingabe-Token-Anzahl aus dem API-Nutzungsblock | |

168| `output_tokens` | Ausgabe-Token-Anzahl | |

169| `cache_read_tokens` | Aus dem Prompt-Cache gelesene Token | |

170| `cache_creation_tokens` | In den Prompt-Cache geschriebene Token | |

171| `request_id` | Anthropic API-Anfrage-ID aus dem `request-id` Response-Header | |

172| `gen_ai.response.id` | Gleicher Wert wie `request_id`. OpenTelemetry GenAI semantische Konvention | |

173| `client_request_id` | Client-generierte `x-client-request-id` des letzten Versuchs | |

174| `attempt` | Gesamtzahl der Versuche für diese Anfrage | |

175| `success` | `true` oder `false` | |

176| `status_code` | HTTP-Statuscode, wenn die Anfrage fehlgeschlagen ist | |

177| `error` | Fehlermeldung, wenn die Anfrage fehlgeschlagen ist | |

178| `response.has_tool_call` | `true`, wenn die Antwort Tool-Use-Blöcke enthielt | |

179| `stop_reason` | API-Antwort `stop_reason`, wie `end_turn`, `tool_use`, `max_tokens`, `stop_sequence`, `pause_turn` oder `refusal` | |

180| `gen_ai.response.finish_reasons` | Gleicher Wert wie `stop_reason`, in einem String-Array verpackt. OpenTelemetry GenAI semantische Konvention | |

181 

182Jeder Wiederholungsversuch wird auch als `gen_ai.request.attempt` Span-Ereignis mit `attempt` und `client_request_id` Attributen aufgezeichnet.

183 

184**`claude_code.tool`**

185 

186| Attribut | Beschreibung | Gated durch |

187| --------------- | ---------------------------------------------------------------- | ----------------------- |

188| `tool_name` | Tool-Name | |

189| `duration_ms` | Wanduhr-Dauer einschließlich Berechtigungswartung und Ausführung | |

190| `result_tokens` | Ungefähre Token-Größe des Tool-Ergebnisses | |

191| `file_path` | Zieldateipfad für Read-, Edit- und Write-Tools | `OTEL_LOG_TOOL_DETAILS` |

192| `full_command` | Befehlszeichenkette für das Bash-Tool | `OTEL_LOG_TOOL_DETAILS` |

193| `skill_name` | Skill-Name für das Skill-Tool | `OTEL_LOG_TOOL_DETAILS` |

194| `subagent_type` | Subagent-Typ für das Task-Tool | `OTEL_LOG_TOOL_DETAILS` |

195 

196Wenn `OTEL_LOG_TOOL_CONTENT=1`, zeichnet dieser Span auch ein `tool.output` Span-Ereignis auf, dessen Attribute die Tool-Eingabe- und Ausgabetexte enthalten, gekürzt bei 60 KB pro Attribut.

197 

198**`claude_code.tool.blocked_on_user`**

199 

200| Attribut | Beschreibung | Gated durch |

201| ------------- | ----------------------------------------------------------------------------------------- | ----------- |

202| `duration_ms` | Zeit, die auf die Berechtigungsentscheidung gewartet wird | |

203| `decision` | `accept` oder `reject` | |

204| `source` | Entscheidungsquelle, entsprechend dem [Tool-Entscheidungs-Ereignis](#tool-decision-event) | |

205 

206**`claude_code.tool.execution`**

207 

208| Attribut | Beschreibung | Gated durch |

209| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |

210| `duration_ms` | Zeit, die für die Ausführung des Tool-Body aufgewendet wird | |

211| `success` | `true` oder `false` | |

212| `error` | Fehler-Kategoriezeichenkette, wenn die Ausführung fehlgeschlagen ist, wie `Error:ENOENT` oder `ShellError`. Enthält die vollständige Fehlermeldung, wenn das Gate gesetzt ist | `OTEL_LOG_TOOL_DETAILS` |

213 

214**`claude_code.hook`**

215 

216Dieser Span wird nur ausgegeben, wenn detailliertes Beta-Tracing aktiv ist, was `ENABLE_BETA_TRACING_DETAILED=1` und `BETA_TRACING_ENDPOINT` zusätzlich zur obigen Trace-Exporter-Konfiguration erfordert. In interaktiven CLI-Sitzungen erfordert dies auch, dass Ihre Organisation für die Funktion auf die Whitelist gesetzt ist. Agent SDK und nicht-interaktive `-p` Sitzungen sind nicht gated. Es wird nicht ausgegeben, wenn nur `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` gesetzt ist.

217 

218| Attribut | Beschreibung | Gated durch |

219| ------------------------ | ----------------------------------------------------------------------- | ----------------------- |

220| `hook_event` | Hook-Ereignistyp, wie `PreToolUse` | |

221| `hook_name` | Vollständiger Hook-Name, wie `PreToolUse:Write` | |

222| `num_hooks` | Anzahl der ausgeführten übereinstimmenden Hook-Befehle | |

223| `hook_definitions` | JSON-serialisierte Hook-Konfiguration | `OTEL_LOG_TOOL_DETAILS` |

224| `duration_ms` | Wanduhr-Dauer aller übereinstimmenden Hooks | |

225| `num_success` | Anzahl der Hooks, die erfolgreich abgeschlossen wurden | |

226| `num_blocking` | Anzahl der Hooks, die eine Blockierungsentscheidung zurückgegeben haben | |

227| `num_non_blocking_error` | Anzahl der Hooks, die ohne Blockierung fehlgeschlagen sind | |

228| `num_cancelled` | Anzahl der Hooks, die vor Abschluss abgebrochen wurden | |

229 

230<Note>

231 Zusätzliche inhaltshaltige Attribute wie `new_context`, `system_prompt_preview`, `user_system_prompt`, `tool_input` und `response.model_output` werden nur ausgegeben, wenn detailliertes Beta-Tracing aktiv ist. Sie sind nicht Teil des stabilen Span-Schemas. `user_system_prompt` erfordert zusätzlich `OTEL_LOG_USER_PROMPTS=1`. Es trägt nur den System-Prompt-Text, den Sie über die `systemPrompt` SDK-Option oder die Flags `--system-prompt` und `--append-system-prompt` bereitstellen, gekürzt bei 60 KB, und wird einmal pro Sitzung statt pro Anfrage ausgegeben.

232</Note>

233 

234### Dynamische Header

235 

236Für Unternehmensumgebungen, die eine dynamische Authentifizierung erfordern, können Sie ein Skript konfigurieren, um Header dynamisch zu generieren:

237 

238#### Einstellungskonfiguration

239 

240Fügen Sie zu Ihrer `.claude/settings.json` hinzu:

241 

242```json theme={null}

243{

244 "otelHeadersHelper": "/bin/generate_opentelemetry_headers.sh"

245}

246```

247 

248#### Skriptanforderungen

249 

250Das Skript muss gültiges JSON mit Zeichenketten-Schlüssel-Wert-Paaren ausgeben, die HTTP-Header darstellen:

251 

252```bash theme={null}

253#!/bin/bash

254# Beispiel: Mehrere Header

255echo "{\"Authorization\": \"Bearer $(get-token.sh)\", \"X-API-Key\": \"$(get-api-key.sh)\"}"

256```

257 

258#### Aktualisierungsverhalten

259 

260Das Headers-Helper-Skript wird beim Start und danach regelmäßig ausgeführt, um Token-Aktualisierung zu unterstützen. Standardmäßig wird das Skript alle 29 Minuten ausgeführt. Passen Sie das Intervall mit der Umgebungsvariable `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` an.

261 

262### Unterstützung für Multi-Team-Organisationen

263 

264Organisationen mit mehreren Teams oder Abteilungen können benutzerdefinierte Attribute hinzufügen, um zwischen verschiedenen Gruppen zu unterscheiden, indem sie die Umgebungsvariable `OTEL_RESOURCE_ATTRIBUTES` verwenden:

265 

266```bash theme={null}

267# Benutzerdefinierte Attribute für Team-Identifikation hinzufügen

268export OTEL_RESOURCE_ATTRIBUTES="department=engineering,team.id=platform,cost_center=eng-123"

269```

270 

271Diese benutzerdefinierten Attribute werden in alle Metriken und Ereignisse einbezogen, sodass Sie:

272 

273* Metriken nach Team oder Abteilung filtern können

274* Kosten pro Kostenstelle verfolgen können

275* Team-spezifische Dashboards erstellen können

276* Warnungen für bestimmte Teams einrichten können

277 

278<Warning>

279 **Wichtige Formatierungsanforderungen für OTEL\_RESOURCE\_ATTRIBUTES:**

280 

281 Die Umgebungsvariable `OTEL_RESOURCE_ATTRIBUTES` verwendet kommagetrennte Schlüssel=Wert-Paare mit strikten Formatierungsanforderungen:

282 

283 * **Keine Leerzeichen erlaubt**: Werte dürfen keine Leerzeichen enthalten. Zum Beispiel ist `user.organizationName=My Company` ungültig

284 * **Format**: Muss kommagetrennte Schlüssel=Wert-Paare sein: `key1=value1,key2=value2`

285 * **Zulässige Zeichen**: Nur US-ASCII-Zeichen ohne Steuerzeichen, Leerzeichen, doppelte Anführungszeichen, Kommas, Semikola und Backslashes

286 * **Sonderzeichen**: Zeichen außerhalb des zulässigen Bereichs müssen prozentcodiert sein

287 

288 **Beispiele:**

289 

290 ```bash theme={null}

291 # ❌ Ungültig - enthält Leerzeichen

292 export OTEL_RESOURCE_ATTRIBUTES="org.name=John's Organization"

293 

294 # ✅ Gültig - verwenden Sie stattdessen Unterstriche oder camelCase

295 export OTEL_RESOURCE_ATTRIBUTES="org.name=Johns_Organization"

296 export OTEL_RESOURCE_ATTRIBUTES="org.name=JohnsOrganization"

297 

298 # ✅ Gültig - prozentcodieren Sie Sonderzeichen, falls erforderlich

299 export OTEL_RESOURCE_ATTRIBUTES="org.name=John%27s%20Organization"

300 ```

301 

302 Hinweis: Das Einschließen von Werten in Anführungszeichen entkommt keine Leerzeichen. Zum Beispiel führt `org.name="My Company"` zum Literalwert `"My Company"` (mit Anführungszeichen enthalten), nicht zu `My Company`.

303</Warning>

304 

305### Beispielkonfigurationen

306 

307Setzen Sie diese Umgebungsvariablen vor dem Ausführen von `claude`. Jeder Block zeigt eine vollständige Konfiguration für einen anderen Exporter oder ein anderes Bereitstellungsszenario:

308 

309```bash theme={null}

310# Console-Debugging (1-Sekunden-Intervalle)

311export CLAUDE_CODE_ENABLE_TELEMETRY=1

312export OTEL_METRICS_EXPORTER=console

313export OTEL_METRIC_EXPORT_INTERVAL=1000

314 

315# OTLP/gRPC

316export CLAUDE_CODE_ENABLE_TELEMETRY=1

317export OTEL_METRICS_EXPORTER=otlp

318export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

319export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

320 

321# Prometheus

322export CLAUDE_CODE_ENABLE_TELEMETRY=1

323export OTEL_METRICS_EXPORTER=prometheus

324 

325# Mehrere Exporter

326export CLAUDE_CODE_ENABLE_TELEMETRY=1

327export OTEL_METRICS_EXPORTER=console,otlp

328export OTEL_EXPORTER_OTLP_PROTOCOL=http/json

329 

330# Unterschiedliche Endpunkte/Backends für Metriken und Logs

331export CLAUDE_CODE_ENABLE_TELEMETRY=1

332export OTEL_METRICS_EXPORTER=otlp

333export OTEL_LOGS_EXPORTER=otlp

334export OTEL_EXPORTER_OTLP_METRICS_PROTOCOL=http/protobuf

335export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://metrics.example.com:4318

336export OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=grpc

337export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://logs.example.com:4317

338 

339# Nur Metriken (keine Ereignisse/Logs)

340export CLAUDE_CODE_ENABLE_TELEMETRY=1

341export OTEL_METRICS_EXPORTER=otlp

342export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

343export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

344 

345# Nur Ereignisse/Logs (keine Metriken)

346export CLAUDE_CODE_ENABLE_TELEMETRY=1

347export OTEL_LOGS_EXPORTER=otlp

348export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

349export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

350```

351 

352## Verfügbare Metriken und Ereignisse

353 

354### Standardattribute

355 

356Alle Metriken und Ereignisse teilen diese Standardattribute:

357 

358| Attribut | Beschreibung | Gesteuert durch |

359| ------------------- | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |

360| `session.id` | Eindeutige Sitzungskennung | `OTEL_METRICS_INCLUDE_SESSION_ID` (Standard: true) |

361| `app.version` | Aktuelle Claude Code-Version | `OTEL_METRICS_INCLUDE_VERSION` (Standard: false) |

362| `organization.id` | Organisations-UUID (wenn authentifiziert) | Immer enthalten, wenn verfügbar |

363| `user.account_uuid` | Konto-UUID (wenn authentifiziert) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (Standard: true) |

364| `user.account_id` | Konto-ID im getaggten Format, das Anthropic-Admin-APIs entspricht (wenn authentifiziert), wie `user_01BWBeN28...` | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (Standard: true) |

365| `user.id` | Anonyme Geräte-/Installationskennung, generiert pro Claude Code-Installation | Immer enthalten |

366| `user.email` | E-Mail-Adresse des Benutzers (wenn über OAuth authentifiziert) | Immer enthalten, wenn verfügbar |

367| `terminal.type` | Terminal-Typ, wie `iTerm.app`, `vscode`, `cursor` oder `tmux` | Immer enthalten, wenn erkannt |

368 

369Ereignisse enthalten zusätzlich die folgenden Attribute. Diese werden niemals an Metriken angehängt, da sie zu unbegrenzter Kardinalität führen würden:

370 

371* `prompt.id`: UUID, die einen Benutzer-Prompt mit allen nachfolgenden Ereignissen bis zum nächsten Prompt korreliert. Siehe [Ereigniskorrelationsattribute](#ereigniskorrelationsattribute).

372* `workspace.host_paths`: Host-Workspace-Verzeichnisse, die in der Desktop-App ausgewählt wurden, als String-Array

373 

374### Metriken

375 

376Claude Code exportiert die folgenden Metriken:

377 

378| Metrikname | Beschreibung | Einheit |

379| ------------------------------------- | --------------------------------------------------------------------- | ------- |

380| `claude_code.session.count` | Anzahl der gestarteten CLI-Sitzungen | count |

381| `claude_code.lines_of_code.count` | Anzahl der geänderten Codezeilen | count |

382| `claude_code.pull_request.count` | Anzahl der erstellten Pull Requests | count |

383| `claude_code.commit.count` | Anzahl der erstellten Git-Commits | count |

384| `claude_code.cost.usage` | Kosten der Claude Code-Sitzung | USD |

385| `claude_code.token.usage` | Anzahl der verwendeten Token | tokens |

386| `claude_code.code_edit_tool.decision` | Anzahl der Entscheidungen zur Berechtigung des Code-Bearbeitungstools | count |

387| `claude_code.active_time.total` | Gesamte aktive Zeit in Sekunden | s |

388 

389### Metrik-Details

390 

391Jede Metrik enthält die oben aufgeführten Standardattribute. Metriken mit zusätzlichen kontextspezifischen Attributen werden nachfolgend vermerkt.

392 

393#### Sitzungszähler

394 

395Wird zu Beginn jeder Sitzung erhöht.

396 

397**Attribute**:

398 

399* Alle [Standardattribute](#standardattribute)

400* `start_type`: Wie die Sitzung gestartet wurde. Einer von `"fresh"`, `"resume"` oder `"continue"`

401 

402#### Codezeilen-Zähler

403 

404Wird erhöht, wenn Code hinzugefügt oder entfernt wird.

405 

406**Attribute**:

407 

408* Alle [Standardattribute](#standardattribute)

409* `type`: (`"added"`, `"removed"`)

410 

411#### Pull-Request-Zähler

412 

413Wird erhöht, wenn Pull Requests über Claude Code erstellt werden.

414 

415**Attribute**:

416 

417* Alle [Standardattribute](#standardattribute)

418 

419#### Commit-Zähler

420 

421Wird erhöht, wenn Git-Commits über Claude Code erstellt werden.

422 

423**Attribute**:

424 

425* Alle [Standardattribute](#standardattribute)

426 

427#### Kostenzähler

428 

429Wird nach jeder API-Anfrage erhöht.

430 

431**Attribute**:

432 

433* Alle [Standardattribute](#standardattribute)

434* `model`: Modellkennung (zum Beispiel "claude-sonnet-4-6")

435* `query_source`: Kategorie des Subsystems, das die Anfrage gestellt hat. Einer von `"main"`, `"subagent"` oder `"auxiliary"`

436* `speed`: `"fast"`, wenn die Anfrage den schnellen Modus verwendet hat. Andernfalls nicht vorhanden

437* `effort`: [Anstrengungsstufe](/de/model-config#adjust-effort-level), die auf die Anfrage angewendet wird: `"low"`, `"medium"`, `"high"`, `"xhigh"` oder `"max"`. Nicht vorhanden, wenn das Modell Anstrengung nicht unterstützt.

438 

439#### Token-Zähler

440 

441Wird nach jeder API-Anfrage erhöht.

442 

443**Attribute**:

444 

445* Alle [Standardattribute](#standardattribute)

446* `type`: (`"input"`, `"output"`, `"cacheRead"`, `"cacheCreation"`)

447* `model`: Modellkennung (zum Beispiel "claude-sonnet-4-6")

448* `query_source`: Kategorie des Subsystems, das die Anfrage gestellt hat. Einer von `"main"`, `"subagent"` oder `"auxiliary"`

449* `speed`: `"fast"`, wenn die Anfrage den schnellen Modus verwendet hat. Andernfalls nicht vorhanden

450* `effort`: [Anstrengungsstufe](/de/model-config#adjust-effort-level), die auf die Anfrage angewendet wird. Siehe [Kostenzähler](#kostenzähler) für Details.

451 

452#### Code-Edit-Tool-Entscheidungszähler

453 

454Wird erhöht, wenn der Benutzer die Verwendung des Edit-, Write- oder NotebookEdit-Tools akzeptiert oder ablehnt.

455 

456**Attribute**:

457 

458* Alle [Standardattribute](#standardattribute)

459* `tool_name`: Tool-Name (`"Edit"`, `"Write"`, `"NotebookEdit"`)

460* `decision`: Benutzerentscheidung (`"accept"`, `"reject"`)

461* `source`: Entscheidungsquelle. Einer von `"config"`, `"hook"`, `"user_permanent"`, `"user_temporary"`, `"user_abort"` oder `"user_reject"`. Siehe das [Tool-Entscheidungs-Ereignis](#tool-entscheidungs-ereignis) für die Bedeutung jedes Wertes.

462* `language`: Programmiersprache der bearbeiteten Datei, wie `"TypeScript"`, `"Python"`, `"JavaScript"` oder `"Markdown"`. Gibt `"unknown"` für nicht erkannte Dateierweiterungen zurück.

463 

464#### Aktive-Zeit-Zähler

465 

466Verfolgt die tatsächliche Zeit, die aktiv Claude Code verwendet wird, ohne Leerlaufzeit. Diese Metrik wird während Benutzerinteraktionen (Eingabe, Lesen von Antworten) und während CLI-Verarbeitung (Tool-Ausführung, KI-Antwortgenerierung) erhöht.

467 

468**Attribute**:

469 

470* Alle [Standardattribute](#standardattribute)

471* `type`: `"user"` für Tastaturinteraktionen, `"cli"` für Tool-Ausführung und KI-Antworten

472 

473### Ereignisse

474 

475Claude Code exportiert die folgenden Ereignisse über OpenTelemetry Logs/Events (wenn `OTEL_LOGS_EXPORTER` konfiguriert ist):

476 

477#### Ereigniskorrelationsattribute

478 

479Wenn ein Benutzer einen Prompt einreicht, kann Claude Code mehrere API-Aufrufe tätigen und mehrere Tools ausführen. Das Attribut `prompt.id` ermöglicht es Ihnen, alle diese Ereignisse an den einzelnen Prompt zu binden, der sie ausgelöst hat.

480 

481| Attribut | Beschreibung |

482| ----------- | ---------------------------------------------------------------------------------------------------------------------------- |

483| `prompt.id` | UUID v4-Kennung, die alle Ereignisse verknüpft, die während der Verarbeitung eines einzelnen Benutzer-Prompts erzeugt werden |

484 

485Um alle Aktivitäten zu verfolgen, die durch einen einzelnen Prompt ausgelöst werden, filtern Sie Ihre Ereignisse nach einem bestimmten `prompt.id`-Wert. Dies gibt das user\_prompt-Ereignis, alle api\_request-Ereignisse und alle tool\_result-Ereignisse zurück, die während der Verarbeitung dieses Prompts aufgetreten sind.

486 

487<Note>

488 `prompt.id` ist absichtlich aus Metriken ausgeschlossen, da jeder Prompt eine eindeutige ID generiert, was zu einer ständig wachsenden Anzahl von Zeitreihen führen würde. Verwenden Sie es nur für Ereignisanalyse und Audit-Trails.

489</Note>

490 

491#### Benutzer-Prompt-Ereignis

492 

493Protokolliert, wenn ein Benutzer einen Prompt einreicht.

494 

495**Ereignisname**: `claude_code.user_prompt`

496 

497**Attribute**:

498 

499* Alle [Standardattribute](#standardattribute)

500* `event.name`: `"user_prompt"`

501* `event.timestamp`: ISO 8601-Zeitstempel

502* `event.sequence`: monoton steigende Zähler zur Sortierung von Ereignissen innerhalb einer Sitzung

503* `prompt_length`: Länge des Prompts

504* `prompt`: Prompt-Inhalt (standardmäßig geschwärzt, aktivieren Sie mit `OTEL_LOG_USER_PROMPTS=1`)

505* `command_name`: Befehlsname, wenn der Prompt einen aufruft. Integrierte und gebündelte Befehlsnamen wie `compact` oder `debug` werden wie geschrieben ausgegeben; Aliase wie `reset` werden wie eingegeben ausgegeben, nicht der kanonische Name. Benutzerdefinierte, Plugin- und MCP-Befehlsnamen werden zu `custom` oder `mcp` zusammengefasst, es sei denn, `OTEL_LOG_TOOL_DETAILS=1` ist gesetzt

506* `command_source`: Ursprung des Befehls, wenn vorhanden: `builtin`, `custom` oder `mcp`. Von Plugins bereitgestellte Befehle werden als `custom` gemeldet

507 

508#### Tool-Ergebnis-Ereignis

509 

510Protokolliert, wenn ein Tool die Ausführung abgeschlossen hat.

511 

512**Ereignisname**: `claude_code.tool_result`

513 

514**Attribute**:

515 

516* Alle [Standardattribute](#standardattribute)

517* `event.name`: `"tool_result"`

518* `event.timestamp`: ISO 8601-Zeitstempel

519* `event.sequence`: monoton steigende Zähler zur Sortierung von Ereignissen innerhalb einer Sitzung

520* `tool_name`: Name des Tools

521* `tool_use_id`: Eindeutige Kennung für diese Tool-Invokation. Entspricht der `tool_use_id`, die an Hooks übergeben wird, und ermöglicht die Korrelation zwischen OTel-Ereignissen und Hook-erfassten Daten.

522* `success`: `"true"` oder `"false"`

523* `duration_ms`: Ausführungszeit in Millisekunden

524* `error_type`: Fehler-Kategoriezeichenkette, wenn das Tool fehlgeschlagen ist, wie `"Error:ENOENT"` oder `"ShellError"`

525* `error` (wenn `OTEL_LOG_TOOL_DETAILS=1`): Vollständige Fehlermeldung, wenn das Tool fehlgeschlagen ist

526* `decision_type`: Entweder `"accept"` oder `"reject"`

527* `decision_source`: Entscheidungsquelle. Einer von `"config"`, `"hook"`, `"user_permanent"`, `"user_temporary"`, `"user_abort"` oder `"user_reject"`. Siehe das [Tool-Entscheidungs-Ereignis](#tool-entscheidungs-ereignis) für die Bedeutung jedes Wertes.

528* `tool_input_size_bytes`: Größe der JSON-serialisierten Tool-Eingabe in Bytes

529* `tool_result_size_bytes`: Größe des Tool-Ergebnisses in Bytes

530* `mcp_server_scope`: MCP-Server-Scope-Kennung (für MCP-Tools)

531* `tool_parameters` (wenn `OTEL_LOG_TOOL_DETAILS=1`): JSON-Zeichenkette mit Tool-spezifischen Parametern:

532 * Für Bash-Tool: enthält `bash_command`, `full_command`, `timeout`, `description`, `dangerouslyDisableSandbox` und `git_commit_id` (der Commit-SHA, wenn ein `git commit`-Befehl erfolgreich ist)

533 * Für MCP-Tools: enthält `mcp_server_name`, `mcp_tool_name`

534 * Für Skill-Tool: enthält `skill_name`

535 * Für Task-Tool: enthält `subagent_type`

536* `tool_input` (wenn `OTEL_LOG_TOOL_DETAILS=1`): JSON-serialisierte Tool-Argumente. Einzelne Werte über 512 Zeichen werden gekürzt, und die gesamte Nutzlast ist auf etwa 4 K Zeichen begrenzt. Gilt für alle Tools einschließlich MCP-Tools.

537 

538#### API-Anfrage-Ereignis

539 

540Protokolliert für jede API-Anfrage an Claude.

541 

542**Ereignisname**: `claude_code.api_request`

543 

544**Attribute**:

545 

546* Alle [Standardattribute](#standardattribute)

547* `event.name`: `"api_request"`

548* `event.timestamp`: ISO 8601-Zeitstempel

549* `event.sequence`: monoton steigende Zähler zur Sortierung von Ereignissen innerhalb einer Sitzung

550* `model`: Verwendetes Modell (zum Beispiel "claude-sonnet-4-6")

551* `cost_usd`: Geschätzte Kosten in USD

552* `duration_ms`: Anfragedauer in Millisekunden

553* `input_tokens`: Anzahl der Eingabe-Token

554* `output_tokens`: Anzahl der Ausgabe-Token

555* `cache_read_tokens`: Anzahl der aus dem Cache gelesenen Token

556* `cache_creation_tokens`: Anzahl der Token, die für die Cache-Erstellung verwendet werden

557* `request_id`: Anthropic API-Anfrage-ID aus dem Response-Header `request-id`, wie `"req_011..."`. Nur vorhanden, wenn die API eine zurückgibt.

558* `speed`: `"fast"` oder `"normal"`, was angibt, ob der schnelle Modus aktiv war

559* `query_source`: Subsystem, das die Anfrage gestellt hat, wie `"repl_main_thread"`, `"compact"` oder ein Subagent-Name

560* `effort`: [Anstrengungsstufe](/de/model-config#adjust-effort-level), die auf die Anfrage angewendet wird: `"low"`, `"medium"`, `"high"`, `"xhigh"` oder `"max"`. Nicht vorhanden, wenn das Modell Anstrengung nicht unterstützt.

561 

562#### API-Fehler-Ereignis

563 

564Protokolliert, wenn eine API-Anfrage an Claude fehlschlägt.

565 

566**Ereignisname**: `claude_code.api_error`

567 

568**Attribute**:

569 

570* Alle [Standardattribute](#standardattribute)

571* `event.name`: `"api_error"`

572* `event.timestamp`: ISO 8601-Zeitstempel

573* `event.sequence`: monoton steigende Zähler zur Sortierung von Ereignissen innerhalb einer Sitzung

574* `model`: Verwendetes Modell (zum Beispiel "claude-sonnet-4-6")

575* `error`: Fehlermeldung

576* `status_code`: HTTP-Statuscode als Zahl. Nicht vorhanden für Nicht-HTTP-Fehler wie Verbindungsfehler.

577* `duration_ms`: Anfragedauer in Millisekunden

578* `attempt`: Gesamtzahl der Versuche, einschließlich der ursprünglichen Anfrage (`1` bedeutet, dass keine Wiederholungen aufgetreten sind)

579* `request_id`: Anthropic API-Anfrage-ID aus dem Response-Header `request-id`, wie `"req_011..."`. Nur vorhanden, wenn die API eine zurückgibt.

580* `speed`: `"fast"` oder `"normal"`, was angibt, ob der schnelle Modus aktiv war

581* `query_source`: Subsystem, das die Anfrage gestellt hat, wie `"repl_main_thread"`, `"compact"` oder ein Subagent-Name

582* `effort`: [Anstrengungsstufe](/de/model-config#adjust-effort-level), die auf die Anfrage angewendet wird. Nicht vorhanden, wenn das Modell Anstrengung nicht unterstützt.

583 

584#### API-Anfrage-Text-Ereignis

585 

586Protokolliert für jeden API-Anfrage-Versuch, wenn `OTEL_LOG_RAW_API_BODIES` gesetzt ist. Ein Ereignis wird pro Versuch ausgegeben, daher erzeugen Wiederholungen mit angepassten Parametern jeweils ihr eigenes Ereignis.

587 

588**Ereignisname**: `claude_code.api_request_body`

589 

590**Attribute**:

591 

592* Alle [Standardattribute](#standardattribute)

593* `event.name`: `"api_request_body"`

594* `event.timestamp`: ISO 8601-Zeitstempel

595* `event.sequence`: monoton steigende Zähler zur Sortierung von Ereignissen innerhalb einer Sitzung

596* `body`: JSON-serialisierte Messages API-Anfrageparameter (Systemprompt, Nachrichten, Tools usw.), gekürzt bei 60 KB. Extended-Thinking-Inhalte in vorherigen Assistent-Durchgängen werden geschwärzt. Nur im Inline-Modus ausgegeben (`OTEL_LOG_RAW_API_BODIES=1`).

597* `body_ref`: Absoluter Pfad zu einer `<dir>/<uuid>.request.json` Datei, die den ungekürzte Text enthält. Nur im Datei-Modus ausgegeben (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

598* `body_length`: Ungekürzte Text-Länge. UTF-8-Bytes, wenn `OTEL_LOG_RAW_API_BODIES=file:<dir>`, oder UTF-16-Code-Einheiten, wenn `=1`

599* `body_truncated`: `"true"`, wenn Inline-Kürzung aufgetreten ist. Nicht vorhanden im Datei-Modus und wenn keine Kürzung aufgetreten ist.

600* `model`: Modellkennung aus den Anfrageparametern

601* `query_source`: Subsystem, das die Anfrage gestellt hat (zum Beispiel `"compact"`)

602 

603#### API-Antwort-Text-Ereignis

604 

605Protokolliert für jede erfolgreiche API-Antwort, wenn `OTEL_LOG_RAW_API_BODIES` gesetzt ist.

606 

607**Ereignisname**: `claude_code.api_response_body`

608 

609**Attribute**:

610 

611* Alle [Standardattribute](#standardattribute)

612* `event.name`: `"api_response_body"`

613* `event.timestamp`: ISO 8601-Zeitstempel

614* `event.sequence`: monoton steigende Zähler zur Sortierung von Ereignissen innerhalb einer Sitzung

615* `body`: JSON-serialisierte Messages API-Antwort (id, Inhaltsblöcke, Nutzung, Stoppgrund), gekürzt bei 60 KB. Extended-Thinking-Inhalte werden geschwärzt. Nur im Inline-Modus ausgegeben (`OTEL_LOG_RAW_API_BODIES=1`).

616* `body_ref`: Absoluter Pfad zu einer `<dir>/<request_id>.response.json` Datei, die den ungekürzte Text enthält. Nur im Datei-Modus ausgegeben (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

617* `body_length`: Ungekürzte Text-Länge. UTF-8-Bytes, wenn `OTEL_LOG_RAW_API_BODIES=file:<dir>`, oder UTF-16-Code-Einheiten, wenn `=1`

618* `body_truncated`: `"true"`, wenn Inline-Kürzung aufgetreten ist. Nicht vorhanden im Datei-Modus und wenn keine Kürzung aufgetreten ist.

619* `model`: Modellkennung

620* `query_source`: Subsystem, das die Anfrage gestellt hat

621* `request_id`: Anthropic API-Anfrage-ID aus dem Response-Header `request-id`, wie `"req_011..."`. Nur vorhanden, wenn die API eine zurückgibt.

622 

623#### Tool-Entscheidungs-Ereignis

624 

625Protokolliert, wenn eine Tool-Berechtigungsentscheidung getroffen wird (akzeptieren/ablehnen).

626 

627**Ereignisname**: `claude_code.tool_decision`

628 

629**Attribute**:

630 

631* Alle [Standardattribute](#standardattribute)

632* `event.name`: `"tool_decision"`

633* `event.timestamp`: ISO 8601-Zeitstempel

634* `event.sequence`: monoton steigende Zähler zur Sortierung von Ereignissen innerhalb einer Sitzung

635* `tool_name`: Name des Tools (zum Beispiel "Read", "Edit", "Write", "NotebookEdit")

636* `tool_use_id`: Eindeutige Kennung für diese Tool-Invokation. Entspricht der `tool_use_id`, die an Hooks übergeben wird, und ermöglicht die Korrelation zwischen OTel-Ereignissen und Hook-erfassten Daten.

637* `decision`: Entweder `"accept"` oder `"reject"`

638* `source`: Entscheidungsquelle:

639 * `"config"`: Automatisch entschieden, ohne Aufforderung, basierend auf Projekteinstellungen, verwalteter Unternehmensrichtlinie, `--allowedTools` oder `--disallowedTools` Flags, dem aktiven Berechtigungsmodus oder weil das Tool inhärent sicher ist.

640 * `"hook"`: Ein `PreToolUse` oder `PermissionRequest` Hook hat die Entscheidung zurückgegeben.

641 * `"user_permanent"`: Wird ausgegeben, wenn der Benutzer "Immer zulassen" wählte, wenn aufgefordert, und eine Regel in seinen persönlichen Einstellungen speichert. Auch für spätere Aufrufe ausgegeben, die dieser gespeicherten Regel entsprechen. Wird als Akzeptanz behandelt.

642 * `"user_temporary"`: Wird ausgegeben, wenn der Benutzer "Ja" oder "Ja, für diese Sitzung" wählte, wenn aufgefordert, ohne eine Regel zu speichern. Auch für spätere Aufrufe in der gleichen Sitzung ausgegeben, die dieser sitzungsbegrenzten Zulassung entsprechen. Wird als Akzeptanz behandelt.

643 * `"user_abort"`: Wird ausgegeben, wenn der Benutzer die Berechtigungsaufforderung geschlossen hat, ohne zu antworten. Wird als Ablehnung behandelt.

644 * `"user_reject"`: Wird ausgegeben, wenn der Benutzer "Nein" wählte, wenn aufgefordert, oder ein Aufruf einer Ablehnungsregel in seinen persönlichen Einstellungen entsprach. Wird als Ablehnung behandelt.

645 

646#### Berechtigungsmodus-Änderungs-Ereignis

647 

648Protokolliert, wenn sich der Berechtigungsmodus ändert, zum Beispiel durch Shift+Tab-Zyklus, Beendigung des Plan-Modus oder eine Auto-Modus-Gate-Prüfung.

649 

650**Ereignisname**: `claude_code.permission_mode_changed`

651 

652**Attribute**:

653 

654* Alle [Standardattribute](#standardattribute)

655* `event.name`: `"permission_mode_changed"`

656* `event.timestamp`: ISO 8601-Zeitstempel

657* `event.sequence`: monoton steigende Zähler zur Sortierung von Ereignissen innerhalb einer Sitzung

658* `from_mode`: Der vorherige Berechtigungsmodus, zum Beispiel `"default"`, `"plan"`, `"acceptEdits"`, `"auto"` oder `"bypassPermissions"`

659* `to_mode`: Der neue Berechtigungsmodus

660* `trigger`: Was die Änderung verursacht hat. Einer von `"shift_tab"`, `"exit_plan_mode"`, `"auto_gate_denied"` oder `"auto_opt_in"`. Nicht vorhanden, wenn der Übergang vom SDK oder Bridge stammt

661 

662#### Auth-Ereignis

663 

664Protokolliert, wenn `/login` oder `/logout` abgeschlossen ist.

665 

666**Ereignisname**: `claude_code.auth`

667 

668**Attribute**:

669 

670* Alle [Standardattribute](#standardattribute)

671* `event.name`: `"auth"`

672* `event.timestamp`: ISO 8601-Zeitstempel

673* `event.sequence`: monoton steigende Zähler zur Sortierung von Ereignissen innerhalb einer Sitzung

674* `action`: `"login"` oder `"logout"`

675* `success`: `"true"` oder `"false"`

676* `auth_method`: Authentifizierungsmethode, wie `"oauth"`

677* `error_category`: Kategorische Fehlerart, wenn die Aktion fehlgeschlagen ist. Die rohe Fehlermeldung ist nie enthalten

678* `status_code`: HTTP-Statuscode als Zeichenkette, wenn die Aktion mit einem HTTP-Fehler fehlgeschlagen ist

679 

680#### MCP-Server-Verbindungs-Ereignis

681 

682Protokolliert, wenn ein MCP-Server verbunden wird, getrennt wird oder keine Verbindung herstellen kann.

683 

684**Ereignisname**: `claude_code.mcp_server_connection`

685 

686**Attribute**:

687 

688* Alle [Standardattribute](#standardattribute)

689* `event.name`: `"mcp_server_connection"`

690* `event.timestamp`: ISO 8601-Zeitstempel

691* `event.sequence`: monoton steigende Zähler zur Sortierung von Ereignissen innerhalb einer Sitzung

692* `status`: `"connected"`, `"failed"` oder `"disconnected"`

693* `transport_type`: Server-Transport, wie `"stdio"`, `"sse"` oder `"http"`

694* `server_scope`: Bereich, in dem der Server konfiguriert ist, wie `"user"`, `"project"` oder `"local"`

695* `duration_ms`: Verbindungsversuch-Dauer in Millisekunden

696* `error_code`: Fehlercode, wenn die Verbindung fehlgeschlagen ist

697* `server_name` (wenn `OTEL_LOG_TOOL_DETAILS=1`): Konfigurierter Server-Name

698* `error` (wenn `OTEL_LOG_TOOL_DETAILS=1`): Vollständige Fehlermeldung, wenn die Verbindung fehlgeschlagen ist

699 

700#### Interner Fehler-Ereignis

701 

702Protokolliert, wenn Claude Code einen unerwarteten internen Fehler abfängt. Nur der Fehlerklassenname und ein errno-ähnlicher Code werden aufgezeichnet. Die Fehlermeldung und Stack-Trace sind nie enthalten. Dieses Ereignis wird nicht ausgegeben, wenn gegen Bedrock, Vertex oder Foundry ausgeführt wird, oder wenn `DISABLE_ERROR_REPORTING` gesetzt ist.

703 

704**Ereignisname**: `claude_code.internal_error`

705 

706**Attribute**:

707 

708* Alle [Standardattribute](#standardattribute)

709* `event.name`: `"internal_error"`

710* `event.timestamp`: ISO 8601-Zeitstempel

711* `event.sequence`: monoton steigende Zähler zur Sortierung von Ereignissen innerhalb einer Sitzung

712* `error_name`: Fehlerklassenname, wie `"TypeError"` oder `"SyntaxError"`

713* `error_code`: Node.js errno-Code wie `"ENOENT"`, wenn auf dem Fehler vorhanden

714 

715#### Plugin-Installiert-Ereignis

716 

717Protokolliert, wenn ein Plugin die Installation abgeschlossen hat, sowohl vom `claude plugin install` CLI-Befehl als auch von der interaktiven `/plugin` UI.

718 

719**Ereignisname**: `claude_code.plugin_installed`

720 

721**Attribute**:

722 

723* Alle [Standardattribute](#standardattribute)

724* `event.name`: `"plugin_installed"`

725* `event.timestamp`: ISO 8601-Zeitstempel

726* `event.sequence`: monoton steigende Zähler zur Sortierung von Ereignissen innerhalb einer Sitzung

727* `marketplace.is_official`: `"true"`, wenn der Marketplace ein offizieller Anthropic-Marketplace ist, `"false"` andernfalls

728* `install.trigger`: `"cli"` oder `"ui"`

729* `plugin.name`: Name des installierten Plugins. Für Drittanbieter-Marketplaces ist dies nur enthalten, wenn `OTEL_LOG_TOOL_DETAILS=1`

730* `plugin.version`: Plugin-Version, wenn in der Marketplace-Eintrag deklariert. Für Drittanbieter-Marketplaces ist dies nur enthalten, wenn `OTEL_LOG_TOOL_DETAILS=1`

731* `marketplace.name`: Marketplace, von dem das Plugin installiert wurde. Für Drittanbieter-Marketplaces ist dies nur enthalten, wenn `OTEL_LOG_TOOL_DETAILS=1`

732 

733#### Skill-Aktiviert-Ereignis

734 

735Protokolliert, wenn ein Skill aufgerufen wird, ob Claude ihn über das Skill-Tool aufruft oder Sie ihn als `/` Befehl ausführen.

736 

737**Ereignisname**: `claude_code.skill_activated`

738 

739**Attribute**:

740 

741* Alle [Standardattribute](#standardattribute)

742* `event.name`: `"skill_activated"`

743* `event.timestamp`: ISO 8601-Zeitstempel

744* `event.sequence`: monoton steigende Zähler zur Sortierung von Ereignissen innerhalb einer Sitzung

745* `skill.name`: Name des Skills. Für benutzerdefinierte und Drittanbieter-Plugin-Skills ist der Wert der Platzhalter `"custom_skill"`, es sei denn, `OTEL_LOG_TOOL_DETAILS=1`

746* `invocation_trigger`: Wie der Skill ausgelöst wurde (`"user-slash"`, `"claude-proactive"` oder `"nested-skill"`)

747* `skill.source`: Wo der Skill geladen wurde (zum Beispiel `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)

748* `plugin.name` (wenn `OTEL_LOG_TOOL_DETAILS=1` oder das Plugin ist von einem offiziellen Marketplace): Name des besitzenden Plugins, wenn der Skill von einem Plugin bereitgestellt wird

749* `marketplace.name` (wenn `OTEL_LOG_TOOL_DETAILS=1` oder das Plugin ist von einem offiziellen Marketplace): Marketplace des besitzenden Plugins, wenn der Skill von einem Plugin bereitgestellt wird

750 

751#### At-Mention-Ereignis

752 

753Protokolliert, wenn Claude Code ein `@`-Mention in einem Prompt auflöst. Nicht jedes Mention gibt ein Ereignis aus: Early-Exit-Pfade wie Berechtigungsverweigerungen, übergroße Dateien, PDF-Referenz-Anhänge und Fehler beim Auflisten von Verzeichnissen werden zurückgegeben, ohne zu protokollieren.

754 

755**Ereignisname**: `claude_code.at_mention`

756 

757**Attribute**:

758 

759* Alle [Standardattribute](#standardattribute)

760* `event.name`: `"at_mention"`

761* `event.timestamp`: ISO 8601-Zeitstempel

762* `event.sequence`: monoton steigende Zähler zur Sortierung von Ereignissen innerhalb einer Sitzung

763* `mention_type`: Typ des Mentions (`"file"`, `"directory"`, `"agent"`, `"mcp_resource"`)

764* `success`: Ob das Mention erfolgreich aufgelöst wurde (`"true"` oder `"false"`)

765 

766#### API-Wiederholungen-Erschöpft-Ereignis

767 

768Protokolliert einmal, wenn eine API-Anfrage nach mehr als einem Versuch fehlschlägt. Wird zusammen mit dem letzten `api_error` Ereignis ausgegeben.

769 

770**Ereignisname**: `claude_code.api_retries_exhausted`

771 

772**Attribute**:

773 

774* Alle [Standardattribute](#standardattribute)

775* `event.name`: `"api_retries_exhausted"`

776* `event.timestamp`: ISO 8601-Zeitstempel

777* `event.sequence`: monoton steigende Zähler zur Sortierung von Ereignissen innerhalb einer Sitzung

778* `model`: Verwendetes Modell

779* `error`: Letzte Fehlermeldung

780* `status_code`: HTTP-Statuscode als Zahl. Nicht vorhanden für Nicht-HTTP-Fehler.

781* `total_attempts`: Gesamtzahl der Versuche

782* `total_retry_duration_ms`: Gesamte Wanduhr-Zeit über alle Versuche

783* `speed`: `"fast"` oder `"normal"`

784 

785#### Hook-Ausführungs-Start-Ereignis

786 

787Protokolliert, wenn ein oder mehrere Hooks für ein Hook-Ereignis beginnen auszuführen.

788 

789**Ereignisname**: `claude_code.hook_execution_start`

790 

791**Attribute**:

792 

793* Alle [Standardattribute](#standardattribute)

794* `event.name`: `"hook_execution_start"`

795* `event.timestamp`: ISO 8601-Zeitstempel

796* `event.sequence`: monoton steigende Zähler zur Sortierung von Ereignissen innerhalb einer Sitzung

797* `hook_event`: Hook-Ereignistyp, wie `"PreToolUse"` oder `"PostToolUse"`

798* `hook_name`: Vollständiger Hook-Name einschließlich Matcher, wie `"PreToolUse:Write"`

799* `num_hooks`: Anzahl der übereinstimmenden Hook-Befehle

800* `managed_only`: `"true"`, wenn nur verwaltete Richtlinien-Hooks zulässig sind

801* `hook_source`: `"policySettings"` oder `"merged"`

802* `hook_definitions`: JSON-serialisierte Hook-Konfiguration. Nur enthalten, wenn sowohl detailliertes Beta-Tracing als auch `OTEL_LOG_TOOL_DETAILS=1` aktiviert sind

803 

804#### Hook-Ausführungs-Abschluss-Ereignis

805 

806Protokolliert, wenn alle Hooks für ein Hook-Ereignis abgeschlossen sind.

807 

808**Ereignisname**: `claude_code.hook_execution_complete`

809 

810**Attribute**:

811 

812* Alle [Standardattribute](#standardattribute)

813* `event.name`: `"hook_execution_complete"`

814* `event.timestamp`: ISO 8601-Zeitstempel

815* `event.sequence`: monoton steigende Zähler zur Sortierung von Ereignissen innerhalb einer Sitzung

816* `hook_event`: Hook-Ereignistyp

817* `hook_name`: Vollständiger Hook-Name einschließlich Matcher

818* `num_hooks`: Anzahl der übereinstimmenden Hook-Befehle

819* `num_success`: Anzahl, die erfolgreich abgeschlossen wurde

820* `num_blocking`: Anzahl, die eine Blockierungsentscheidung zurückgegeben hat

821* `num_non_blocking_error`: Anzahl, die ohne Blockierung fehlgeschlagen ist

822* `num_cancelled`: Anzahl, die vor Abschluss abgebrochen wurde

823* `total_duration_ms`: Wanduhr-Dauer aller übereinstimmenden Hooks

824* `managed_only`: `"true"`, wenn nur verwaltete Richtlinien-Hooks zulässig sind

825* `hook_source`: `"policySettings"` oder `"merged"`

826* `hook_definitions`: JSON-serialisierte Hook-Konfiguration. Nur enthalten, wenn sowohl detailliertes Beta-Tracing als auch `OTEL_LOG_TOOL_DETAILS=1` aktiviert sind

827 

828#### Kompaktierungs-Ereignis

829 

830Protokolliert, wenn die Konversationskompaktierung abgeschlossen ist.

831 

832**Ereignisname**: `claude_code.compaction`

833 

834**Attribute**:

835 

836* Alle [Standardattribute](#standardattribute)

837* `event.name`: `"compaction"`

838* `event.timestamp`: ISO 8601-Zeitstempel

839* `event.sequence`: monoton steigende Zähler zur Sortierung von Ereignissen innerhalb einer Sitzung

840* `trigger`: `"auto"` oder `"manual"`

841* `success`: `"true"` oder `"false"`

842* `duration_ms`: Kompaktierungs-Dauer

843* `pre_tokens`: Ungefähre Token-Anzahl vor Kompaktierung

844* `post_tokens`: Ungefähre Token-Anzahl nach Kompaktierung

845* `error`: Fehlermeldung, wenn Kompaktierung fehlgeschlagen ist

846 

847## Interpretation von Metriken- und Ereignisdaten

848 

849Die exportierten Metriken und Ereignisse unterstützen eine Reihe von Analysen:

850 

851### Nutzungsüberwachung

852 

853| Metrik | Analysemöglichkeit |

854| ------------------------------------------------------------- | ------------------------------------------------------------------------------ |

855| `claude_code.token.usage` | Aufschlüsselung nach `type` (input/output), Benutzer, Team oder Modell |

856| `claude_code.session.count` | Verfolgung der Akzeptanz und des Engagements im Laufe der Zeit |

857| `claude_code.lines_of_code.count` | Messung der Produktivität durch Verfolgung von Code-Hinzufügungen/Entfernungen |

858| `claude_code.commit.count` & `claude_code.pull_request.count` | Verständnis der Auswirkungen auf Entwicklungs-Workflows |

859 

860### Kostenüberwachung

861 

862Die Metrik `claude_code.cost.usage` hilft bei:

863 

864* Verfolgung von Nutzungstrends über Teams oder Einzelpersonen hinweg

865* Identifikation von Sitzungen mit hoher Nutzung zur Optimierung

866 

867<Note>

868 Kostenmetriken sind Näherungswerte. Für offizielle Abrechnungsdaten konsultieren Sie Ihren API-Anbieter (Claude Console, Amazon Bedrock oder Google Cloud Vertex).

869</Note>

870 

871### Warnungen und Segmentierung

872 

873Häufige Warnungen, die Sie in Betracht ziehen sollten:

874 

875* Kostensteigerungen

876* Ungewöhnlicher Token-Verbrauch

877* Hohes Sitzungsvolumen von bestimmten Benutzern

878 

879Alle Metriken können nach `user.account_uuid`, `user.account_id`, `organization.id`, `session.id`, `model` und `app.version` segmentiert werden.

880 

881### Wiederholungserschöpfung erkennen

882 

883Claude Code wiederholt fehlgeschlagene API-Anfragen intern und gibt nur nach dem Aufgeben ein einzelnes `claude_code.api_error` Ereignis aus, daher ist das Ereignis selbst das Endsignal für diese Anfrage. Zwischenzeitliche Wiederholungsversuche werden nicht als separate Ereignisse protokolliert.

884 

885Das Attribut `attempt` auf dem Ereignis zeichnet auf, wie viele Versuche insgesamt unternommen wurden. Ein Wert größer als `CLAUDE_CODE_MAX_RETRIES` (Standard `10`) zeigt an, dass die Anfrage alle Wiederholungen bei einem vorübergehenden Fehler erschöpft hat. Ein niedrigerer Wert zeigt einen nicht wiederholbaren Fehler wie eine `400` Antwort an.

886 

887Um eine Sitzung zu unterscheiden, die sich von einer, die steckengeblieben ist, erholt hat, gruppieren Sie Ereignisse nach `session.id` und prüfen Sie, ob ein späteres `api_request` Ereignis nach dem Fehler vorhanden ist.

888 

889### Ereignisanalyse

890 

891Die Ereignisdaten bieten detaillierte Einblicke in Claude Code-Interaktionen:

892 

893**Tool-Nutzungsmuster**: Analysieren Sie Tool-Ergebnis-Ereignisse, um zu identifizieren:

894 

895* Am häufigsten verwendete Tools

896* Tool-Erfolgsquoten

897* Durchschnittliche Tool-Ausführungszeiten

898* Fehlermuster nach Tool-Typ

899 

900**Leistungsüberwachung**: Verfolgen Sie API-Anfrage-Dauern und Tool-Ausführungszeiten, um Leistungsengpässe zu identifizieren.

901 

902## Backend-Überlegungen

903 

904Ihre Wahl des Metriken-, Logs- und Traces-Backends bestimmt die Arten von Analysen, die Sie durchführen können:

905 

906### Für Metriken

907 

908* **Zeitreihendatenbanken (zum Beispiel Prometheus)**: Ratenberechnungen, aggregierte Metriken

909* **Spaltenorientierte Speicher (zum Beispiel ClickHouse)**: Komplexe Abfragen, eindeutige Benutzeranalyse

910* **Vollständige Observability-Plattformen (zum Beispiel Honeycomb, Datadog)**: Erweiterte Abfragen, Visualisierung, Warnungen

911 

912### Für Ereignisse/Logs

913 

914* **Log-Aggregationssysteme (zum Beispiel Elasticsearch, Loki)**: Volltextsuche, Log-Analyse

915* **Spaltenorientierte Speicher (zum Beispiel ClickHouse)**: Strukturierte Ereignisanalyse

916* **Vollständige Observability-Plattformen (zum Beispiel Honeycomb, Datadog)**: Korrelation zwischen Metriken und Ereignissen

917 

918### Für Traces

919 

920Wählen Sie ein Backend, das verteilte Trace-Speicherung und Span-Korrelation unterstützt:

921 

922* **Verteilte Tracing-Systeme (zum Beispiel Jaeger, Zipkin, Grafana Tempo)**: Span-Visualisierung, Request-Waterfalls, Latenzanalyse

923* **Vollständige Observability-Plattformen (zum Beispiel Honeycomb, Datadog)**: Trace-Suche und Korrelation mit Metriken und Logs

924 

925Für Organisationen, die Daily/Weekly/Monthly Active User (DAU/WAU/MAU) Metriken benötigen, sollten Sie Backends in Betracht ziehen, die effiziente Abfragen eindeutiger Werte unterstützen.

926 

927## Dienstinformationen

928 

929Alle Metriken und Ereignisse werden mit den folgenden Ressourcenattributen exportiert:

930 

931* `service.name`: `claude-code`

932* `service.version`: Aktuelle Claude Code-Version

933* `os.type`: Betriebssystemtyp (zum Beispiel `linux`, `darwin`, `windows`)

934* `os.version`: Betriebssystem-Versionsnummer

935* `host.arch`: Host-Architektur (zum Beispiel `amd64`, `arm64`)

936* `wsl.version`: WSL-Versionsnummer (nur vorhanden, wenn auf Windows Subsystem for Linux ausgeführt)

937* Meter-Name: `com.anthropic.claude_code`

938 

939## ROI-Messung-Ressourcen

940 

941Für einen umfassenden Leitfaden zur Messung der Kapitalrendite für Claude Code, einschließlich Telemetrie-Setup, Kostenanalyse, Produktivitätsmetriken und automatisierter Berichterstattung, siehe den [Claude Code ROI Measurement Guide](https://github.com/anthropics/claude-code-monitoring-guide). Dieses Repository bietet einsatzbereite Docker Compose-Konfigurationen, Prometheus- und OpenTelemetry-Setups sowie Vorlagen zur Generierung von Produktivitätsberichten, die in Tools wie Linear integriert sind.

942 

943## Sicherheit und Datenschutz

944 

945* OpenTelemetry-Export zu Ihrem Backend ist opt-in und erfordert explizite Konfiguration. Informationen zu Anthropics separater operativer Telemetrie und wie Sie diese deaktivieren, finden Sie unter [Datennutzung](/de/data-usage#telemetry-services)

946* Rohe Dateiinhalte und Code-Snippets sind nicht in Metriken oder Ereignissen enthalten. Trace-Spans sind ein separater Datenpfad: siehe die Aufzählung `OTEL_LOG_TOOL_CONTENT` unten

947* Wenn über OAuth authentifiziert, ist `user.email` in Telemetrie-Attributen enthalten. Wenn dies ein Problem für Ihre Organisation darstellt, arbeiten Sie mit Ihrem Telemetrie-Backend zusammen, um dieses Feld zu filtern oder zu schwärzen

948* Benutzer-Prompt-Inhalte werden standardmäßig nicht erfasst. Nur die Prompt-Länge wird aufgezeichnet. Um Benutzer-Prompt-Inhalte einzubeziehen, setzen Sie `OTEL_LOG_USER_PROMPTS=1`

949* Tool-Eingabeargumente und Parameter werden standardmäßig nicht protokolliert. Um sie einzubeziehen, setzen Sie `OTEL_LOG_TOOL_DETAILS=1`. Wenn aktiviert, enthalten `tool_result`-Ereignisse ein `tool_parameters`-Attribut mit Bash-Befehlen, MCP-Server- und Tool-Namen sowie Skill-Namen, plus ein `tool_input`-Attribut mit Dateipfaden, URLs, Suchmustern und anderen Argumenten. `user_prompt`-Ereignisse enthalten den wörtlichen `command_name` für benutzerdefinierte, Plugin- und MCP-Befehle. Trace-Spans enthalten das gleiche `tool_input`-Attribut und eingabebezogene Attribute wie `file_path`. Einzelne Werte über 512 Zeichen werden gekürzt und die Gesamtmenge ist auf etwa 4 K Zeichen begrenzt, aber die Argumente können immer noch vertrauliche Werte enthalten. Konfigurieren Sie Ihr Telemetrie-Backend, um diese Attribute nach Bedarf zu filtern oder zu schwärzen

950* Tool-Eingabe- und Ausgabeinhalte werden in Trace-Spans standardmäßig nicht protokolliert. Um sie einzubeziehen, setzen Sie `OTEL_LOG_TOOL_CONTENT=1`. Wenn aktiviert, enthalten Span-Ereignisse vollständige Tool-Eingabe- und Ausgabeinhalte, gekürzt bei 60 KB pro Span. Dies kann rohe Dateiinhalte aus Read-Tool-Ergebnissen und Bash-Befehlsausgabe enthalten. Konfigurieren Sie Ihr Telemetrie-Backend, um diese Attribute nach Bedarf zu filtern oder zu schwärzen

951* Rohe Anthropic Messages API-Anfrage- und Antwort-Texte werden standardmäßig nicht protokolliert. Um sie einzubeziehen, setzen Sie `OTEL_LOG_RAW_API_BODIES`. Mit `=1` gibt jeder API-Aufruf `api_request_body` und `api_response_body` Log-Ereignisse aus, deren `body`-Attribut die JSON-serialisierte Nutzlast ist, gekürzt bei 60 KB. Mit `=file:<dir>` werden ungekürzte Texte unter diesem Verzeichnis in `.request.json` und `.response.json` Dateien geschrieben und die Ereignisse tragen einen `body_ref` Pfad statt des Inline-Textes. Versenden Sie das Verzeichnis mit einem Log-Collector oder Sidecar statt über den Telemetrie-Stream. In beiden Modi enthalten Texte die gesamte Konversationshistorie (Systemprompt, jeder vorherige Benutzer- und Assistent-Durchgang, Tool-Ergebnisse), daher impliziert das Aktivieren dies Zustimmung zu allem, was die anderen `OTEL_LOG_*` Content-Flags offenbaren würden. Claudes Extended-Thinking-Inhalte werden unabhängig von anderen Einstellungen immer aus diesen Texten geschwärzt

952 

953## Überwachung von Claude Code auf Amazon Bedrock

954 

955Für detaillierte Anleitung zur Überwachung der Claude Code-Nutzung für Amazon Bedrock siehe [Claude Code Monitoring Implementation (Bedrock)](https://github.com/aws-solutions-library-samples/guidance-for-claude-code-with-amazon-bedrock/blob/main/assets/docs/MONITORING.md).

network-config.md +132 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Enterprise-Netzwerkkonfiguration

6 

7> Konfigurieren Sie Claude Code für Enterprise-Umgebungen mit Proxy-Servern, benutzerdefinierten Zertifizierungsstellen (CA) und gegenseitiger Transport Layer Security (mTLS)-Authentifizierung.

8 

9Claude Code unterstützt verschiedene Enterprise-Netzwerk- und Sicherheitskonfigurationen über Umgebungsvariablen. Dies umfasst das Routing von Datenverkehr über unternehmenseigene Proxy-Server, das Vertrauen in benutzerdefinierte Zertifizierungsstellen (CA) und die Authentifizierung mit gegenseitigen Transport Layer Security (mTLS)-Zertifikaten für erhöhte Sicherheit.

10 

11<Note>

12 Alle auf dieser Seite gezeigten Umgebungsvariablen können auch in [`settings.json`](/de/settings) konfiguriert werden.

13</Note>

14 

15## Proxy-Konfiguration

16 

17### Umgebungsvariablen

18 

19Claude Code respektiert Standard-Proxy-Umgebungsvariablen:

20 

21```bash theme={null}

22# HTTPS-Proxy (empfohlen)

23export HTTPS_PROXY=https://proxy.example.com:8080

24 

25# HTTP-Proxy (falls HTTPS nicht verfügbar)

26export HTTP_PROXY=http://proxy.example.com:8080

27 

28# Proxy für spezifische Anfragen umgehen – durch Leerzeichen getrennt

29export NO_PROXY="localhost 192.168.1.1 example.com .example.com"

30# Proxy für spezifische Anfragen umgehen – durch Komma getrennt

31export NO_PROXY="localhost,192.168.1.1,example.com,.example.com"

32# Proxy für alle Anfragen umgehen

33export NO_PROXY="*"

34```

35 

36<Note>

37 Claude Code unterstützt keine SOCKS-Proxies.

38</Note>

39 

40### Basis-Authentifizierung

41 

42Wenn Ihr Proxy eine Basis-Authentifizierung erfordert, fügen Sie Anmeldedaten in die Proxy-URL ein:

43 

44```bash theme={null}

45export HTTPS_PROXY=http://username:password@proxy.example.com:8080

46```

47 

48<Warning>

49 Vermeiden Sie das Hardcodieren von Passwörtern in Skripten. Verwenden Sie stattdessen Umgebungsvariablen oder sichere Anmeldedatenspeicherung.

50</Warning>

51 

52<Tip>

53 Für Proxies, die erweiterte Authentifizierung erfordern (NTLM, Kerberos usw.), erwägen Sie die Verwendung eines LLM-Gateway-Dienstes, der Ihre Authentifizierungsmethode unterstützt.

54</Tip>

55 

56## CA-Zertifikatspeicher

57 

58Standardmäßig vertraut Claude Code sowohl seinen gebündelten Mozilla-CA-Zertifikaten als auch dem Zertifikatspeicher Ihres Betriebssystems. Enterprise-TLS-Inspektions-Proxies wie CrowdStrike Falcon und Zscaler funktionieren ohne zusätzliche Konfiguration, wenn ihr Root-Zertifikat im Betriebssystem-Vertrauensspeicher installiert ist.

59 

60<Note>

61 Die Integration des System-CA-Speichers erfordert die native Claude Code-Binärdistribution. Bei Ausführung auf der Node.js-Laufzeit wird der System-CA-Speicher nicht automatisch zusammengeführt. Setzen Sie in diesem Fall `NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem`, um einer Enterprise-Root-CA zu vertrauen.

62</Note>

63 

64`CLAUDE_CODE_CERT_STORE` akzeptiert eine durch Kommas getrennte Liste von Quellen. Erkannte Werte sind `bundled` für den mit Claude Code ausgelieferten Mozilla-CA-Satz und `system` für den Betriebssystem-Vertrauensspeicher. Der Standard ist `bundled,system`.

65 

66Um nur dem gebündelten Mozilla-CA-Satz zu vertrauen:

67 

68```bash theme={null}

69export CLAUDE_CODE_CERT_STORE=bundled

70```

71 

72Um nur dem Betriebssystem-Zertifikatspeicher zu vertrauen:

73 

74```bash theme={null}

75export CLAUDE_CODE_CERT_STORE=system

76```

77 

78<Note>

79 `CLAUDE_CODE_CERT_STORE` hat keinen dedizierten `settings.json`-Schemaschlüssel. Setzen Sie ihn über den `env`-Block in `~/.claude/settings.json` oder direkt in der Prozessumgebung.

80</Note>

81 

82## Benutzerdefinierte CA-Zertifikate

83 

84Wenn Ihre Enterprise-Umgebung eine benutzerdefinierte CA verwendet, konfigurieren Sie Claude Code so, dass dieser direkt vertraut wird:

85 

86```bash theme={null}

87export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem

88```

89 

90## mTLS-Authentifizierung

91 

92Für Enterprise-Umgebungen, die Client-Zertifikat-Authentifizierung erfordern:

93 

94```bash theme={null}

95# Client-Zertifikat für Authentifizierung

96export CLAUDE_CODE_CLIENT_CERT=/path/to/client-cert.pem

97 

98# Privater Schlüssel des Clients

99export CLAUDE_CODE_CLIENT_KEY=/path/to/client-key.pem

100 

101# Optional: Passphrase für verschlüsselten privaten Schlüssel

102export CLAUDE_CODE_CLIENT_KEY_PASSPHRASE="your-passphrase"

103```

104 

105## Netzwerkzugriffanforderungen

106 

107Claude Code benötigt Zugriff auf die folgenden URLs. Setzen Sie diese in Ihrer Proxy-Konfiguration und Firewall-Regeln auf die Allowlist, besonders in containerisierten oder eingeschränkten Netzwerkumgebungen.

108 

109| URL | Erforderlich für |

110| ------------------------------ | ----------------------------------------------------------------------------------------------- |

111| `api.anthropic.com` | Claude-API-Anfragen |

112| `claude.ai` | Authentifizierung für claude.ai-Konten |

113| `platform.claude.com` | Authentifizierung für Anthropic Console-Konten |

114| `downloads.claude.ai` | Download von Plugin-Ausführungsdateien; nativer Installer und nativer Auto-Updater |

115| `storage.googleapis.com` | {/* max-version: 2.1.115 */}Nativer Installer und nativer Auto-Updater in Versionen vor 2.1.116 |

116| `bridge.claudeusercontent.com` | [Claude in Chrome](/de/chrome) Erweiterungs-WebSocket-Brücke |

117 

118Wenn Sie Claude Code über npm installieren oder Ihre eigene Binärverteilung verwalten, benötigen Endbenutzer möglicherweise keinen Zugriff auf `downloads.claude.ai` oder `storage.googleapis.com`.

119 

120Claude Code sendet standardmäßig optionale operative Telemetrie, die Sie mit Umgebungsvariablen deaktivieren können. Siehe [Telemetrie-Dienste](/de/data-usage#telemetry-services), um zu erfahren, wie Sie diese deaktivieren, bevor Sie Ihre Allowlist finalisieren.

121 

122Bei Verwendung von [Amazon Bedrock](/de/amazon-bedrock), [Google Vertex AI](/de/google-vertex-ai) oder [Microsoft Foundry](/de/microsoft-foundry) geht der Modell-Datenverkehr und die Authentifizierung zu Ihrem Anbieter statt zu `api.anthropic.com`, `claude.ai` oder `platform.claude.com`. Das WebFetch-Tool ruft weiterhin `api.anthropic.com` für seine [Domain-Sicherheitsprüfung](/de/data-usage#webfetch-domain-safety-check) auf, es sei denn, Sie setzen `skipWebFetchPreflight: true` in [Einstellungen](/de/settings).

123 

124[Claude Code im Web](/de/claude-code-on-the-web) und [Code Review](/de/code-review) verbinden sich von der von Anthropic verwalteten Infrastruktur aus mit Ihren Repositories. Wenn Ihre GitHub Enterprise Cloud-Organisation den Zugriff nach IP-Adresse einschränkt, aktivieren Sie [IP-Allowlist-Vererbung für installierte GitHub Apps](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#allowing-access-by-github-apps). Die Claude GitHub App registriert ihre IP-Bereiche, sodass die Aktivierung dieser Einstellung den Zugriff ohne manuelle Konfiguration ermöglicht. Um [die Bereiche stattdessen manuell zu Ihrer Allowlist hinzuzufügen](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#adding-an-allowed-ip-address) oder um andere Firewalls zu konfigurieren, siehe [Anthropic API IP-Adressen](https://platform.claude.com/docs/en/api/ip-addresses).

125 

126Für selbstgehostete [GitHub Enterprise Server](/de/github-enterprise-server)-Instanzen hinter einer Firewall müssen Sie die gleichen [Anthropic API IP-Adressen](https://platform.claude.com/docs/en/api/ip-addresses) auf die Allowlist setzen, damit die Anthropic-Infrastruktur Ihren GHES-Host erreichen kann, um Repositories zu klonen und Review-Kommentare zu posten.

127 

128## Zusätzliche Ressourcen

129 

130* [Claude Code-Einstellungen](/de/settings)

131* [Referenz für Umgebungsvariablen](/de/env-vars)

132* [Leitfaden zur Fehlerbehebung](/de/troubleshooting)

output-styles.md +90 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Ausgabestile

6 

7> Passen Sie Claude Code für Anwendungsfälle über Softwareentwicklung hinaus an

8 

9Ausgabestile ermöglichen es Ihnen, Claude Code als jeden Agententyp zu verwenden, während Sie seine Kernfunktionen wie das Ausführen lokaler Skripte, das Lesen/Schreiben von Dateien und das Nachverfolgen von TODOs beibehalten.

10 

11## Integrierte Ausgabestile

12 

13Der **Standard**-Ausgabestil von Claude Code ist die vorhandene Systemaufforderung, die Ihnen helfen soll, Softwareentwicklungsaufgaben effizient zu bewältigen.

14 

15Es gibt zwei zusätzliche integrierte Ausgabestile, die sich auf das Unterrichten der Codebasis und der Funktionsweise von Claude konzentrieren:

16 

17* **Explanatory**: Bietet pädagogische „Insights" zwischen der Unterstützung bei Softwareentwicklungsaufgaben. Hilft Ihnen, Implementierungsentscheidungen und Codebase-Muster zu verstehen.

18 

19* **Learning**: Kollaborativer, Lern-durch-Tun-Modus, in dem Claude nicht nur „Insights" beim Codieren teilt, sondern Sie auch auffordert, kleine, strategische Codestücke selbst beizutragen. Claude Code fügt `TODO(human)`-Marker in Ihren Code ein, damit Sie diese implementieren können.

20 

21## Wie Ausgabestile funktionieren

22 

23Ausgabestile ändern direkt die Systemaufforderung von Claude Code.

24 

25* Benutzerdefinierte Ausgabestile schließen Anweisungen zum Codieren aus (z. B. Überprüfung von Code mit Tests), es sei denn, `keep-coding-instructions` ist true.

26* Alle Ausgabestile haben ihre eigenen benutzerdefinierten Anweisungen am Ende der Systemaufforderung hinzugefügt.

27* Alle Ausgabestile lösen Erinnerungen für Claude aus, um die Ausgabestil-Anweisungen während des Gesprächs einzuhalten.

28 

29Die Tokennutzung hängt vom Stil ab. Das Hinzufügen von Anweisungen zur Systemaufforderung erhöht die Eingabe-Token, obwohl Prompt Caching diese Kosten nach der ersten Anfrage in einer Sitzung reduziert. Die integrierten Explanatory- und Learning-Stile erzeugen absichtlich längere Antworten als Standard, was die Ausgabe-Token erhöht. Bei benutzerdefinierten Stilen hängt die Tokennutzung für die Ausgabe davon ab, was Ihre Anweisungen Claude zu produzieren sagen.

30 

31## Ändern Sie Ihren Ausgabestil

32 

33Führen Sie `/config` aus und wählen Sie **Output style**, um einen Stil aus einem Menü auszuwählen. Ihre Auswahl wird in `.claude/settings.local.json` auf der [lokalen Projektebene](/de/settings) gespeichert.

34 

35Um einen Stil ohne Menü festzulegen, bearbeiten Sie das Feld `outputStyle` direkt in einer Einstellungsdatei:

36 

37```json theme={null}

38{

39 "outputStyle": "Explanatory"

40}

41```

42 

43Da der Ausgabestil in der Systemaufforderung beim Sitzungsstart festgelegt wird, werden Änderungen beim nächsten Start einer neuen Sitzung wirksam. Dies hält die Systemaufforderung während eines Gesprächs stabil, sodass Prompt Caching die Latenz und Kosten reduzieren kann.

44 

45## Erstellen Sie einen benutzerdefinierten Ausgabestil

46 

47Benutzerdefinierte Ausgabestile sind Markdown-Dateien mit Frontmatter und dem Text, der zur Systemaufforderung hinzugefügt wird:

48 

49```markdown theme={null}

50---

51name: My Custom Style

52description:

53 A brief description of what this style does, to be displayed to the user

54---

55 

56# Custom Style Instructions

57 

58You are an interactive CLI tool that helps users with software engineering

59tasks. [Your custom instructions here...]

60 

61## Specific Behaviors

62 

63[Define how the assistant should behave in this style...]

64```

65 

66Sie können diese Dateien auf Benutzerebene (`~/.claude/output-styles`) oder Projektebene (`.claude/output-styles`) speichern.

67 

68### Frontmatter

69 

70Ausgabestil-Dateien unterstützen Frontmatter zum Angeben von Metadaten:

71 

72| Frontmatter | Zweck | Standard |

73| :------------------------- | :------------------------------------------------------------------------------------------------- | :------------------------- |

74| `name` | Name des Ausgabestils, falls nicht der Dateiname | Wird vom Dateinamen geerbt |

75| `description` | Beschreibung des Ausgabestils, angezeigt in der `/config`-Auswahl | Keine |

76| `keep-coding-instructions` | Ob die Teile der Systemaufforderung von Claude Code bezüglich Codierung beibehalten werden sollen. | false |

77 

78## Vergleiche mit verwandten Funktionen

79 

80### Ausgabestile vs. CLAUDE.md vs. --append-system-prompt

81 

82Ausgabestile schalten die Teile der Standard-Systemaufforderung von Claude Code, die spezifisch für Softwareentwicklung sind, vollständig aus. Weder CLAUDE.md noch `--append-system-prompt` bearbeiten die Standard-Systemaufforderung von Claude Code. CLAUDE.md fügt den Inhalt als Benutzernachricht *nach* der Standard-Systemaufforderung von Claude Code hinzu. `--append-system-prompt` hängt den Inhalt an die Systemaufforderung an.

83 

84### Ausgabestile vs. [Agents](/de/sub-agents)

85 

86Ausgabestile beeinflussen direkt die Hauptagentenschleife und beeinflussen nur die Systemaufforderung. Agents werden aufgerufen, um bestimmte Aufgaben zu bewältigen, und können zusätzliche Einstellungen wie das zu verwendende Modell, die verfügbaren Tools und einen Kontext darüber enthalten, wann der Agent verwendet werden soll.

87 

88### Ausgabestile vs. [Skills](/de/skills)

89 

90Ausgabestile ändern, wie Claude antwortet (Formatierung, Ton, Struktur), und sind immer aktiv, sobald sie ausgewählt sind. Skills sind aufgabenspezifische Aufforderungen, die Sie mit `/skill-name` aufrufen oder die Claude automatisch lädt, wenn relevant. Verwenden Sie Ausgabestile für konsistente Formatierungspräferenzen; verwenden Sie Skills für wiederverwendbare Workflows und Aufgaben.

overview.md +875 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code Übersicht

6 

7> Claude Code ist ein agentengestütztes Codierungswerkzeug, das Ihre Codebasis liest, Dateien bearbeitet, Befehle ausführt und sich in Ihre Entwicklungstools integriert. Verfügbar in Ihrem Terminal, IDE, Desktop-App und Browser.

8 

9export const InstallConfigurator = ({defaultSurface = 'terminal'}) => {

10 const TERM = {

11 mac: {

12 label: 'macOS / Linux',

13 cmd: 'curl -fsSL https://claude.ai/install.sh | bash'

14 },

15 win: {

16 label: 'Windows'

17 },

18 brew: {

19 label: 'Homebrew',

20 cmd: 'brew install --cask claude-code'

21 },

22 winget: {

23 label: 'WinGet',

24 cmd: 'winget install Anthropic.ClaudeCode'

25 }

26 };

27 const WIN_VARIANTS = {

28 ps: 'irm https://claude.ai/install.ps1 | iex',

29 cmd: 'curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd'

30 };

31 const TABS = [{

32 key: 'terminal',

33 label: 'Terminal'

34 }, {

35 key: 'desktop',

36 label: 'Desktop'

37 }, {

38 key: 'vscode',

39 label: 'VS Code'

40 }, {

41 key: 'jetbrains',

42 label: 'JetBrains'

43 }];

44 const ALT_TARGETS = {

45 desktop: {

46 name: 'Desktop',

47 tagline: 'The full agent in a native app for macOS and Windows.',

48 installLabel: 'Download the app',

49 installHref: 'https://claude.com/download?utm_source=claude_code&utm_medium=docs&utm_content=configurator_desktop_download',

50 guideHref: '/en/desktop-quickstart'

51 },

52 vscode: {

53 name: 'VS Code',

54 tagline: 'Review diffs, manage context, and chat without leaving your editor.',

55 installLabel: 'Install from Marketplace',

56 installHref: 'https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code',

57 altCmd: 'code --install-extension anthropic.claude-code',

58 guideHref: '/en/vs-code'

59 },

60 jetbrains: {

61 name: 'JetBrains',

62 tagline: 'Native plugin for IntelliJ, PyCharm, WebStorm, and other JetBrains IDEs.',

63 installLabel: 'Install from Marketplace',

64 installHref: 'https://plugins.jetbrains.com/plugin/27310-claude-code-beta-',

65 guideHref: '/en/jetbrains'

66 }

67 };

68 const PROVIDERS = [{

69 key: 'anthropic',

70 label: 'Anthropic'

71 }, {

72 key: 'bedrock',

73 label: 'Amazon Bedrock'

74 }, {

75 key: 'foundry',

76 label: 'Microsoft Foundry'

77 }, {

78 key: 'vertex',

79 label: 'Google Vertex AI'

80 }];

81 const PROVIDER_NOTICE = {

82 bedrock: <>

83 <strong>Configure your AWS account first.</strong> Running on Bedrock

84 requires model access enabled in the AWS console and IAM credentials.{' '}

85 <a href="/en/amazon-bedrock">Bedrock setup guide →</a>

86 </>,

87 vertex: <>

88 <strong>Configure your GCP project first.</strong> Running on Vertex AI

89 requires the Vertex API enabled and a service account with the right

90 permissions.{' '}

91 <a href="/en/google-vertex-ai">Vertex setup guide →</a>

92 </>,

93 foundry: <>

94 <strong>Configure your Azure resources first.</strong> Running on

95 Microsoft Foundry requires an Azure subscription with a Foundry resource

96 and model deployments provisioned.{' '}

97 <a href="/en/microsoft-foundry">Foundry setup guide →</a>

98 </>

99 };

100 const iconCheck = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="3" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

101 <polyline points="20 6 9 17 4 12" />

102 </svg>;

103 const iconCopy = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

104 <rect x="9" y="9" width="13" height="13" rx="2" />

105 <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" />

106 </svg>;

107 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

108 <line x1="5" y1="12" x2="19" y2="12" />

109 <polyline points="12 5 19 12 12 19" />

110 </svg>;

111 const iconArrowUpRight = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

112 <line x1="7" y1="17" x2="17" y2="7" />

113 <polyline points="7 7 17 7 17 17" />

114 </svg>;

115 const iconInfo = (size = 16) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

116 <circle cx="12" cy="12" r="10" />

117 <line x1="12" y1="16" x2="12" y2="12" />

118 <line x1="12" y1="8" x2="12.01" y2="8" />

119 </svg>;

120 const [target, setTarget] = useState(defaultSurface);

121 const [team, setTeam] = useState(false);

122 const [provider, setProvider] = useState('anthropic');

123 const [pkg, setPkg] = useState(() => (/Win/).test(navigator.userAgent) ? 'win' : 'mac');

124 const [winCmd, setWinCmd] = useState(false);

125 const [copied, setCopied] = useState(null);

126 const copyTimer = useRef(null);

127 const handleCopy = async (text, key) => {

128 try {

129 await navigator.clipboard.writeText(text);

130 } catch {

131 const ta = document.createElement('textarea');

132 ta.value = text;

133 document.body.appendChild(ta);

134 ta.select();

135 document.execCommand('copy');

136 document.body.removeChild(ta);

137 }

138 clearTimeout(copyTimer.current);

139 setCopied(key);

140 copyTimer.current = setTimeout(() => setCopied(null), 1800);

141 };

142 const cardBodyCmd = (cmd, prompt) => {

143 const on = copied === 'term';

144 return <div className="cc-ic-card-body">

145 <span className="cc-ic-prompt">{prompt || '$'}</span>

146 <div className="cc-ic-cmd">{cmd}</div>

147 <button type="button" className={'cc-ic-copy' + (on ? ' cc-ic-copied' : '')} onClick={() => handleCopy(cmd, 'term')}>

148 {on ? iconCheck(13) : iconCopy(13)}

149 <span>{on ? 'Copied' : 'Copy'}</span>

150 </button>

151 </div>;

152 };

153 const isWinInstaller = pkg === 'win';

154 const isWinPrompt = pkg === 'win' || pkg === 'winget';

155 const terminalCmd = isWinInstaller ? WIN_VARIANTS[winCmd ? 'cmd' : 'ps'] : TERM[pkg].cmd;

156 const alt = ALT_TARGETS[target];

157 const showNotice = team && provider !== 'anthropic';

158 const STYLES = `

159.cc-ic {

160 --ic-slate: #141413;

161 --ic-clay: #d97757;

162 --ic-clay-deep: #c6613f;

163 --ic-gray-000: #ffffff;

164 --ic-gray-150: #f0eee6;

165 --ic-gray-550: #73726c;

166 --ic-gray-700: #3d3d3a;

167 --ic-border-subtle: rgba(31, 30, 29, 0.08);

168 --ic-border-default: rgba(31, 30, 29, 0.15);

169 --ic-border-strong: rgba(31, 30, 29, 0.3);

170 --ic-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, 'Courier New', monospace;

171 font-family: 'Anthropic Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

172 font-size: 14px; line-height: 1.5; color: var(--ic-slate);

173 margin: 8px 0 32px;

174}

175.dark .cc-ic {

176 --ic-slate: #f0eee6;

177 --ic-gray-000: #262624;

178 --ic-gray-150: #1f1e1d;

179 --ic-gray-550: #91908a;

180 --ic-gray-700: #bfbdb4;

181 --ic-border-subtle: rgba(240, 238, 230, 0.08);

182 --ic-border-default: rgba(240, 238, 230, 0.14);

183 --ic-border-strong: rgba(240, 238, 230, 0.28);

184}

185.dark .cc-ic-check { background: transparent; }

186.dark .cc-ic-card { border: 0.5px solid var(--ic-border-subtle); }

187.dark .cc-ic-p-pill.cc-ic-active { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }

188.cc-ic *, .cc-ic *::before, .cc-ic *::after { box-sizing: border-box; }

189.cc-ic a { text-decoration: none; }

190.cc-ic a:not([class]) { color: inherit; }

191.cc-ic button { font-family: inherit; cursor: pointer; }

192 

193.cc-ic-tab-strip {

194 display: inline-flex; gap: 2px;

195 padding: 4px; background: var(--ic-gray-150);

196 border-radius: 10px; overflow-x: auto;

197 max-width: 100%;

198}

199.cc-ic-tab {

200 appearance: none; background: none; border: none;

201 padding: 10px 18px; font-size: 15px; font-weight: 430;

202 color: var(--ic-gray-550); border-radius: 7px;

203 white-space: nowrap;

204 transition: color 0.12s, background-color 0.12s;

205}

206.cc-ic-tab:hover { color: var(--ic-gray-700); }

207.cc-ic-tab.cc-ic-active {

208 color: var(--ic-slate); font-weight: 500;

209 background: var(--ic-gray-000);

210 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);

211}

212.dark .cc-ic-tab.cc-ic-active { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); }

213 

214.cc-ic-team-wrap { padding: 16px 0 20px; }

215.cc-ic-team-toggle {

216 display: flex; align-items: center; gap: 12px; font-family: inherit;

217 padding: 12px 16px; font-size: 14px; font-weight: 430;

218 color: var(--ic-gray-700); cursor: pointer; user-select: none;

219 width: fit-content; background: var(--ic-gray-150);

220 border: 0.5px solid var(--ic-border-subtle); border-radius: 8px;

221 transition: border-color 0.15s;

222}

223.cc-ic-team-toggle:hover { border-color: var(--ic-border-default); }

224.cc-ic-team-toggle.cc-ic-checked {

225 background: rgba(217, 119, 87, 0.08);

226 border-color: rgba(217, 119, 87, 0.25);

227}

228.cc-ic-check {

229 width: 16px; height: 16px;

230 border: 1px solid var(--ic-border-strong); border-radius: 4px;

231 background: var(--ic-gray-000);

232 display: flex; align-items: center; justify-content: center;

233 flex-shrink: 0;

234}

235.cc-ic-check svg { color: #fff; display: none; }

236.cc-ic-team-toggle.cc-ic-checked .cc-ic-check { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); }

237.cc-ic-team-toggle.cc-ic-checked .cc-ic-check svg { display: block; }

238 

239.cc-ic-team-reveal { display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; }

240.cc-ic-sales {

241 display: flex; align-items: center; justify-content: space-between;

242 gap: 16px; padding: 14px 16px;

243 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

244 border-radius: 8px; flex-wrap: wrap;

245}

246.cc-ic-sales-text { font-size: 13px; color: var(--ic-gray-700); line-height: 1.5; flex: 1; min-width: 200px; }

247.cc-ic-sales-text strong { font-weight: 550; color: var(--ic-slate); }

248.cc-ic-sales-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

249.cc-ic-btn-clay {

250 display: inline-flex; align-items: center; gap: 8px;

251 background: var(--ic-clay-deep); color: #fff; border: none;

252 border-radius: 8px; padding: 8px 14px;

253 font-size: 13px; font-weight: 500;

254 transition: background-color 0.15s; white-space: nowrap;

255}

256.cc-ic-btn-clay:hover { background: var(--ic-clay); }

257.cc-ic-btn-ghost {

258 display: inline-flex; align-items: center; gap: 8px;

259 background: transparent; color: var(--ic-gray-700);

260 border: 0.5px solid var(--ic-border-default);

261 border-radius: 8px; padding: 8px 14px;

262 font-size: 13px; font-weight: 500;

263}

264.cc-ic-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

265 

266.cc-ic-provider-bar {

267 display: flex; align-items: center; gap: 12px;

268 padding: 14px 16px; background: var(--ic-gray-150);

269 border-radius: 8px; font-size: 13px; flex-wrap: wrap;

270}

271.cc-ic-provider-bar .cc-ic-label { color: var(--ic-gray-550); flex-shrink: 0; }

272.cc-ic-provider-pills { display: flex; gap: 4px; flex-wrap: wrap; }

273.cc-ic-p-pill {

274 appearance: none; border: none; background: transparent;

275 padding: 6px 12px; border-radius: 6px;

276 font-size: 13px; font-weight: 430; color: var(--ic-gray-700);

277 white-space: nowrap;

278}

279.cc-ic-p-pill:hover { background: rgba(0, 0, 0, 0.04); }

280.cc-ic-p-pill.cc-ic-active {

281 background: var(--ic-gray-000); color: var(--ic-slate);

282 font-weight: 500; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);

283}

284.cc-ic-provider-notice {

285 display: flex; padding: 16px 18px;

286 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

287 border-radius: 8px; gap: 14px; align-items: flex-start;

288}

289.cc-ic-provider-notice > svg { color: var(--ic-gray-550); margin-top: 2px; flex-shrink: 0; }

290.cc-ic-provider-notice-body { font-size: 14px; line-height: 1.55; color: var(--ic-gray-700); }

291.cc-ic-provider-notice-body strong { font-weight: 550; color: var(--ic-slate); }

292.cc-ic-provider-notice-body a { color: var(--ic-clay-deep); font-weight: 500; }

293.cc-ic-provider-notice-body a:hover { text-decoration: underline; }

294 

295.cc-ic-card { background: #141413; border-radius: 12px; overflow: hidden; }

296.cc-ic-subtabs {

297 display: flex; align-items: center;

298 background: #1a1918;

299 border-bottom: 0.5px solid rgba(255, 255, 255, 0.08);

300 padding: 0 8px; overflow-x: auto;

301}

302.cc-ic-subtab {

303 appearance: none; background: none; border: none;

304 padding: 12px 16px; font-size: 12px;

305 color: rgba(255, 255, 255, 0.5);

306 position: relative; white-space: nowrap;

307}

308.cc-ic-subtab:hover { color: rgba(255, 255, 255, 0.75); }

309.cc-ic-subtab.cc-ic-active { color: #fff; }

310.cc-ic-subtab.cc-ic-active::after {

311 content: ''; position: absolute;

312 left: 12px; right: 12px; bottom: -0.5px;

313 height: 2px; background: var(--ic-clay);

314}

315.cc-ic-shell-switch {

316 display: inline-flex; gap: 2px;

317 margin: 14px 26px 0; padding: 3px;

318 background: rgba(255, 255, 255, 0.06);

319 border: 0.5px solid rgba(255, 255, 255, 0.08);

320 border-radius: 8px;

321 font-family: inherit;

322}

323.cc-ic-shell-option {

324 font: inherit; font-size: 12px; font-weight: 500;

325 padding: 5px 12px; border-radius: 6px;

326 background: transparent; border: none;

327 color: rgba(255, 255, 255, 0.55);

328 cursor: pointer; user-select: none; white-space: nowrap;

329 transition: color 120ms ease, background-color 120ms ease;

330}

331.cc-ic-shell-option:hover { color: rgba(255, 255, 255, 0.85); }

332.cc-ic-shell-option.cc-ic-active {

333 background: rgba(255, 255, 255, 0.12);

334 color: #fff;

335 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);

336}

337 

338.cc-ic-card-body { padding: 24px 26px; display: flex; align-items: flex-start; gap: 14px; }

339.cc-ic-prompt {

340 color: var(--ic-clay); font-family: var(--ic-font-mono);

341 font-size: 17px; user-select: none; padding-top: 2px;

342}

343.cc-ic-cmd {

344 flex: 1; font-family: var(--ic-font-mono);

345 font-size: 17px; color: #f0eee6;

346 line-height: 1.55; white-space: pre-wrap; word-break: break-word;

347}

348.cc-ic-copy {

349 display: inline-flex; align-items: center; gap: 6px;

350 background: rgba(255, 255, 255, 0.08);

351 border: 0.5px solid rgba(255, 255, 255, 0.12);

352 color: rgba(255, 255, 255, 0.85);

353 padding: 7px 13px; border-radius: 8px;

354 font-size: 13px; font-weight: 500; flex-shrink: 0;

355}

356.cc-ic-copy:hover { background: rgba(255, 255, 255, 0.14); }

357.cc-ic-copy.cc-ic-copied { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); color: #fff; }

358 

359.cc-ic-below {

360 margin-top: 12px; font-size: 13px; color: var(--ic-gray-550);

361 display: flex; gap: 16px; flex-wrap: wrap; align-items: baseline;

362}

363.cc-ic-below a { color: var(--ic-gray-700); border-bottom: 0.5px solid var(--ic-border-default); }

364.cc-ic-below a:hover { color: var(--ic-clay-deep); border-bottom-color: var(--ic-clay-deep); }

365.cc-ic-handoff {

366 padding: 22px 24px;

367 background: linear-gradient(180deg, #faf9f4 0%, #f3f1e9 100%);

368 border: 0.5px solid var(--ic-border-default);

369 border-radius: 12px;

370 box-shadow: 0 1px 2px rgba(31, 30, 29, 0.04), 0 6px 16px -4px rgba(31, 30, 29, 0.06);

371}

372.dark .cc-ic-handoff {

373 background: linear-gradient(180deg, #262624 0%, #1f1e1d 100%);

374 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3), 0 6px 16px -4px rgba(0, 0, 0, 0.4);

375}

376.cc-ic-handoff-title {

377 font-size: 16px; font-weight: 550; color: var(--ic-slate);

378 letter-spacing: -0.01em; margin-bottom: 4px;

379}

380.cc-ic-handoff-sub {

381 font-size: 14px; line-height: 1.5; color: var(--ic-gray-700);

382 margin-bottom: 18px;

383}

384.cc-ic-handoff-actions { display: flex; gap: 10px; flex-wrap: wrap; }

385.cc-ic-handoff-alt {

386 margin-top: 12px; font-size: 12px; color: var(--ic-gray-550);

387}

388.cc-ic-handoff-alt code {

389 font-family: var(--ic-font-mono); font-size: 11px;

390 background: var(--ic-gray-150); padding: 2px 6px;

391 border-radius: 4px; color: var(--ic-gray-700);

392}

393.cc-ic-copy-sm {

394 appearance: none; border: none;

395 display: inline-flex; align-items: center; justify-content: center;

396 width: 22px; height: 22px;

397 margin-left: 4px; vertical-align: middle;

398 background: var(--ic-gray-150); color: var(--ic-gray-550);

399 border-radius: 4px;

400 transition: color 0.1s, background-color 0.1s;

401}

402.cc-ic-copy-sm:hover { color: var(--ic-gray-700); background: var(--ic-border-default); }

403.cc-ic-copy-sm.cc-ic-copied { background: var(--ic-clay-deep); color: #fff; }

404 

405@media (max-width: 720px) {

406 .cc-ic-tab { padding: 12px 14px; font-size: 14px; }

407 .cc-ic-sales-actions { width: 100%; }

408 .cc-ic-card-body { padding: 20px; }

409 .cc-ic-cmd { font-size: 15px; }

410}

411`;

412 return <div className="cc-ic not-prose">

413 <style>{STYLES}</style>

414 

415 {}

416 <div className="cc-ic-tab-strip" role="tablist">

417 {TABS.map(t => <button key={t.key} type="button" role="tab" aria-selected={target === t.key} className={'cc-ic-tab' + (target === t.key ? ' cc-ic-active' : '')} onClick={() => setTarget(t.key)}>

418 {t.label}

419 </button>)}

420 </div>

421 

422 {}

423 <div className="cc-ic-team-wrap">

424 <button type="button" role="switch" aria-checked={team} className={'cc-ic-team-toggle' + (team ? ' cc-ic-checked' : '')} onClick={() => setTeam(!team)}>

425 <span className="cc-ic-check">{iconCheck(11)}</span>

426 <span>

427 I’m buying for a team or company (SSO, AWS/Azure/GCP, central billing)

428 </span>

429 </button>

430 </div>

431 

432 {}

433 {team && <div className="cc-ic-team-reveal">

434 <div className="cc-ic-sales">

435 <div className="cc-ic-sales-text">

436 <strong>Set up your team:</strong> self-serve or talk to sales.

437 </div>

438 <div className="cc-ic-sales-actions">

439 <a href="https://claude.ai/upgrade?initialPlanType=team&amp;utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_get_started" className="cc-ic-btn-ghost">

440 Get started

441 </a>

442 <a href="https://www.anthropic.com/contact-sales?utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_contact_sales" className="cc-ic-btn-clay">

443 Contact sales {iconArrowRight()}

444 </a>

445 </div>

446 </div>

447 

448 <div className="cc-ic-provider-bar">

449 <span className="cc-ic-label">Run on</span>

450 <div className="cc-ic-provider-pills" role="radiogroup" aria-label="Provider">

451 {PROVIDERS.map(p => <button key={p.key} type="button" role="radio" aria-checked={provider === p.key} className={'cc-ic-p-pill' + (provider === p.key ? ' cc-ic-active' : '')} onClick={() => setProvider(p.key)}>

452 {p.label}

453 </button>)}

454 </div>

455 </div>

456 

457 {showNotice && <div className="cc-ic-provider-notice">

458 {iconInfo()}

459 <div className="cc-ic-provider-notice-body">

460 {PROVIDER_NOTICE[provider]}

461 </div>

462 </div>}

463 </div>}

464 

465 {}

466 {target === 'terminal' && <div className="cc-ic-card">

467 <div className="cc-ic-subtabs" role="tablist" aria-label="Install method">

468 {Object.keys(TERM).map(k => <button key={k} type="button" role="tab" aria-selected={pkg === k} className={'cc-ic-subtab' + (pkg === k ? ' cc-ic-active' : '')} onClick={() => setPkg(k)}>

469 {TERM[k].label}

470 </button>)}

471 </div>

472 {isWinInstaller && <div className="cc-ic-shell-switch" role="tablist" aria-label="Shell">

473 {[{

474 k: 'ps',

475 label: 'PowerShell'

476 }, {

477 k: 'cmd',

478 label: 'CMD'

479 }].map(({k, label}) => {

480 const active = k === 'cmd' === winCmd;

481 return <button key={k} type="button" role="tab" aria-selected={active} className={'cc-ic-shell-option' + (active ? ' cc-ic-active' : '')} onClick={() => setWinCmd(k === 'cmd')}>

482 {label}

483 </button>;

484 })}

485 </div>}

486 {cardBodyCmd(terminalCmd, isWinPrompt ? '>' : '$')}

487 </div>}

488 

489 {}

490 {target === 'terminal' && <div className="cc-ic-below">

491 {isWinInstaller && <span>

492 <a href="https://git-scm.com/downloads/win" target="_blank" rel="noopener">

493 Git for Windows

494 </a>{' '}

495 recommended. PowerShell is used if Git Bash is absent.

496 </span>}

497 {(pkg === 'brew' || pkg === 'winget') && <span>

498 Does not auto-update. Run{' '}

499 <code>{pkg === 'brew' ? 'brew upgrade claude-code' : 'winget upgrade Anthropic.ClaudeCode'}</code>{' '}

500 periodically.

501 </span>}

502 <a href="/en/troubleshoot-install">Installation troubleshooting</a>

503 </div>}

504 

505 {alt && <div className="cc-ic-handoff">

506 <div className="cc-ic-handoff-title">Claude Code for {alt.name}</div>

507 <div className="cc-ic-handoff-sub">{alt.tagline}</div>

508 <div className="cc-ic-handoff-actions">

509 <a href={alt.installHref} className="cc-ic-btn-clay" {...alt.installHref.startsWith('http') ? {

510 target: '_blank',

511 rel: 'noopener'

512 } : {}}>

513 {alt.installLabel} {iconArrowUpRight(13)}

514 </a>

515 <a href={alt.guideHref} className="cc-ic-btn-ghost">

516 {alt.name} guide {iconArrowRight(12)}

517 </a>

518 </div>

519 {alt.altCmd && <div className="cc-ic-handoff-alt">

520 or run <code>{alt.altCmd}</code>

521 <button type="button" className={'cc-ic-copy-sm' + (copied === 'alt' ? ' cc-ic-copied' : '')} onClick={() => handleCopy(alt.altCmd, 'alt')} aria-label="Copy command">

522 {copied === 'alt' ? iconCheck(11) : iconCopy(11)}

523 </button>

524 </div>}

525 </div>}

526 </div>;

527};

528 

529export const Experiment = ({flag, treatment, children}) => {

530 const VID_KEY = 'exp_vid';

531 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

532 const fnv1a = s => {

533 let h = 0x811c9dc5;

534 for (let i = 0; i < s.length; i++) {

535 h ^= s.charCodeAt(i);

536 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

537 }

538 return h >>> 0;

539 };

540 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

541 const [decision] = useState(() => {

542 const params = new URLSearchParams(location.search);

543 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

544 const force = params.get('gb-force');

545 if (force) {

546 for (const p of force.split(',')) {

547 const [k, v] = p.split(':');

548 if (k === flag) return {

549 variant: v || 'treatment',

550 track: false

551 };

552 }

553 }

554 if (navigator.globalPrivacyControl) {

555 return {

556 variant: 'control',

557 track: false

558 };

559 }

560 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

561 if (prefsMatch) {

562 try {

563 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

564 return {

565 variant: 'control',

566 track: false

567 };

568 }

569 } catch {

570 return {

571 variant: 'control',

572 track: false

573 };

574 }

575 } else {

576 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

577 if (!country || CONSENT_COUNTRIES.has(country)) {

578 return {

579 variant: 'control',

580 track: false

581 };

582 }

583 }

584 let vid;

585 try {

586 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

587 if (ajsMatch) {

588 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

589 } else {

590 vid = localStorage.getItem(VID_KEY);

591 if (!vid) {

592 vid = crypto.randomUUID();

593 }

594 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

595 }

596 try {

597 localStorage.setItem(VID_KEY, vid);

598 } catch {}

599 } catch {

600 return {

601 variant: 'control',

602 track: false

603 };

604 }

605 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

606 return {

607 variant,

608 track: true,

609 vid

610 };

611 });

612 useEffect(() => {

613 if (!decision.track) return;

614 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

615 method: 'POST',

616 headers: {

617 'Content-Type': 'application/json',

618 'x-service-name': 'claude_code_docs'

619 },

620 body: JSON.stringify({

621 events: [{

622 event_type: 'GrowthbookExperimentEvent',

623 event_data: {

624 device_id: decision.vid,

625 anonymous_id: decision.vid,

626 timestamp: new Date().toISOString(),

627 experiment_id: flag,

628 variation_id: decision.variant === 'treatment' ? 1 : 0,

629 environment: 'production'

630 }

631 }]

632 }),

633 keepalive: true

634 }).catch(() => {});

635 }, []);

636 return decision.variant === 'treatment' ? treatment : children;

637};

638 

639Claude Code ist ein KI-gestützter Codierassistent, der Ihnen hilft, Funktionen zu erstellen, Fehler zu beheben und Entwicklungsaufgaben zu automatisieren. Er versteht Ihre gesamte Codebasis und kann über mehrere Dateien und Tools hinweg arbeiten, um Aufgaben zu erledigen.

640 

641<div data-gb-slot="overview-install-configurator">

642 <Experiment flag="overview-install-configurator" treatment={<InstallConfigurator />} />

643</div>

644 

645## Erste Schritte

646 

647Wählen Sie Ihre Umgebung, um zu beginnen. Die meisten Oberflächen erfordern ein [Claude-Abonnement](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=overview_pricing) oder ein [Anthropic Console](https://console.anthropic.com/)-Konto. Das Terminal CLI und VS Code unterstützen auch [Drittanbieter](/de/third-party-integrations).

648 

649<Tabs>

650 <Tab title="Terminal">

651 Das vollständig ausgestattete CLI für die Arbeit mit Claude Code direkt in Ihrem Terminal. Bearbeiten Sie Dateien, führen Sie Befehle aus und verwalten Sie Ihr gesamtes Projekt über die Befehlszeile.

652 

653 To install Claude Code, use one of the following methods:

654 

655 <Tabs>

656 <Tab title="Native Install (Recommended)">

657 **macOS, Linux, WSL:**

658 

659 ```bash theme={null}

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

661 ```

662 

663 **Windows PowerShell:**

664 

665 ```powershell theme={null}

666 irm https://claude.ai/install.ps1 | iex

667 ```

668 

669 **Windows CMD:**

670 

671 ```batch theme={null}

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

673 ```

674 

675 If you see `The token '&&' is not a valid statement separator`, you're in PowerShell, not CMD. If you see `'irm' is not recognized as an internal or external command`, you're in CMD, not PowerShell. Your prompt shows `PS C:\` when you're in PowerShell and `C:\` without the `PS` when you're in CMD.

676 

677 [Git for Windows](https://git-scm.com/downloads/win) is recommended on native Windows so Claude Code can use the Bash tool. If Git for Windows is not installed, Claude Code uses PowerShell as the shell tool instead. WSL setups do not need Git for Windows.

678 

679 <Info>

680 Native installations automatically update in the background to keep you on the latest version.

681 </Info>

682 </Tab>

683 

684 <Tab title="Homebrew">

685 ```bash theme={null}

686 brew install --cask claude-code

687 ```

688 

689 Homebrew offers two casks. `claude-code` tracks the stable release channel, which is typically about a week behind and skips releases with major regressions. `claude-code@latest` tracks the latest channel and receives new versions as soon as they ship.

690 

691 <Info>

692 Homebrew installations do not auto-update. Run `brew upgrade claude-code` or `brew upgrade claude-code@latest`, depending on which cask you installed, to get the latest features and security fixes.

693 </Info>

694 </Tab>

695 

696 <Tab title="WinGet">

697 ```powershell theme={null}

698 winget install Anthropic.ClaudeCode

699 ```

700 

701 <Info>

702 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.

703 </Info>

704 </Tab>

705 </Tabs>

706 

707 You can also install with [apt, dnf, or apk](/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.

708 

709 Starten Sie dann Claude Code in einem beliebigen Projekt:

710 

711 ```bash theme={null}

712 cd your-project

713 claude

714 ```

715 

716 Sie werden beim ersten Mal aufgefordert, sich anzumelden. Das ist alles! [Fahren Sie mit dem Quickstart fort →](/de/quickstart)

717 

718 <Tip>

719 Siehe [Erweiterte Einrichtung](/de/setup) für Installationsoptionen, manuelle Updates oder Deinstallationsanweisungen. Besuchen Sie [Fehlerbehebung bei der Installation](/de/troubleshoot-install), wenn Sie auf Probleme stoßen.

720 </Tip>

721 </Tab>

722 

723 <Tab title="VS Code">

724 Die VS Code-Erweiterung bietet Inline-Diffs, @-Erwähnungen, Planüberprüfung und Gesprächsverlauf direkt in Ihrem Editor.

725 

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

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

728 

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

730 

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

732 </Tab>

733 

734 <Tab title="Desktop-App">

735 Eine eigenständige App für die Ausführung von Claude Code außerhalb Ihrer IDE oder Ihres Terminals. Überprüfen Sie Diffs visuell, führen Sie mehrere Sitzungen nebeneinander aus, planen Sie wiederkehrende Aufgaben und starten Sie Cloud-Sitzungen.

736 

737 Herunterladen und installieren:

738 

739 * [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) (Intel und Apple Silicon)

740 * [Windows](https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs) (x64)

741 * [Windows ARM64](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs)

742 

743 Nach der Installation starten Sie Claude, melden Sie sich an und klicken Sie auf die Registerkarte **Code**, um mit dem Codieren zu beginnen. Ein [bezahltes Abonnement](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=overview_desktop_pricing) ist erforderlich.

744 

745 [Weitere Informationen zur Desktop-App →](/de/desktop-quickstart)

746 </Tab>

747 

748 <Tab title="Web">

749 Führen Sie Claude Code in Ihrem Browser ohne lokale Einrichtung aus. Starten Sie lang laufende Aufgaben und überprüfen Sie sie später, arbeiten Sie an Repositories, die Sie nicht lokal haben, oder führen Sie mehrere Aufgaben parallel aus. Verfügbar auf Desktop-Browsern und der Claude iOS-App.

750 

751 Beginnen Sie mit dem Codieren unter [claude.ai/code](https://claude.ai/code).

752 

753 [Erste Schritte im Web →](/de/web-quickstart)

754 </Tab>

755 

756 <Tab title="JetBrains">

757 Ein Plugin für IntelliJ IDEA, PyCharm, WebStorm und andere JetBrains-IDEs mit interaktiver Diff-Anzeige und Auswahlkontext-Freigabe.

758 

759 Installieren Sie das [Claude Code-Plugin](https://plugins.jetbrains.com/plugin/27310-claude-code-beta-) aus dem JetBrains Marketplace und starten Sie Ihre IDE neu.

760 

761 [Erste Schritte mit JetBrains →](/de/jetbrains)

762 </Tab>

763</Tabs>

764 

765## Was Sie tun können

766 

767Hier sind einige Möglichkeiten, wie Sie Claude Code nutzen können:

768 

769<AccordionGroup>

770 <Accordion title="Automatisieren Sie die Arbeit, die Sie immer wieder aufschieben" icon="wand-magic-sparkles">

771 Claude Code übernimmt die mühsamen Aufgaben, die Ihren Tag aufzehren: Schreiben von Tests für ungetesteten Code, Beheben von Lint-Fehlern in einem Projekt, Auflösen von Merge-Konflikten, Aktualisieren von Abhängigkeiten und Schreiben von Versionshinweisen.

772 

773 ```bash theme={null}

774 claude "write tests for the auth module, run them, and fix any failures"

775 ```

776 </Accordion>

777 

778 <Accordion title="Erstellen Sie Funktionen und beheben Sie Fehler" icon="hammer">

779 Beschreiben Sie, was Sie möchten, in einfacher Sprache. Claude Code plant den Ansatz, schreibt den Code über mehrere Dateien hinweg und überprüft, ob er funktioniert.

780 

781 Bei Fehlern fügen Sie eine Fehlermeldung ein oder beschreiben Sie das Symptom. Claude Code verfolgt das Problem durch Ihre Codebasis, identifiziert die Grundursache und implementiert eine Lösung. Weitere Beispiele finden Sie unter [Häufige Workflows](/de/common-workflows).

782 </Accordion>

783 

784 <Accordion title="Erstellen Sie Commits und Pull Requests" icon="code-branch">

785 Claude Code arbeitet direkt mit git. Es stellt Änderungen bereit, schreibt Commit-Nachrichten, erstellt Branches und öffnet Pull Requests.

786 

787 ```bash theme={null}

788 claude "commit my changes with a descriptive message"

789 ```

790 

791 In CI können Sie Code-Reviews und Issue-Triage mit [GitHub Actions](/de/github-actions) oder [GitLab CI/CD](/de/gitlab-ci-cd) automatisieren.

792 </Accordion>

793 

794 <Accordion title="Verbinden Sie Ihre Tools mit MCP" icon="plug">

795 Das [Model Context Protocol (MCP)](/de/mcp) ist ein offener Standard für die Verbindung von KI-Tools mit externen Datenquellen. Mit MCP kann Claude Code Ihre Design-Dokumente in Google Drive lesen, Tickets in Jira aktualisieren, Daten aus Slack abrufen oder Ihre eigenen benutzerdefinierten Tools verwenden.

796 </Accordion>

797 

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

799 [`CLAUDE.md`](/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. Claude erstellt auch [automatisches Gedächtnis](/de/memory#auto-memory), während es arbeitet, und speichert Erkenntnisse wie Build-Befehle und Debugging-Einblicke über Sitzungen hinweg, ohne dass Sie etwas schreiben müssen.

800 

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

802 

803 [Hooks](/de/hooks) ermöglichen es Ihnen, Shell-Befehle vor oder nach Claude Code-Aktionen auszuführen, wie automatische Formatierung nach jeder Dateibearbeitung oder Ausführung von Lint vor einem Commit.

804 </Accordion>

805 

806 <Accordion title="Führen Sie Agent-Teams aus und erstellen Sie benutzerdefinierte Agents" icon="users">

807 Starten Sie [mehrere Claude Code-Agents](/de/sub-agents), die gleichzeitig an verschiedenen Teilen einer Aufgabe arbeiten. Ein Lead-Agent koordiniert die Arbeit, weist Unteraufgaben zu und führt Ergebnisse zusammen.

808 

809 Für vollständig benutzerdefinierte Workflows ermöglicht das [Agent SDK](/de/agent-sdk/overview) Ihnen, Ihre eigenen Agents zu erstellen, die von Claude Codes Tools und Funktionen angetrieben werden, mit vollständiger Kontrolle über Orchestrierung, Tool-Zugriff und Berechtigungen.

810 </Accordion>

811 

812 <Accordion title="Pipen, Skripten und Automatisieren mit der CLI" icon="terminal">

813 Claude Code ist zusammensetzbar und folgt der Unix-Philosophie. Pipen Sie Logs hinein, führen Sie es in CI aus oder verketten Sie es mit anderen Tools:

814 

815 ```bash theme={null}

816 # Analysieren Sie aktuelle Log-Ausgabe

817 tail -200 app.log | claude -p "Slack me if you see any anomalies"

818 

819 # Automatisieren Sie Übersetzungen in CI

820 claude -p "translate new strings into French and raise a PR for review"

821 

822 # Massenoperationen über Dateien hinweg

823 git diff main --name-only | claude -p "review these changed files for security issues"

824 ```

825 

826 Siehe die [CLI-Referenz](/de/cli-reference) für den vollständigen Satz von Befehlen und Flags.

827 </Accordion>

828 

829 <Accordion title="Planen Sie wiederkehrende Aufgaben" icon="clock">

830 Führen Sie Claude nach einem Zeitplan aus, um Arbeit zu automatisieren, die sich wiederholt: morgendliche PR-Reviews, nächtliche CI-Fehleranalyse, wöchentliche Abhängigkeitsprüfungen oder Synchronisierung von Dokumenten nach PR-Merges.

831 

832 * [Routinen](/de/routines) werden auf von Anthropic verwalteter Infrastruktur ausgeführt, sodass sie weiterhin ausgeführt werden, auch wenn Ihr Computer ausgeschaltet ist. Sie können auch durch API-Aufrufe oder GitHub-Ereignisse ausgelöst werden. Erstellen Sie sie über das Web, die Desktop-App oder durch Ausführung von `/schedule` in der CLI.

833 * [Desktop-geplante Aufgaben](/de/desktop-scheduled-tasks) werden auf Ihrem Computer ausgeführt, mit direktem Zugriff auf Ihre lokalen Dateien und Tools

834 * [`/loop`](/de/scheduled-tasks) wiederholt eine Eingabeaufforderung innerhalb einer CLI-Sitzung für schnelle Abfragen

835 </Accordion>

836 

837 <Accordion title="Arbeiten Sie von überall aus" icon="globe">

838 Sitzungen sind nicht an eine einzelne Oberfläche gebunden. Verschieben Sie Arbeit zwischen Umgebungen, wenn sich Ihr Kontext ändert:

839 

840 * Treten Sie von Ihrem Schreibtisch weg und arbeiten Sie weiter von Ihrem Telefon oder einem beliebigen Browser mit [Remote Control](/de/remote-control)

841 * Senden Sie [Dispatch](/de/desktop#sessions-from-dispatch) eine Aufgabe von Ihrem Telefon und öffnen Sie die Desktop-Sitzung, die es erstellt

842 * Starten Sie eine lang laufende Aufgabe im [Web](/de/claude-code-on-the-web) oder in der [iOS-App](https://apps.apple.com/app/claude-by-anthropic/id6473753684) und ziehen Sie sie mit `claude --teleport` in Ihr Terminal

843 * Übergeben Sie eine Terminal-Sitzung an die [Desktop-App](/de/desktop) mit `/desktop` für visuelle Diff-Überprüfung

844 * Leiten Sie Aufgaben aus Team-Chat weiter: Erwähnen Sie `@Claude` in [Slack](/de/slack) mit einem Fehlerbericht und erhalten Sie einen Pull Request zurück

845 </Accordion>

846</AccordionGroup>

847 

848## Verwenden Sie Claude Code überall

849 

850Jede Oberfläche verbindet sich mit der gleichen zugrunde liegenden Claude Code-Engine, sodass Ihre CLAUDE.md-Dateien, Einstellungen und MCP-Server auf allen Oberflächen funktionieren.

851 

852Über die oben genannten Umgebungen [Terminal](/de/quickstart), [VS Code](/de/vs-code), [JetBrains](/de/jetbrains), [Desktop](/de/desktop) und [Web](/de/claude-code-on-the-web) hinaus integriert sich Claude Code mit CI/CD-, Chat- und Browser-Workflows:

853 

854| Ich möchte... | Beste Option |

855| ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |

856| Eine lokale Sitzung von meinem Telefon oder einem anderen Gerät fortsetzen | [Remote Control](/de/remote-control) |

857| Ereignisse von Telegram, Discord, iMessage oder meinen eigenen Webhooks in eine Sitzung pushen | [Channels](/de/channels) |

858| Eine Aufgabe lokal starten, auf dem Mobilgerät fortsetzen | [Web](/de/claude-code-on-the-web) oder [Claude iOS-App](https://apps.apple.com/app/claude-by-anthropic/id6473753684) |

859| Claude nach einem Zeitplan ausführen | [Routinen](/de/routines) oder [Desktop-geplante Aufgaben](/de/desktop-scheduled-tasks) |

860| PR-Reviews und Issue-Triage automatisieren | [GitHub Actions](/de/github-actions) oder [GitLab CI/CD](/de/gitlab-ci-cd) |

861| Automatische Code-Überprüfung bei jedem PR erhalten | [GitHub Code Review](/de/code-review) |

862| Fehlerberichte von Slack zu Pull Requests weiterleiten | [Slack](/de/slack) |

863| Live-Webanwendungen debuggen | [Chrome](/de/chrome) |

864| Benutzerdefinierte Agents für Ihre eigenen Workflows erstellen | [Agent SDK](/de/agent-sdk/overview) |

865 

866## Nächste Schritte

867 

868Nachdem Sie Claude Code installiert haben, helfen Ihnen diese Leitfäden, tiefer einzusteigen.

869 

870* [Quickstart](/de/quickstart): Gehen Sie durch Ihre erste echte Aufgabe, vom Erkunden einer Codebasis bis zum Committen einer Lösung

871* [Speichern Sie Anweisungen und Erinnerungen](/de/memory): Geben Sie Claude persistente Anweisungen mit CLAUDE.md-Dateien und automatischem Gedächtnis

872* [Häufige Workflows](/de/common-workflows) und [Best Practices](/de/best-practices): Muster für optimale Nutzung von Claude Code

873* [Einstellungen](/de/settings): Passen Sie Claude Code an Ihren Workflow an

874* [Fehlerbehebung](/de/troubleshooting): Lösungen für häufige Probleme

875* [code.claude.com](https://code.claude.com/): Demos, Preise und Produktdetails

permission-modes.md +290 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Wählen Sie einen Berechtigungsmodus

6 

7> Steuern Sie, ob Claude vor dem Bearbeiten von Dateien oder dem Ausführen von Befehlen fragt. Wechseln Sie Modi mit Shift+Tab in der CLI oder verwenden Sie den Moduswahlschalter in VS Code, Desktop und claude.ai.

8 

9Wenn Claude eine Datei bearbeiten, einen Shell-Befehl ausführen oder eine Netzwerkanfrage stellen möchte, pausiert es und fragt Sie um Genehmigung. Berechtigungsmodi steuern, wie oft diese Pause auftritt. Der Modus, den Sie wählen, prägt den Ablauf einer Sitzung: Der Standardmodus lässt Sie jede Aktion überprüfen, während lockerere Modi Claude in längeren ununterbrochenen Abschnitten arbeiten lassen und dann berichten, wenn es fertig ist. Wählen Sie mehr Überwachung für sensible Arbeiten oder weniger Unterbrechungen, wenn Sie der Richtung vertrauen.

10 

11## Verfügbare Modi

12 

13Jeder Modus bietet einen anderen Kompromiss zwischen Komfort und Überwachung. Die folgende Tabelle zeigt, was Claude ohne Berechtigungsaufforderung in jedem Modus tun kann.

14 

15| Modus | Was ohne Nachfrage ausgeführt wird | Am besten für |

16| :------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------- | :----------------------------------------------------- |

17| `default` | Nur Lesevorgänge | Erste Schritte, sensible Arbeiten |

18| [`acceptEdits`](#auto-approve-file-edits-with-acceptedits-mode) | Lesevorgänge, Dateibearbeitungen und häufige Dateisystem-Befehle (`mkdir`, `touch`, `mv`, `cp` usw.) | Iteration über Code, den Sie überprüfen |

19| [`plan`](#analyze-before-you-edit-with-plan-mode) | Nur Lesevorgänge | Erkunden einer Codebasis vor Änderungen |

20| [`auto`](#eliminate-prompts-with-auto-mode) | Alles, mit Hintergrund-Sicherheitsprüfungen | Lange Aufgaben, Reduzierung von Aufforderungsmüdigkeit |

21| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | Nur vorab genehmigte Tools | Gesperrte CI und Skripte |

22| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | Alles | Nur isolierte Container und VMs |

23 

24In jedem Modus außer `bypassPermissions` werden Schreibvorgänge zu [geschützten Pfaden](#protected-paths) niemals automatisch genehmigt, um den Repository-Status und Claudes eigene Konfiguration vor versehentlicher Beschädigung zu schützen.

25 

26Modi legen die Grundlage fest. Überlagern Sie [Berechtigungsregeln](/de/permissions#manage-permissions) darauf, um bestimmte Tools in jedem Modus außer `bypassPermissions` vorab zu genehmigen oder zu blockieren, der die Berechtigungsebene vollständig überspringt.

27 

28## Berechtigungsmodi wechseln

29 

30Sie können Modi während einer Sitzung, beim Start oder als persistenter Standard wechseln. Der Modus wird über diese Steuerelemente festgelegt, nicht durch Fragen an Claude im Chat. Wählen Sie Ihre Schnittstelle unten aus, um zu sehen, wie Sie ihn ändern.

31 

32<Tabs>

33 <Tab title="CLI">

34 **Während einer Sitzung**: Drücken Sie `Shift+Tab`, um `default` → `acceptEdits` → `plan` zu durchlaufen. Der aktuelle Modus wird in der Statusleiste angezeigt. Nicht jeder Modus ist im Standard-Zyklus:

35 

36 * `auto`: wird angezeigt, wenn Ihr Konto die [Auto-Modus-Anforderungen](#eliminate-prompts-with-auto-mode) erfüllt; das Durchlaufen zu Auto zeigt eine Opt-in-Aufforderung an, bis Sie diese akzeptieren, oder wählen Sie **Nein, nicht erneut fragen**, um Auto aus dem Zyklus zu entfernen

37 * `bypassPermissions`: wird angezeigt, nachdem Sie mit `--permission-mode bypassPermissions`, `--dangerously-skip-permissions` oder `--allow-dangerously-skip-permissions` starten; die `--allow-`-Variante fügt den Modus zum Zyklus hinzu, ohne ihn zu aktivieren

38 * `dontAsk`: wird niemals im Zyklus angezeigt; legen Sie ihn mit `--permission-mode dontAsk` fest

39 

40 Aktivierte optionale Modi werden nach `plan` eingefügt, mit `bypassPermissions` zuerst und `auto` zuletzt. Wenn Sie beide aktiviert haben, durchlaufen Sie `bypassPermissions` auf dem Weg zu `auto`.

41 

42 **Beim Start**: Übergeben Sie den Modus als Flag.

43 

44 ```bash theme={null}

45 claude --permission-mode plan

46 ```

47 

48 **Als Standard**: Legen Sie `defaultMode` in [Einstellungen](/de/settings#settings-files) fest.

49 

50 ```json theme={null}

51 {

52 "permissions": {

53 "defaultMode": "acceptEdits"

54 }

55 }

56 ```

57 

58 Das gleiche `--permission-mode`-Flag funktioniert mit `-p` für [nicht-interaktive Läufe](/de/headless).

59 </Tab>

60 

61 <Tab title="VS Code">

62 **Während einer Sitzung**: Klicken Sie auf den Modusindikator am unteren Rand des Eingabefelds.

63 

64 **Als Standard**: Legen Sie `claudeCode.initialPermissionMode` in VS Code-Einstellungen fest, oder verwenden Sie das Einstellungsfenster der Claude Code-Erweiterung.

65 

66 Der Modusindikator zeigt diese Bezeichnungen, die dem Modus zugeordnet sind, auf den sich jede bezieht:

67 

68 | UI-Bezeichnung | Modus |

69 | :----------------------- | :------------------ |

70 | Vor Bearbeitungen fragen | `default` |

71 | Automatisch bearbeiten | `acceptEdits` |

72 | Planungsmodus | `plan` |

73 | Auto-Modus | `auto` |

74 | Berechtigungen umgehen | `bypassPermissions` |

75 

76 Auto-Modus wird im Modusindikator angezeigt, nachdem Sie **Berechtigungen gefährlich überspringen zulassen** in den Erweiterungseinstellungen aktivieren, bleibt aber nicht verfügbar, bis Ihr Konto alle Anforderungen erfüllt, die im [Auto-Modus-Abschnitt](#eliminate-prompts-with-auto-mode) aufgelistet sind. Die `claudeCode.initialPermissionMode`-Einstellung akzeptiert nicht `auto`; um standardmäßig im Auto-Modus zu starten, legen Sie stattdessen `defaultMode` in Ihrer Claude Code [`settings.json`](/de/settings#settings-files) fest.

77 

78 Berechtigungen umgehen erfordert auch den Umschalter **Berechtigungen gefährlich überspringen zulassen**, bevor es im Modusindikator angezeigt wird.

79 

80 Weitere Informationen finden Sie im [VS Code-Leitfaden](/de/vs-code).

81 </Tab>

82 

83 <Tab title="JetBrains">

84 Das JetBrains-Plugin führt Claude Code im IDE-Terminal aus, daher funktioniert das Wechseln von Modi genauso wie in der CLI: Drücken Sie `Shift+Tab` zum Durchlaufen, oder übergeben Sie `--permission-mode` beim Start.

85 </Tab>

86 

87 <Tab title="Desktop">

88 Verwenden Sie den Moduswahlschalter neben der Schaltfläche "Senden". Auto und Berechtigungen umgehen werden nur angezeigt, nachdem Sie sie in Desktop-Einstellungen aktivieren. Weitere Informationen finden Sie im [Desktop-Leitfaden](/de/desktop#choose-a-permission-mode).

89 </Tab>

90 

91 <Tab title="Web und Mobilgeräte">

92 Verwenden Sie das Modus-Dropdown neben dem Eingabefeld auf [claude.ai/code](https://claude.ai/code) oder in der mobilen App. Berechtigungsaufforderungen werden in claude.ai zur Genehmigung angezeigt. Welche Modi angezeigt werden, hängt davon ab, wo die Sitzung ausgeführt wird:

93 

94 * **Cloud-Sitzungen** auf [Claude Code im Web](/de/claude-code-on-the-web): Auto-Bearbeitungen akzeptieren und Planungsmodus. Berechtigungen erfragen, Auto und Berechtigungen umgehen sind nicht verfügbar.

95 * **[Remote Control](/de/remote-control)-Sitzungen** auf Ihrem lokalen Computer: Berechtigungen erfragen, Auto-Bearbeitungen akzeptieren und Planungsmodus. Auto und Berechtigungen umgehen sind nicht verfügbar.

96 

97 Für Remote Control können Sie auch den Startmodus beim Starten des Hosts festlegen:

98 

99 ```bash theme={null}

100 claude remote-control --permission-mode acceptEdits

101 ```

102 </Tab>

103</Tabs>

104 

105## Dateibearbeitungen mit acceptEdits-Modus automatisch genehmigen

106 

107Der `acceptEdits`-Modus lässt Claude Dateien in Ihrem Arbeitsverzeichnis erstellen und bearbeiten, ohne zu fragen. Die Statusleiste zeigt `⏵⏵ accept edits on`, während dieser Modus aktiv ist.

108 

109Zusätzlich zu Dateibearbeitungen genehmigt der `acceptEdits`-Modus automatisch häufige Dateisystem-Bash-Befehle: `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp` und `sed`. Diese Befehle werden auch automatisch genehmigt, wenn sie mit sicheren Umgebungsvariablen wie `LANG=C` oder `NO_COLOR=1` oder Prozess-Wrappern wie `timeout`, `nice` oder `nohup` vorangestellt sind. Wie Dateibearbeitungen gilt die automatische Genehmigung nur für Pfade in Ihrem Arbeitsverzeichnis oder `additionalDirectories`. Pfade außerhalb dieses Bereichs, Schreibvorgänge zu [geschützten Pfaden](#protected-paths) und alle anderen Bash-Befehle fordern weiterhin auf.

110 

111Wenn das [PowerShell-Tool](/de/tools-reference#powershell-tool) aktiviert ist, genehmigt der `acceptEdits`-Modus auch automatisch `Set-Content`, `Add-Content`, `Clear-Content` und `Remove-Item` auf Pfaden im Gültigkeitsbereich, zusammen mit ihren häufigen Aliasen. Die gleichen Bereichs- und Schutzpfad-Regeln gelten.

112 

113Verwenden Sie `acceptEdits`, wenn Sie Änderungen in Ihrem Editor oder über `git diff` überprüfen möchten, anstatt jede Bearbeitung inline zu genehmigen. Drücken Sie `Shift+Tab` einmal vom Standardmodus, um ihn zu betreten, oder starten Sie direkt damit:

114 

115```bash theme={null}

116claude --permission-mode acceptEdits

117```

118 

119## Vor der Bearbeitung mit Planungsmodus analysieren

120 

121Der Planungsmodus weist Claude an, Änderungen zu recherchieren und vorzuschlagen, ohne sie vorzunehmen. Claude liest Dateien, führt Shell-Befehle aus, um zu erkunden, und schreibt einen Plan, bearbeitet aber nicht Ihren Quellcode. Berechtigungsaufforderungen gelten genauso wie im Standardmodus.

122 

123Betreten Sie den Planungsmodus, indem Sie `Shift+Tab` drücken oder einer einzelnen Aufforderung `/plan` voranstellen. Sie können auch vom CLI aus im Planungsmodus starten:

124 

125```bash theme={null}

126claude --permission-mode plan

127```

128 

129Drücken Sie `Shift+Tab` erneut, um den Planungsmodus zu verlassen, ohne einen Plan zu genehmigen.

130 

131Wenn der Plan fertig ist, präsentiert Claude ihn und fragt, wie es weitergehen soll. Von dieser Aufforderung aus können Sie:

132 

133* Genehmigen und im Auto-Modus starten

134* Genehmigen und Bearbeitungen akzeptieren

135* Genehmigen und jede Bearbeitung manuell überprüfen

136* Mit Feedback weiterplanen

137* Mit [Ultraplan](/de/ultraplan) für browsergestützte Überprüfung verfeinern

138 

139Jede Genehmigungsoption bietet auch an, den Planungskontext zuerst zu löschen.

140 

141## Aufforderungen mit Auto-Modus eliminieren

142 

143<Note>

144 Auto-Modus erfordert Claude Code v2.1.83 oder später.

145</Note>

146 

147Auto-Modus lässt Claude ohne Berechtigungsaufforderungen ausführen. Ein separates Klassifizierer-Modell überprüft Aktionen, bevor sie ausgeführt werden, und blockiert alles, das über Ihre Anfrage hinausgeht, auf nicht erkannte Infrastruktur abzielt oder von feindseligem Inhalt angetrieben zu sein scheint, den Claude gelesen hat.

148 

149<Warning>

150 Auto-Modus ist eine Forschungsvorschau. Er reduziert Aufforderungen, garantiert aber keine Sicherheit. Verwenden Sie ihn für Aufgaben, bei denen Sie der allgemeinen Richtung vertrauen, nicht als Ersatz für Überprüfung bei sensiblen Operationen.

151</Warning>

152 

153Auto-Modus ist nur verfügbar, wenn Ihr Konto alle diese Anforderungen erfüllt:

154 

155* **Plan**: Max, Team, Enterprise oder API. Nicht auf Pro verfügbar.

156* **Admin**: Bei Team und Enterprise muss ein Administrator ihn in [Claude Code-Administratoreinstellungen](https://claude.ai/admin-settings/claude-code) aktivieren, bevor Benutzer ihn einschalten können. Administratoren können ihn auch sperren, indem sie `permissions.disableAutoMode` in [verwalteten Einstellungen](/de/permissions#managed-settings) auf `"disable"` setzen.

157* **Modell**: Claude Sonnet 4.6, Opus 4.6 oder Opus 4.7 bei Team-, Enterprise- und API-Plänen; Claude Opus 4.7 nur bei Max-Plänen. Andere Modelle, einschließlich Haiku und claude-3-Modelle, werden nicht unterstützt.

158* **Anbieter**: Nur Anthropic API. Nicht auf Bedrock, Vertex oder Foundry verfügbar.

159 

160Wenn Claude Code Auto-Modus als nicht verfügbar meldet, ist eine dieser Anforderungen nicht erfüllt; dies ist kein vorübergehender Ausfall. Eine separate Nachricht, die ein Modell benennt und sagt, Auto-Modus "kann die Sicherheit" einer Aktion nicht bestimmen, ist ein vorübergehender Klassifizierer-Ausfall; siehe die [Fehlerreferenz](/de/errors#auto-mode-cannot-determine-the-safety-of-an-action).

161 

162### Was der Klassifizierer standardmäßig blockiert

163 

164Der Klassifizierer vertraut Ihrem Arbeitsverzeichnis und den konfigurierten Remotes Ihres Repositories. Alles andere wird als extern behandelt, bis Sie [vertrauenswürdige Infrastruktur konfigurieren](/de/auto-mode-config).

165 

166**Standardmäßig blockiert**:

167 

168* Herunterladen und Ausführen von Code, wie `curl | bash`

169* Senden sensibler Daten an externe Endpunkte

170* Produktionsbereitstellungen und Migrationen

171* Massenlöschung auf Cloud-Speicher

172* Gewährung von IAM- oder Repository-Berechtigungen

173* Änderung gemeinsamer Infrastruktur

174* Irreversibles Löschen von Dateien, die vor der Sitzung vorhanden waren

175* Force-Push oder direktes Pushen zu `main`

176 

177**Standardmäßig zugelassen**:

178 

179* Lokale Dateioperationen in Ihrem Arbeitsverzeichnis

180* Installation von Abhängigkeiten, die in Ihren Lock-Dateien oder Manifesten deklariert sind

181* Lesen von `.env` und Senden von Anmeldedaten an ihre entsprechende API

182* Schreibgeschützte HTTP-Anfragen

183* Pushen zum Branch, auf dem Sie gestartet haben, oder zu einem, den Claude erstellt hat

184 

185Sandbox-Netzwerkzugriff-Anfragen werden durch den Klassifizierer geleitet, anstatt standardmäßig zugelassen zu werden. Führen Sie `claude auto-mode defaults` aus, um die vollständigen Regellisten zu sehen. Wenn Routineaktionen blockiert werden, kann ein Administrator vertrauenswürdige Repositories, Buckets und Dienste über die `autoMode.environment`-Einstellung hinzufügen: siehe [Auto-Modus konfigurieren](/de/auto-mode-config).

186 

187### Grenzen, die Sie im Gespräch angeben

188 

189Der Klassifizierer behandelt Grenzen, die Sie im Gespräch angeben, als Blocksignal. Wenn Sie Claude sagen "nicht pushen" oder "warten Sie, bis ich überprüfe, bevor Sie bereitstellen", blockiert der Klassifizierer übereinstimmende Aktionen, auch wenn die Standardregeln sie zulassen würden. Eine Grenze bleibt in Kraft, bis Sie sie in einer späteren Nachricht aufheben. Claudes eigenes Urteil, dass eine Bedingung erfüllt wurde, hebt sie nicht auf.

190 

191Grenzen werden nicht als Regeln gespeichert. Der Klassifizierer liest sie bei jeder Prüfung aus dem Transkript erneut, daher kann eine Grenze verloren gehen, wenn [Kontext-Komprimierung](/de/costs#reduce-token-usage) die Nachricht entfernt, die sie angegeben hat. Für eine harte Garantie fügen Sie stattdessen eine [Deny-Regel](/de/permissions#permission-rule-syntax) hinzu.

192 

193### Wenn Auto-Modus zurückfällt

194 

195Jede abgelehnte Aktion zeigt eine Benachrichtigung und wird in `/permissions` unter der Registerkarte "Kürzlich abgelehnt" angezeigt, wo Sie `r` drücken können, um sie mit manueller Genehmigung erneut zu versuchen.

196 

197Wenn der Klassifizierer eine Aktion 3-mal hintereinander oder 20-mal insgesamt blockiert, pausiert der Auto-Modus und Claude Code setzt das Aufforderungen fort. Das Genehmigen der aufgeforderten Aktion setzt den Auto-Modus fort. Diese Schwellwerte sind nicht konfigurierbar. Jede zugelassene Aktion setzt den aufeinanderfolgenden Zähler zurück, während der Gesamtzähler für die Sitzung bestehen bleibt und nur zurückgesetzt wird, wenn sein eigenes Limit einen Fallback auslöst.

198 

199Im [nicht-interaktiven Modus](/de/headless) mit dem `-p`-Flag bricht die Sitzung ab, da es keinen Benutzer gibt, der aufgefordert werden kann.

200 

201Wiederholte Blockierungen bedeuten normalerweise, dass dem Klassifizierer der Kontext über Ihre Infrastruktur fehlt. Verwenden Sie `/feedback`, um falsch positive Ergebnisse zu melden, oder lassen Sie einen Administrator [vertrauenswürdige Infrastruktur konfigurieren](/de/auto-mode-config).

202 

203<AccordionGroup>

204 <Accordion title="Wie der Klassifizierer Aktionen bewertet">

205 Jede Aktion durchläuft eine feste Entscheidungsreihenfolge. Der erste übereinstimmende Schritt gewinnt:

206 

207 1. Aktionen, die Ihren [Allow- oder Deny-Regeln](/de/permissions#manage-permissions) entsprechen, werden sofort gelöst

208 2. Schreibgeschützte Aktionen und Dateibearbeitungen in Ihrem Arbeitsverzeichnis werden automatisch genehmigt, außer Schreibvorgänge zu [geschützten Pfaden](#protected-paths)

209 3. Alles andere geht an den Klassifizierer

210 4. Wenn der Klassifizierer blockiert, erhält Claude den Grund und versucht eine Alternative

211 

212 Beim Eintritt in den Auto-Modus werden breite Allow-Regeln, die willkürliche Code-Ausführung gewähren, gelöscht:

213 

214 * Blanko `Bash(*)`

215 * Wildcard-Interpreter wie `Bash(python*)`

216 * Paketmanager-Ausführungsbefehle

217 * `Agent`-Allow-Regeln

218 

219 Enge Regeln wie `Bash(npm test)` werden übernommen. Gelöschte Regeln werden wiederhergestellt, wenn Sie den Auto-Modus verlassen.

220 

221 Der Klassifizierer sieht Benutzernachrichten, Tool-Aufrufe und Ihren CLAUDE.md-Inhalt. Tool-Ergebnisse werden entfernt, daher kann feindselige Inhalte in einer Datei oder Webseite ihn nicht direkt manipulieren. Eine separate serverseitige Sonde scannt eingehende Tool-Ergebnisse und kennzeichnet verdächtige Inhalte, bevor Claude sie liest. Weitere Informationen darüber, wie diese Schichten zusammenarbeiten, finden Sie in der [Auto-Modus-Ankündigung](https://claude.com/blog/auto-mode) und dem [Engineering Deep Dive](https://www.anthropic.com/engineering/claude-code-auto-mode).

222 </Accordion>

223 

224 <Accordion title="Wie Auto-Modus Subagenten handhabt">

225 Der Klassifizierer überprüft [Subagenten](/de/sub-agents)-Arbeit an drei Punkten:

226 

227 1. Bevor ein Subagent startet, wird die delegierte Aufgabenbeschreibung bewertet, daher wird eine gefährlich aussehende Aufgabe beim Erzeugen blockiert.

228 2. Während der Subagent läuft, durchläuft jede seiner Aktionen den Klassifizierer mit den gleichen Regeln wie die übergeordnete Sitzung, und jeder `permissionMode` im Frontmatter des Subagenten wird ignoriert.

229 3. Wenn der Subagent fertig ist, überprüft der Klassifizierer seine vollständige Aktionshistorie; wenn diese Rückgabeprüfung ein Problem kennzeichnet, wird eine Sicherheitswarnung den Ergebnissen des Subagenten vorangestellt.

230 </Accordion>

231 

232 <Accordion title="Kosten und Latenz">

233 Der Klassifizierer läuft auf einem serverkonfigurierten Modell, das unabhängig von Ihrer `/model`-Auswahl ist, daher ändert das Wechseln von Modellen die Klassifizierer-Verfügbarkeit nicht. Klassifizierer-Aufrufe zählen zu Ihrer Token-Nutzung. Jede Prüfung sendet einen Teil des Transkripts plus die ausstehende Aktion, was einen Roundtrip vor der Ausführung hinzufügt. Lesevorgänge und Arbeitsverzeichnis-Bearbeitungen außerhalb geschützter Pfade überspringen den Klassifizierer, daher kommt der Overhead hauptsächlich von Shell-Befehlen und Netzwerkoperationen.

234 </Accordion>

235</AccordionGroup>

236 

237## Nur vorab genehmigte Tools mit dontAsk-Modus zulassen

238 

239Der `dontAsk`-Modus lehnt automatisch jeden Tool-Aufruf ab, der sonst auffordern würde. Nur Aktionen, die Ihren `permissions.allow`-Regeln und [schreibgeschützten Bash-Befehlen](/de/permissions#read-only-commands) entsprechen, können ausgeführt werden; explizite `ask`-Regeln werden abgelehnt, anstatt aufzufordern. Dies macht den Modus vollständig nicht-interaktiv für CI-Pipelines oder eingeschränkte Umgebungen, in denen Sie genau vordefinieren, was Claude tun darf.

240 

241Legen Sie ihn beim Start mit dem Flag fest:

242 

243```bash theme={null}

244claude --permission-mode dontAsk

245```

246 

247## Alle Prüfungen mit bypassPermissions-Modus überspringen

248 

249Der `bypassPermissions`-Modus deaktiviert Berechtigungsaufforderungen und Sicherheitsprüfungen, damit Tool-Aufrufe sofort ausgeführt werden. Ab v2.1.126 umfasst dies auch Schreibvorgänge zu [geschützten Pfaden](#protected-paths), die frühere Versionen noch aufforderten. Löschvorgänge, die auf das Dateisystem-Root oder das Home-Verzeichnis abzielen, wie `rm -rf /` und `rm -rf ~`, fordern weiterhin auf als Schutzschalter gegen Modellfehler. Verwenden Sie diesen Modus nur in isolierten Umgebungen wie Containern, VMs oder Dev Containern ohne Internetzugang, wo Claude Code Ihr Host-System nicht beschädigen kann.

250 

251Sie können nicht in `bypassPermissions` aus einer Sitzung eintreten, die ohne eines der aktivierenden Flags gestartet wurde; starten Sie neu mit einem, um es zu aktivieren:

252 

253```bash theme={null}

254claude --permission-mode bypassPermissions

255```

256 

257Das `--dangerously-skip-permissions`-Flag ist gleichbedeutend.

258 

259<Warning>

260 `bypassPermissions` bietet keinen Schutz vor Prompt-Injection oder unbeabsichtigten Aktionen. Verwenden Sie für Hintergrund-Sicherheitsprüfungen ohne Aufforderungen stattdessen [Auto-Modus](#eliminate-prompts-with-auto-mode). Administratoren können diesen Modus blockieren, indem sie `permissions.disableBypassPermissionsMode` auf `"disable"` in [verwalteten Einstellungen](/de/permissions#managed-settings) setzen.

261</Warning>

262 

263## Geschützte Pfade

264 

265Schreibvorgänge zu einer kleinen Menge von Pfaden werden niemals automatisch genehmigt, in jedem Modus außer `bypassPermissions`. Dies verhindert versehentliche Beschädigung des Repository-Status und Claudes eigener Konfiguration. In `default`, `acceptEdits` und `plan` fordern diese Schreibvorgänge auf; in `auto` werden sie an den Klassifizierer geleitet; in `dontAsk` werden sie abgelehnt; in `bypassPermissions` werden sie erlaubt.

266 

267Geschützte Verzeichnisse:

268 

269* `.git`

270* `.vscode`

271* `.idea`

272* `.husky`

273* `.claude`, außer für `.claude/commands`, `.claude/agents`, `.claude/skills` und `.claude/worktrees`, wo Claude routinemäßig Inhalte erstellt

274 

275Geschützte Dateien:

276 

277* `.gitconfig`, `.gitmodules`

278* `.bashrc`, `.bash_profile`, `.zshrc`, `.zprofile`, `.profile`

279* `.ripgreprc`

280* `.mcp.json`, `.claude.json`

281 

282## Siehe auch

283 

284* [Berechtigungen](/de/permissions): Allow-, Ask- und Deny-Regeln; verwaltete Richtlinien

285* [Auto-Modus konfigurieren](/de/auto-mode-config): Teilen Sie dem Klassifizierer mit, welche Infrastruktur Ihre Organisation vertraut

286* [Hooks](/de/hooks): benutzerdefinierte Berechtigungslogik über `PreToolUse`- und `PermissionRequest`-Hooks

287* [Ultraplan](/de/ultraplan): Führen Sie den Planungsmodus in einer Claude Code im Web-Sitzung mit browsergestützter Überprüfung aus

288* [Sicherheit](/de/security): Sicherheitsvorkehrungen und Best Practices

289* [Sandboxing](/de/sandboxing): Dateisystem- und Netzwerkisolation für Bash-Befehle

290* [Nicht-interaktiver Modus](/de/headless): Führen Sie Claude Code mit dem `-p`-Flag aus

permissions.md +358 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Berechtigungen konfigurieren

6 

7> Kontrollieren Sie, worauf Claude Code zugreifen kann und was es mit granularen Berechtigungsregeln, Modi und verwalteten Richtlinien tun kann.

8 

9Claude Code unterstützt granulare Berechtigungen, sodass Sie genau angeben können, was der Agent tun darf und was nicht. Berechtigungseinstellungen können in die Versionskontrolle eingecheckt und an alle Entwickler in Ihrer Organisation verteilt werden, sowie von einzelnen Entwicklern angepasst werden.

10 

11## Berechtigungssystem

12 

13Claude Code verwendet ein gestuftes Berechtigungssystem, um Leistung und Sicherheit auszugleichen:

14 

15| Werkzeugtyp | Beispiel | Genehmigung erforderlich | Verhalten „Ja, nicht mehr fragen" |

16| :------------ | :--------------------------- | :----------------------- | :------------------------------------------ |

17| Nur Lesen | Dateilesevorgänge, Grep | Nein | N/A |

18| Bash-Befehle | Shell-Ausführung | Ja | Dauerhaft pro Projektverzeichnis und Befehl |

19| Dateiänderung | Dateien bearbeiten/schreiben | Ja | Bis zum Ende der Sitzung |

20 

21## Berechtigungen verwalten

22 

23Sie können Claude Code's Werkzeugberechtigungen mit `/permissions` anzeigen und verwalten. Diese Benutzeroberfläche listet alle Berechtigungsregeln und die settings.json-Dateien auf, aus denen sie stammen.

24 

25* **Allow**-Regeln ermöglichen Claude Code, das angegebene Werkzeug ohne manuelle Genehmigung zu verwenden.

26* **Ask**-Regeln fordern eine Bestätigung auf, wenn Claude Code versucht, das angegebene Werkzeug zu verwenden.

27* **Deny**-Regeln verhindern, dass Claude Code das angegebene Werkzeug verwendet.

28 

29Regeln werden in dieser Reihenfolge ausgewertet: **deny -> ask -> allow**. Die erste übereinstimmende Regel gewinnt, daher haben Deny-Regeln immer Vorrang.

30 

31## Berechtigungsmodi

32 

33Claude Code unterstützt mehrere Berechtigungsmodi, die steuern, wie Werkzeuge genehmigt werden. Siehe [Berechtigungsmodi](/de/permission-modes) für den Zeitpunkt der Verwendung jedes Modus. Legen Sie den `defaultMode` in Ihren [Einstellungsdateien](/de/settings#settings-files) fest:

34 

35| Modus | Beschreibung |

36| :------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

37| `default` | Standardverhalten: fordert Genehmigung bei der ersten Verwendung jedes Werkzeugs auf |

38| `acceptEdits` | Akzeptiert automatisch Dateiberechtigungen und häufige Dateisystem-Befehle (`mkdir`, `touch`, `mv`, `cp` usw.) für Pfade im Arbeitsverzeichnis oder `additionalDirectories` |

39| `plan` | Plan Mode: Claude kann Dateien analysieren, aber nicht ändern oder Befehle ausführen |

40| `auto` | Genehmigt Werkzeugaufrufe automatisch mit Hintergrund-Sicherheitsprüfungen, die überprüfen, ob Aktionen mit Ihrer Anfrage übereinstimmen. Derzeit eine Forschungsvorschau |

41| `dontAsk` | Verweigert Werkzeuge automatisch, es sei denn, sie sind vorab über `/permissions` oder `permissions.allow`-Regeln genehmigt |

42| `bypassPermissions` | Überspringt alle Berechtigungsaufforderungen. Entfernungen von Dateisystem-Root oder Home-Verzeichnis wie `rm -rf /` und `rm -rf ~` fordern weiterhin auf als Schutzschalter gegen Modellfehler |

43 

44<Warning>

45 Der Modus `bypassPermissions` überspringt alle Berechtigungsaufforderungen, einschließlich Schreibvorgänge in `.git`, `.claude`, `.vscode`, `.idea` und `.husky`. Entfernungen, die auf das Dateisystem-Root oder Home-Verzeichnis abzielen, wie `rm -rf /` und `rm -rf ~`, fordern weiterhin auf als Schutzschalter gegen Modellfehler. Verwenden Sie diesen Modus nur in isolierten Umgebungen wie Containern oder VMs, in denen Claude Code keinen Schaden anrichten kann. Administratoren können diesen Modus verhindern, indem sie `permissions.disableBypassPermissionsMode` in [verwalteten Einstellungen](#managed-settings) auf `"disable"` setzen.

46</Warning>

47 

48Um zu verhindern, dass der Modus `bypassPermissions` oder `auto` verwendet wird, setzen Sie `permissions.disableBypassPermissionsMode` oder `permissions.disableAutoMode` in einer beliebigen [Einstellungsdatei](/de/settings#settings-files) auf `"disable"`. Diese sind am nützlichsten in [verwalteten Einstellungen](#managed-settings), wo sie nicht überschrieben werden können.

49 

50## Berechtigungsregelsyntax

51 

52Berechtigungsregeln folgen dem Format `Tool` oder `Tool(specifier)`.

53 

54### Alle Verwendungen eines Werkzeugs abgleichen

55 

56Um alle Verwendungen eines Werkzeugs abzugleichen, verwenden Sie einfach den Werkzeugnamen ohne Klammern:

57 

58| Regel | Effekt |

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

60| `Bash` | Gleicht alle Bash-Befehle ab |

61| `WebFetch` | Gleicht alle Web-Fetch-Anfragen ab |

62| `Read` | Gleicht alle Dateilesevorgänge ab |

63 

64`Bash(*)` ist gleichwertig mit `Bash` und gleicht alle Bash-Befehle ab.

65 

66### Verwenden Sie Spezifizierer für granulare Kontrolle

67 

68Fügen Sie einen Spezifizierer in Klammern hinzu, um bestimmte Werkzeugverwendungen abzugleichen:

69 

70| Regel | Effekt |

71| :----------------------------- | :------------------------------------------------------------- |

72| `Bash(npm run build)` | Gleicht den genauen Befehl `npm run build` ab |

73| `Read(./.env)` | Gleicht das Lesen der `.env`-Datei im aktuellen Verzeichnis ab |

74| `WebFetch(domain:example.com)` | Gleicht Fetch-Anfragen an example.com ab |

75 

76### Wildcard-Muster

77 

78Bash-Regeln unterstützen Glob-Muster mit `*`. Platzhalter können an jeder Position im Befehl erscheinen. Diese Konfiguration ermöglicht npm- und git-Commit-Befehle, blockiert aber git push:

79 

80```json theme={null}

81{

82 "permissions": {

83 "allow": [

84 "Bash(npm run *)",

85 "Bash(git commit *)",

86 "Bash(git * main)",

87 "Bash(* --version)",

88 "Bash(* --help *)"

89 ],

90 "deny": [

91 "Bash(git push *)"

92 ]

93 }

94}

95```

96 

97Das Leerzeichen vor `*` ist wichtig: `Bash(ls *)` gleicht `ls -la` ab, aber nicht `lsof`, während `Bash(ls*)` beide abgleicht. Das Suffix `:*` ist eine gleichwertige Möglichkeit, einen nachgestellten Platzhalter zu schreiben, daher gleicht `Bash(ls:*)` die gleichen Befehle ab wie `Bash(ls *)`.

98 

99Der Berechtigungsdialog schreibt die durch Leerzeichen getrennte Form, wenn Sie „Ja, nicht mehr fragen" für ein Befehlspräfix auswählen. Die Form `:*` wird nur am Ende eines Musters erkannt. In einem Muster wie `Bash(git:* push)` wird der Doppelpunkt als Literalzeichen behandelt und passt nicht zu git-Befehlen.

100 

101## Werkzeugspezifische Berechtigungsregeln

102 

103### Bash

104 

105Bash-Berechtigungsregeln unterstützen Wildcard-Abgleich mit `*`. Platzhalter können an jeder Position im Befehl erscheinen, einschließlich am Anfang, in der Mitte oder am Ende:

106 

107* `Bash(npm run build)` gleicht den genauen Bash-Befehl `npm run build` ab

108* `Bash(npm run test *)` gleicht Bash-Befehle ab, die mit `npm run test` beginnen

109* `Bash(npm *)` gleicht jeden Befehl ab, der mit `npm ` beginnt

110* `Bash(* install)` gleicht jeden Befehl ab, der mit ` install` endet

111* `Bash(git * main)` gleicht Befehle wie `git checkout main` und `git log --oneline main` ab

112 

113Ein einzelnes `*` gleicht jede Zeichenfolge ab, einschließlich Leerzeichen, daher kann ein Platzhalter mehrere Argumente umfassen. `Bash(git *)` gleicht `git log --oneline --all` ab, und `Bash(git * main)` gleicht sowohl `git push origin main` als auch `git merge main` ab.

114 

115Wenn `*` am Ende mit einem Leerzeichen davor erscheint (wie `Bash(ls *)`), wird eine Wortgrenze erzwungen, die erfordert, dass dem Präfix ein Leerzeichen oder das Ende der Zeichenkette folgt. Zum Beispiel gleicht `Bash(ls *)` `ls -la` ab, aber nicht `lsof`. Im Gegensatz dazu gleicht `Bash(ls*)` ohne Leerzeichen sowohl `ls -la` als auch `lsof` ab, da es keine Wortgrenzbeschränkung gibt.

116 

117#### Zusammengesetzte Befehle

118 

119<Tip>

120 Claude Code ist sich Shell-Operatoren bewusst, daher gibt eine Regel wie `Bash(safe-cmd *)` ihm nicht die Berechtigung, den Befehl `safe-cmd && other-cmd` auszuführen. Die erkannten Befehlstrennzeichen sind `&&`, `||`, `;`, `|`, `|&`, `&` und Zeilenumbrüche. Eine Regel muss jeden Unterbefehl unabhängig abgleichen.

121</Tip>

122 

123Wenn Sie einen zusammengesetzten Befehl mit „Ja, nicht mehr fragen" genehmigen, speichert Claude Code eine separate Regel für jeden Unterbefehl, der Genehmigung erfordert, anstelle einer einzelnen Regel für die vollständige zusammengesetzte Zeichenkette. Zum Beispiel speichert das Genehmigen von `git status && npm test` eine Regel für `npm test`, sodass zukünftige `npm test`-Aufrufe erkannt werden, unabhängig davon, was dem `&&` vorausgeht. Unterbefehle wie `cd` in ein Unterverzeichnis generieren ihre eigene Read-Regel für diesen Pfad. Für einen einzelnen zusammengesetzten Befehl können bis zu 5 Regeln gespeichert werden.

124 

125#### Prozess-Wrapper

126 

127Vor dem Abgleich von Bash-Regeln entfernt Claude Code einen festen Satz von Prozess-Wrappern, daher gleicht eine Regel wie `Bash(npm test *)` auch `timeout 30 npm test` ab. Die erkannten Wrapper sind `timeout`, `time`, `nice`, `nohup` und `stdbuf`.

128 

129Auch bloßes `xargs` wird entfernt, daher gleicht `Bash(grep *)` `xargs grep pattern` ab. Das Entfernen gilt nur, wenn `xargs` keine Flags hat: Ein Aufruf wie `xargs -n1 grep pattern` wird als `xargs`-Befehl abgeglichen, daher decken Regeln, die für den inneren Befehl geschrieben wurden, ihn nicht ab.

130 

131Diese Wrapper-Liste ist integriert und nicht konfigurierbar. Entwicklungsumgebungs-Runner wie `direnv exec`, `devbox run`, `mise exec`, `npx` und `docker exec` sind nicht in der Liste. Da diese Tools ihre Argumente als Befehl ausführen, gleicht eine Regel wie `Bash(devbox run *)` alles ab, was nach `run` kommt, einschließlich `devbox run rm -rf .`. Um Arbeit innerhalb eines Umgebungs-Runners zu genehmigen, schreiben Sie eine spezifische Regel, die sowohl den Runner als auch den inneren Befehl enthält, wie `Bash(devbox run npm test)`. Fügen Sie eine Regel pro innerem Befehl hinzu, den Sie zulassen möchten.

132 

133Exec-Wrapper wie `watch`, `setsid`, `ionice` und `flock` fordern immer auf und können nicht durch eine Präfixregel wie `Bash(watch *)` automatisch genehmigt werden. Das gleiche gilt für `find` mit `-exec` oder `-delete`: Eine `Bash(find *)` Regel deckt diese Formen nicht ab. Um einen spezifischen Aufruf zu genehmigen, schreiben Sie eine exakte Übereinstimmungsregel für die vollständige Befehlszeichenkette.

134 

135#### Schreibgeschützte Befehle

136 

137Claude Code erkennt einen integrierten Satz von Bash-Befehlen als schreibgeschützt und führt sie ohne Berechtigungsaufforderung in jedem Modus aus. Diese umfassen `ls`, `cat`, `head`, `tail`, `grep`, `find`, `wc`, `diff`, `stat`, `du`, `cd` und schreibgeschützte Formen von `git`. Der Satz ist nicht konfigurierbar; um eine Aufforderung für einen dieser Befehle zu erfordern, fügen Sie eine `ask`- oder `deny`-Regel dafür hinzu.

138 

139Unquotierte Glob-Muster sind für Befehle zulässig, deren jedes Flag schreibgeschützt ist, daher laufen `ls *.ts` und `wc -l src/*.py` ohne Aufforderung. Befehle mit schreibfähigen oder ausführungsfähigen Flags, wie `find`, `sort`, `sed` und `git`, fordern immer noch auf, wenn ein unquotiertes Glob vorhanden ist, da das Glob zu einem Flag wie `-delete` expandieren könnte.

140 

141Ein `cd` in einen Pfad innerhalb Ihres Arbeitsverzeichnisses oder eines [zusätzlichen Verzeichnisses](#working-directories) ist auch schreibgeschützt. Ein zusammengesetzter Befehl wie `cd packages/api && ls` läuft ohne Aufforderung, wenn jeder Teil auf eigene Faust qualifiziert. Das Kombinieren von `cd` mit `git` in einem zusammengesetzten Befehl fordert immer auf, unabhängig vom Zielverzeichnis.

142 

143<Warning>

144 Bash-Berechtigungsmuster, die versuchen, Befehlsargumente einzuschränken, sind fragil. Zum Beispiel beabsichtigt `Bash(curl http://github.com/ *)`, curl auf GitHub-URLs zu beschränken, wird aber Variationen nicht abgleichen wie:

145 

146 * Optionen vor URL: `curl -X GET http://github.com/...`

147 * Anderes Protokoll: `curl https://github.com/...`

148 * Umleitungen: `curl -L http://bit.ly/xyz` (leitet zu github um)

149 * Variablen: `URL=http://github.com && curl $URL`

150 * Zusätzliche Leerzeichen: `curl http://github.com`

151 

152 Für zuverlässigere URL-Filterung sollten Sie erwägen:

153 

154 * **Bash-Netzwerkwerkzeuge einschränken**: Verwenden Sie Deny-Regeln, um `curl`, `wget` und ähnliche Befehle zu blockieren, verwenden Sie dann das WebFetch-Werkzeug mit `WebFetch(domain:github.com)`-Berechtigung für zulässige Domänen

155 * **PreToolUse-Hooks verwenden**: Implementieren Sie einen Hook, der URLs in Bash-Befehlen validiert und nicht zulässige Domänen blockiert

156 * Claude Code über Ihre zulässigen curl-Muster über CLAUDE.md informieren

157 

158 Beachten Sie, dass die alleinige Verwendung von WebFetch keinen Netzwerkzugriff verhindert. Wenn Bash zulässig ist, kann Claude immer noch `curl`, `wget` oder andere Werkzeuge verwenden, um auf jede URL zuzugreifen.

159</Warning>

160 

161### PowerShell

162 

163PowerShell-Berechtigungsregeln verwenden die gleiche Form wie Bash-Regeln. Platzhalter mit `*` gleichen an jeder Position ab, das Suffix `:*` ist gleichwertig mit einem nachgestellten ` *`, und ein bloßes `PowerShell` oder `PowerShell(*)` gleicht jeden Befehl ab. Diese Konfiguration ermöglicht `Get-ChildItem`- und `git commit`-Befehle, blockiert aber `Remove-Item`:

164 

165```json theme={null}

166{

167 "permissions": {

168 "allow": [

169 "PowerShell(Get-ChildItem *)",

170 "PowerShell(git commit *)"

171 ],

172 "deny": [

173 "PowerShell(Remove-Item *)"

174 ]

175 }

176}

177```

178 

179Häufige Aliase werden vor dem Abgleich kanonisiert. Eine Regel, die für den Cmdlet-Namen geschrieben wurde, gleicht auch seine Aliase ab, daher gleicht `PowerShell(Get-ChildItem *)` auch `gci`, `ls` und `dir` ab. Der Abgleich ist nicht case-sensitiv.

180 

181Claude Code analysiert die PowerShell-AST und überprüft jeden Befehl in einem zusammengesetzten Befehl unabhängig. Pipeline-Operatoren `|`, Anweisungstrennzeichen `;` und auf PowerShell 7+ die Kettenoperatoren `&&` und `||` teilen einen zusammengesetzten Befehl in Unterbefehle auf. Eine Regel muss jeden Unterbefehl abgleichen, damit der zusammengesetzte Befehl zulässig ist.

182 

183### Read und Edit

184 

185`Edit`-Regeln gelten für alle integrierten Werkzeuge, die Dateien bearbeiten. Claude versucht nach besten Kräften, `Read`-Regeln auf alle integrierten Werkzeuge anzuwenden, die Dateien lesen, wie Grep und Glob.

186 

187<Warning>

188 Read- und Edit-Deny-Regeln gelten für Claude's integrierte Dateiwerkzeuge, nicht für Bash-Unterprozesse. Eine `Read(./.env)`-Deny-Regel blockiert das Read-Werkzeug, verhindert aber nicht `cat .env` in Bash. Für OS-Ebenen-Durchsetzung, die alle Prozesse daran hindert, auf einen Pfad zuzugreifen, [aktivieren Sie die Sandbox](/de/sandboxing).

189</Warning>

190 

191Read- und Edit-Regeln folgen beide der [gitignore](https://git-scm.com/docs/gitignore)-Spezifikation mit vier unterschiedlichen Mustertypen:

192 

193| Muster | Bedeutung | Beispiel | Gleicht ab |

194| -------------------- | ------------------------------------------ | -------------------------------- | ------------------------------ |

195| `//path` | **Absoluter** Pfad vom Dateisystem-Root | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |

196| `~/path` | Pfad vom **Home**-Verzeichnis | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |

197| `/path` | Pfad **relativ zum Projekt-Root** | `Edit(/src/**/*.ts)` | `<project root>/src/**/*.ts` |

198| `path` oder `./path` | Pfad **relativ zum aktuellen Verzeichnis** | `Read(*.env)` | `<cwd>/*.env` |

199 

200<Warning>

201 Ein Muster wie `/Users/alice/file` ist KEIN absoluter Pfad. Es ist relativ zum Projekt-Root. Verwenden Sie `//Users/alice/file` für absolute Pfade.

202</Warning>

203 

204Unter Windows werden Pfade vor dem Abgleich in POSIX-Form normalisiert. `C:\Users\alice` wird zu `/c/Users/alice`, verwenden Sie also `//c/**/.env`, um `.env`-Dateien überall auf diesem Laufwerk abzugleichen. Um über alle Laufwerke hinweg abzugleichen, verwenden Sie `//**/.env`.

205 

206Beispiele:

207 

208* `Edit(/docs/**)`: Bearbeitungen in `<project>/docs/` (NICHT `/docs/` und NICHT `<project>/.claude/docs/`)

209* `Read(~/.zshrc)`: liest die `.zshrc` Ihres Home-Verzeichnisses

210* `Edit(//tmp/scratch.txt)`: bearbeitet den absoluten Pfad `/tmp/scratch.txt`

211* `Read(src/**)`: liest aus `<current-directory>/src/`

212 

213<Note>

214 In gitignore-Mustern gleicht `*` Dateien in einem einzelnen Verzeichnis ab, während `**` rekursiv über Verzeichnisse hinweg abgleicht. Um allen Dateizugriff zu ermöglichen, verwenden Sie einfach den Werkzeugnamen ohne Klammern: `Read`, `Edit` oder `Write`.

215</Note>

216 

217Wenn Claude auf einen Symlink zugreift, überprüfen Berechtigungsregeln zwei Pfade: den Symlink selbst und die Datei, auf die er verweist. Allow- und Deny-Regeln behandeln dieses Paar unterschiedlich: Allow-Regeln fallen auf Aufforderungen zurück, während Deny-Regeln direkt blockieren.

218 

219* **Allow-Regeln**: gelten nur, wenn sowohl der Symlink-Pfad als auch sein Ziel übereinstimmen. Ein Symlink in einem zulässigen Verzeichnis, der außerhalb davon verweist, fordert Sie immer noch auf.

220* **Deny-Regeln**: gelten, wenn entweder der Symlink-Pfad oder sein Ziel übereinstimmt. Ein Symlink, der auf eine verweigerte Datei verweist, ist selbst verweigert.

221 

222Zum Beispiel mit `Read(./project/**)` zulässig und `Read(~/.ssh/**)` verweigert, wird ein Symlink bei `./project/key`, der auf `~/.ssh/id_rsa` verweist, blockiert: Das Ziel schlägt die Allow-Regel fehl und passt zur Deny-Regel.

223 

224### WebFetch

225 

226* `WebFetch(domain:example.com)` gleicht Fetch-Anfragen an example.com ab

227 

228### MCP

229 

230* `mcp__puppeteer` gleicht jedes Werkzeug ab, das vom `puppeteer`-Server bereitgestellt wird (Name in Claude Code konfiguriert)

231* `mcp__puppeteer__*` Wildcard-Syntax, die auch alle Werkzeuge vom `puppeteer`-Server abgleicht

232* `mcp__puppeteer__puppeteer_navigate` gleicht das `puppeteer_navigate`-Werkzeug ab, das vom `puppeteer`-Server bereitgestellt wird

233 

234### Agent (Subagents)

235 

236Verwenden Sie `Agent(AgentName)`-Regeln, um zu steuern, welche [Subagents](/de/sub-agents) Claude verwenden kann:

237 

238* `Agent(Explore)` gleicht den Explore-Subagent ab

239* `Agent(Plan)` gleicht den Plan-Subagent ab

240* `Agent(my-custom-agent)` gleicht einen benutzerdefinierten Subagent namens `my-custom-agent` ab

241 

242Fügen Sie diese Regeln zum `deny`-Array in Ihren Einstellungen hinzu oder verwenden Sie das `--disallowedTools`-CLI-Flag, um bestimmte Agenten zu deaktivieren. Um den Explore-Agenten zu deaktivieren:

243 

244```json theme={null}

245{

246 "permissions": {

247 "deny": ["Agent(Explore)"]

248 }

249}

250```

251 

252## Berechtigungen mit Hooks erweitern

253 

254[Claude Code Hooks](/de/hooks-guide) bieten eine Möglichkeit, benutzerdefinierte Shell-Befehle zu registrieren, um die Berechtigungsevaluierung zur Laufzeit durchzuführen. Wenn Claude Code einen Werkzeugaufruf tätigt, werden PreToolUse-Hooks vor dem Berechtigungssystem ausgeführt. Die Hook-Ausgabe kann den Werkzeugaufruf verweigern, eine Aufforderung erzwingen oder die Aufforderung überspringen, um den Aufruf fortzufahren.

255 

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

257 

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

259 

260## Arbeitsverzeichnisse

261 

262Standardmäßig hat Claude Zugriff auf Dateien in dem Verzeichnis, in dem es gestartet wurde. Sie können diesen Zugriff erweitern:

263 

264* **Beim Start**: Verwenden Sie das CLI-Argument `--add-dir <path>`

265* **Während der Sitzung**: Verwenden Sie den Befehl `/add-dir`

266* **Persistente Konfiguration**: Fügen Sie zu `additionalDirectories` in [Einstellungsdateien](/de/settings#settings-files) hinzu

267 

268Dateien in zusätzlichen Verzeichnissen folgen den gleichen Berechtigungsregeln wie das ursprüngliche Arbeitsverzeichnis: Sie werden lesbar ohne Aufforderungen, und Dateiberechtigungen folgen dem aktuellen Berechtigungsmodus.

269 

270### Zusätzliche Verzeichnisse gewähren Dateizugriff, keine Konfiguration

271 

272Das Hinzufügen eines Verzeichnisses erweitert, wo Claude Dateien lesen und bearbeiten kann. Es macht dieses Verzeichnis nicht zu einem vollständigen Konfigurationsroot: Die meisten `.claude/`-Konfigurationen werden nicht aus zusätzlichen Verzeichnissen erkannt, obwohl einige Typen als Ausnahmen geladen werden.

273 

274Die folgenden Konfigurationstypen werden aus `--add-dir`-Verzeichnissen geladen:

275 

276| Konfiguration | Geladen aus `--add-dir` |

277| :---------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

278| [Skills](/de/skills) in `.claude/skills/` | Ja, mit Live-Reload |

279| Plugin-Einstellungen in `.claude/settings.json` | Nur `enabledPlugins` und `extraKnownMarketplaces` |

280| [CLAUDE.md](/de/memory)-Dateien, `.claude/rules/` und `CLAUDE.local.md` | Nur wenn `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1` gesetzt ist. `CLAUDE.local.md` erfordert zusätzlich die `local`-Einstellungsquelle, die standardmäßig aktiviert ist |

281 

282Alles andere, einschließlich Subagents, Befehle, Ausgabestile, Hooks und andere Einstellungen, wird nur aus dem aktuellen Arbeitsverzeichnis und seinen übergeordneten Verzeichnissen, Ihrem Benutzerverzeichnis unter `~/.claude/` und verwalteten Einstellungen erkannt. Um diese Konfiguration über Projekte hinweg zu teilen, verwenden Sie einen dieser Ansätze:

283 

284* **Benutzergesteuerte Konfiguration**: Platzieren Sie Dateien in `~/.claude/agents/`, `~/.claude/output-styles/` oder `~/.claude/settings.json`, um sie in jedem Projekt verfügbar zu machen

285* **Plugins**: Verpacken und verteilen Sie Konfiguration als [Plugin](/de/plugins), das Teams installieren können

286* **Starten Sie aus dem Konfigurationsverzeichnis**: Führen Sie Claude Code aus dem Verzeichnis aus, das die `.claude/`-Konfiguration enthält, die Sie verwenden möchten

287 

288## Wie Berechtigungen mit Sandboxing interagieren

289 

290Berechtigungen und [Sandboxing](/de/sandboxing) sind komplementäre Sicherheitsebenen:

291 

292* **Berechtigungen** steuern, welche Werkzeuge Claude Code verwenden kann und auf welche Dateien oder Domänen es zugreifen kann. Sie gelten für alle Werkzeuge (Bash, Read, Edit, WebFetch, MCP und andere).

293* **Sandboxing** bietet OS-Ebenen-Durchsetzung, die den Zugriff des Bash-Werkzeugs auf das Dateisystem und das Netzwerk einschränkt. Es gilt nur für Bash-Befehle und ihre untergeordneten Prozesse.

294 

295Verwenden Sie beide für Defense-in-Depth:

296 

297* Berechtigungs-Deny-Regeln blockieren Claude daran, überhaupt zu versuchen, auf eingeschränkte Ressourcen zuzugreifen

298* Sandbox-Einschränkungen verhindern, dass Bash-Befehle Ressourcen außerhalb definierter Grenzen erreichen, selbst wenn eine Prompt-Injection Claude's Entscheidungsfindung umgeht

299* Dateisystem-Einschränkungen in der Sandbox verwenden Read- und Edit-Deny-Regeln, nicht separate Sandbox-Konfiguration

300* Netzwerk-Einschränkungen kombinieren WebFetch-Berechtigungsregeln mit den `allowedDomains`- und `deniedDomains`-Listen der Sandbox

301 

302Wenn Sandboxing mit `autoAllowBashIfSandboxed: true` aktiviert ist, was die Standardeinstellung ist, laufen sandboxed Bash-Befehle ohne Aufforderung, selbst wenn Ihre Berechtigungen `ask: Bash(*)` enthalten. Die Sandbox-Grenze ersetzt die Pro-Befehl-Aufforderung. Explizite Deny-Regeln gelten weiterhin, und `rm`- oder `rmdir`-Befehle, die auf `/`, Ihr Home-Verzeichnis oder andere kritische Systempfade abzielen, lösen weiterhin eine Aufforderung aus. Siehe [Sandbox-Modi](/de/sandboxing#sandbox-modes), um dieses Verhalten zu ändern.

303 

304## Verwaltete Einstellungen

305 

306Für Organisationen, die eine zentralisierte Kontrolle über die Claude Code-Konfiguration benötigen, können Administratoren verwaltete Einstellungen bereitstellen, die nicht von Benutzer- oder Projekteinstellungen überschrieben werden können. Diese Richtlinieneinstellungen folgen dem gleichen Format wie reguläre Einstellungsdateien und können über MDM/OS-Ebenen-Richtlinien, verwaltete Einstellungsdateien oder [servergesteuerte Einstellungen](/de/server-managed-settings) bereitgestellt werden. Siehe [Einstellungsdateien](/de/settings#settings-files) für Bereitstellungsmechanismen und Dateispeicherorte.

307 

308### Nur verwaltete Einstellungen

309 

310Die folgenden Einstellungen sind nur in verwalteten Einstellungen wirksam. Das Platzieren in Benutzer- oder Projekteinstellungsdateien hat keine Auswirkung.

311 

312| Einstellung | Beschreibung |

313| :--------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

314| `allowedChannelPlugins` | Zulassungsliste von Channel-Plugins, die Nachrichten pushen dürfen. Ersetzt die Standard-Anthropic-Zulassungsliste, wenn gesetzt. Erfordert `channelsEnabled: true`. Siehe [Einschränken Sie, welche Channel-Plugins ausgeführt werden können](/de/channels#restrict-which-channel-plugins-can-run) |

315| `allowManagedHooksOnly` | Wenn `true`, werden nur verwaltete Hooks, SDK-Hooks und Hooks aus Plugins, die in verwalteten Einstellungen `enabledPlugins` erzwungen sind, geladen. Benutzer-, Projekt- und alle anderen Plugin-Hooks werden blockiert |

316| `allowManagedMcpServersOnly` | Wenn `true`, werden nur `allowedMcpServers` aus verwalteten Einstellungen berücksichtigt. `deniedMcpServers` wird immer noch aus allen Quellen zusammengeführt. Siehe [Verwaltete MCP-Konfiguration](/de/mcp#managed-mcp-configuration) |

317| `allowManagedPermissionRulesOnly` | Wenn `true`, verhindert, dass Benutzer- und Projekteinstellungen `allow`-, `ask`- oder `deny`-Berechtigungsregeln definieren. Nur Regeln in verwalteten Einstellungen gelten |

318| `blockedMarketplaces` | Blocklist von Marketplace-Quellen. Blockierte Quellen werden vor dem Download überprüft, sodass sie das Dateisystem nie berühren. Siehe [verwaltete Marketplace-Einschränkungen](/de/plugin-marketplaces#managed-marketplace-restrictions) |

319| `channelsEnabled` | Ermöglichen Sie [Channels](/de/channels) für Team- und Enterprise-Benutzer. Nicht gesetzt oder `false` blockiert die Nachrichtenübermittlung über Channels, unabhängig davon, was Benutzer an `--channels` übergeben |

320| `forceRemoteSettingsRefresh` | Wenn `true`, blockiert CLI-Start, bis remote verwaltete Einstellungen aktuell abgerufen werden, und beendet sich, wenn der Abruf fehlschlägt. Siehe [Fail-Closed-Durchsetzung](/de/server-managed-settings#enforce-fail-closed-startup) |

321| `pluginTrustMessage` | Benutzerdefinierte Nachricht, die der vor der Installation angezeigten Plugin-Vertrauenswarnung hinzugefügt wird |

322| `sandbox.filesystem.allowManagedReadPathsOnly` | Wenn `true`, werden nur `filesystem.allowRead`-Pfade aus verwalteten Einstellungen berücksichtigt. `denyRead` wird immer noch aus allen Quellen zusammengeführt |

323| `sandbox.network.allowManagedDomainsOnly` | Wenn `true`, werden nur `allowedDomains` und `WebFetch(domain:...)`-Allow-Regeln aus verwalteten Einstellungen berücksichtigt. Nicht zulässige Domänen werden automatisch blockiert, ohne den Benutzer zu fragen. Verweigerte Domänen werden immer noch aus allen Quellen zusammengeführt |

324| `strictKnownMarketplaces` | Steuert, welche Plugin-Marketplaces Benutzer hinzufügen können. Siehe [verwaltete Marketplace-Einschränkungen](/de/plugin-marketplaces#managed-marketplace-restrictions) |

325| `wslInheritsWindowsSettings` | Wenn `true` im Windows HKLM-Registrierungsschlüssel oder in `C:\Program Files\ClaudeCode\managed-settings.json`, liest WSL verwaltete Einstellungen aus der Windows-Richtlinienkette zusätzlich zu `/etc/claude-code`. Siehe [Einstellungsdateien](/de/settings#settings-files) |

326 

327`disableBypassPermissionsMode` wird normalerweise in verwalteten Einstellungen platziert, um Organisationsrichtlinien durchzusetzen, funktioniert aber aus jedem Bereich. Ein Benutzer kann es in seinen eigenen Einstellungen festlegen, um sich selbst aus dem Bypass-Modus auszusperren.

328 

329<Note>

330 Der Zugriff auf [Remote Control](/de/remote-control) und [Web-Sitzungen](/de/claude-code-on-the-web) wird nicht durch einen Schlüssel für verwaltete Einstellungen gesteuert. Bei Team- und Enterprise-Plänen aktiviert oder deaktiviert ein Administrator diese Funktionen in [Claude Code-Administratoreinstellungen](https://claude.ai/admin-settings/claude-code).

331</Note>

332 

333## Einstellungspriorität

334 

335Berechtigungsregeln folgen der gleichen [Einstellungspriorität](/de/settings#settings-precedence) wie alle anderen Claude Code-Einstellungen:

336 

3371. **Verwaltete Einstellungen**: können von keiner anderen Ebene überschrieben werden, einschließlich Befehlszeilenargumenten

3382. **Befehlszeilenargumente**: temporäre Sitzungsüberschreibungen

3393. **Lokale Projekteinstellungen** (`.claude/settings.local.json`)

3404. **Gemeinsame Projekteinstellungen** (`.claude/settings.json`)

3415. **Benutzereinstellungen** (`~/.claude/settings.json`)

342 

343Wenn ein Werkzeug auf einer beliebigen Ebene verweigert wird, kann keine andere Ebene es zulassen. Zum Beispiel kann eine verwaltete Einstellungs-Deny nicht durch `--allowedTools` überschrieben werden, und `--disallowedTools` kann Einschränkungen über das hinaus hinzufügen, was verwaltete Einstellungen definieren.

344 

345Wenn eine Berechtigung in Benutzereinstellungen zulässig ist, aber in Projekteinstellungen verweigert wird, hat die Projekteinstellung Vorrang und die Berechtigung wird blockiert.

346 

347## Beispielkonfigurationen

348 

349Dieses [Repository](https://github.com/anthropics/claude-code/tree/main/examples/settings) enthält Starter-Einstellungskonfigurationen für häufige Bereitstellungsszenarien. Verwenden Sie diese als Ausgangspunkte und passen Sie sie an Ihre Anforderungen an.

350 

351## Siehe auch

352 

353* [Einstellungen](/de/settings): vollständige Konfigurationsreferenz einschließlich der Berechtigungseinstellungstabelle

354* [Konfigurieren Sie den Auto-Mode](/de/auto-mode-config): Teilen Sie dem Auto-Mode-Klassifizierer mit, welche Infrastruktur Ihre Organisation vertraut

355* [Sandboxing](/de/sandboxing): OS-Ebenen-Dateisystem- und Netzwerkisolation für Bash-Befehle

356* [Authentifizierung](/de/authentication): Richten Sie Benutzerzugriff auf Claude Code ein

357* [Sicherheit](/de/security): Sicherheitsvorkehrungen und Best Practices

358* [Hooks](/de/hooks-guide): Automatisieren Sie Workflows und erweitern Sie die Berechtigungsevaluierung

platforms.md +78 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Plattformen und Integrationen

6 

7> Wählen Sie, wo Sie Claude Code ausführen möchten, und was Sie damit verbinden. Vergleichen Sie die CLI, Desktop, VS Code, JetBrains, Web und Integrationen wie Chrome, Slack und CI/CD.

8 

9Claude Code führt überall die gleiche zugrunde liegende Engine aus, aber jede Oberfläche ist für eine andere Arbeitsweise optimiert. Diese Seite hilft Ihnen, die richtige Plattform für Ihren Arbeitsablauf auszuwählen und die Tools zu verbinden, die Sie bereits verwenden.

10 

11## Wo Sie Claude Code ausführen

12 

13Wählen Sie eine Plattform basierend auf Ihrer bevorzugten Arbeitsweise und dem Ort Ihres Projekts.

14 

15| Plattform | Am besten für | Was Sie erhalten |

16| :-------------------------------- | :-------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- |

17| [CLI](/de/quickstart) | Terminal-Arbeitsabläufe, Scripting, Remote-Server | Vollständiger Funktionsumfang, [Agent SDK](/de/headless), Drittanbieter-Provider |

18| [Desktop](/de/desktop) | Visuelle Überprüfung, parallele Sitzungen, verwaltetes Setup | Diff-Viewer, App-Vorschau, [Computernutzung](/de/desktop#let-claude-use-your-computer) und [Dispatch](/de/desktop#sessions-from-dispatch) auf Pro und Max |

19| [VS Code](/de/vs-code) | Arbeiten in VS Code ohne Wechsel zu einem Terminal | Inline-Diffs, integriertes Terminal, Dateikontext |

20| [JetBrains](/de/jetbrains) | Arbeiten in IntelliJ, PyCharm, WebStorm oder anderen JetBrains-IDEs | Diff-Viewer, Auswahlfreigabe, Terminal-Sitzung |

21| [Web](/de/claude-code-on-the-web) | Langfristige Aufgaben, die nicht viel Steuerung benötigen, oder Arbeiten, die offline fortgesetzt werden sollen | Von Anthropic verwaltete Cloud, wird nach dem Trennen fortgesetzt |

22 

23Die CLI ist die vollständigste Oberfläche für Terminal-native Arbeiten: Scripting, Drittanbieter-Provider und das Agent SDK sind nur in der CLI verfügbar. Desktop und die IDE-Erweiterungen verzichten auf einige CLI-exklusive Funktionen zugunsten visueller Überprüfung und engerer Editor-Integration. Das Web läuft in Anthropics Cloud, sodass Aufgaben nach dem Trennen weitergehen.

24 

25Sie können mehrere Oberflächen im gleichen Projekt verwenden. Konfiguration, Projektgedächtnis und MCP-Server werden über die lokalen Oberflächen hinweg gemeinsam genutzt.

26 

27## Verbinden Sie Ihre Tools

28 

29Integrationen ermöglichen es Claude, mit Services außerhalb Ihrer Codebasis zu arbeiten.

30 

31| Integration | Was es tut | Verwenden Sie es für |

32| :----------------------------------- | :----------------------------------------------------- | :----------------------------------------------------------------------------------- |

33| [Chrome](/de/chrome) | Steuert Ihren Browser mit Ihren angemeldeten Sitzungen | Testen von Web-Apps, Ausfüllen von Formularen, Automatisierung von Websites ohne API |

34| [GitHub Actions](/de/github-actions) | Führt Claude in Ihrer CI-Pipeline aus | Automatisierte PR-Überprüfungen, Issue-Triage, geplante Wartung |

35| [GitLab CI/CD](/de/gitlab-ci-cd) | Dasselbe wie GitHub Actions für GitLab | CI-gesteuerte Automatisierung auf GitLab |

36| [Code Review](/de/code-review) | Überprüft jeden PR automatisch | Fehler vor der menschlichen Überprüfung erkennen |

37| [Slack](/de/slack) | Antwortet auf `@Claude`-Erwähnungen in Ihren Kanälen | Umwandlung von Fehlerberichten in Pull Requests aus Team-Chat |

38 

39Für Integrationen, die hier nicht aufgeführt sind, ermöglichen [MCP-Server](/de/mcp) und [Konnektoren](/de/desktop#connect-external-tools) die Verbindung mit fast allem: Linear, Notion, Google Drive oder Ihren eigenen internen APIs.

40 

41## Arbeiten Sie, wenn Sie weg von Ihrem Terminal sind

42 

43Claude Code offers several ways to work when you're not at your terminal. They differ in what triggers the work, where Claude runs, and how much you need to set up.

44 

45| | Trigger | Claude runs on | Setup | Best for |

46| :--------------------------------------------- | :--------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------ |

47| [Dispatch](/en/desktop#sessions-from-dispatch) | Message a task from the Claude mobile app | Your machine (Desktop) | [Pair the mobile app with Desktop](https://support.claude.com/en/articles/13947068) | Delegating work while you're away, minimal setup |

48| [Remote Control](/en/remote-control) | Drive a running session from [claude.ai/code](https://claude.ai/code) or the Claude mobile app | Your machine (CLI or VS Code) | Run `claude remote-control` | Steering in-progress work from another device |

49| [Channels](/en/channels) | Push events from a chat app like Telegram or Discord, or your own server | Your machine (CLI) | [Install a channel plugin](/en/channels#quickstart) or [build your own](/en/channels-reference) | Reacting to external events like CI failures or chat messages |

50| [Slack](/en/slack) | Mention `@Claude` in a team channel | Anthropic cloud | [Install the Slack app](/en/slack#setting-up-claude-code-in-slack) with [Claude Code on the web](/en/claude-code-on-the-web) enabled | PRs and reviews from team chat |

51| [Scheduled tasks](/en/scheduled-tasks) | Set a schedule | [CLI](/en/scheduled-tasks), [Desktop](/en/desktop-scheduled-tasks), or [cloud](/en/routines) | Pick a frequency | Recurring automation like daily reviews |

52 

53Wenn Sie nicht sicher sind, wo Sie anfangen sollen, [installieren Sie die CLI](/de/quickstart) und führen Sie sie in einem Projektverzeichnis aus. Wenn Sie lieber kein Terminal verwenden möchten, bietet [Desktop](/de/desktop-quickstart) Ihnen die gleiche Engine mit einer grafischen Benutzeroberfläche.

54 

55## Verwandte Ressourcen

56 

57### Plattformen

58 

59* [CLI-Schnellstart](/de/quickstart): Installation und Ausführung Ihres ersten Befehls im Terminal

60* [Desktop](/de/desktop): visuelle Diff-Überprüfung, parallele Sitzungen, Computernutzung und Dispatch

61* [VS Code](/de/vs-code): die Claude Code-Erweiterung in Ihrem Editor

62* [JetBrains](/de/jetbrains): die Erweiterung für IntelliJ, PyCharm und andere JetBrains-IDEs

63* [Claude Code im Web](/de/claude-code-on-the-web): Cloud-Sitzungen, die weiterlaufen, wenn Sie sich trennen

64 

65### Integrationen

66 

67* [Chrome](/de/chrome): Automatisieren Sie Browser-Aufgaben mit Ihren angemeldeten Sitzungen

68* [GitHub Actions](/de/github-actions): Führen Sie Claude in Ihrer CI-Pipeline aus

69* [GitLab CI/CD](/de/gitlab-ci-cd): dasselbe für GitLab

70* [Code Review](/de/code-review): automatische Überprüfung bei jedem Pull Request

71* [Slack](/de/slack): Senden Sie Aufgaben aus Team-Chat, erhalten Sie PRs zurück

72 

73### Remote-Zugriff

74 

75* [Dispatch](/de/desktop#sessions-from-dispatch): Senden Sie eine Aufgabe von Ihrem Telefon aus, und es kann eine Desktop-Sitzung starten

76* [Remote Control](/de/remote-control): Steuern Sie eine laufende Sitzung von Ihrem Telefon oder Browser aus

77* [Channels](/de/channels): Schieben Sie Ereignisse von Chat-Apps oder Ihren eigenen Servern in eine Sitzung

78* [Geplante Aufgaben](/de/scheduled-tasks): Führen Sie Prompts nach einem wiederkehrenden Zeitplan aus

plugin-dependencies.md +153 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Versionsbeschränkungen für Plugin-Abhängigkeiten

6 

7> Deklarieren Sie Versionsbeschränkungen für Plugin-Abhängigkeiten, damit Ihr Plugin weiterhin funktioniert, wenn ein vorgelagertes Plugin eine Breaking Change veröffentlicht.

8 

9Ein Plugin kann von anderen Plugins abhängen, indem es diese in `plugin.json` oder in seinem Marketplace-Eintrag auflistet. Standardmäßig verfolgt eine Abhängigkeit die neueste verfügbare Version, sodass eine vorgelagerte Veröffentlichung die Abhängigkeit Ihres Plugins ohne Warnung ändern kann. Versionsbeschränkungen ermöglichen es Ihnen, eine Abhängigkeit in einem getesteten Versionsbereich zu halten, bis Sie sich entscheiden, sie zu aktualisieren.

10 

11Wenn Sie ein Plugin installieren, das Abhängigkeiten deklariert, löst Claude Code diese automatisch auf und installiert sie. Am Ende der Installationsausgabe wird aufgelistet, welche Abhängigkeiten hinzugefügt wurden. Wenn eine Abhängigkeit später fehlt, installieren `/reload-plugins` und die Hintergrund-Plugin-Autoupdate sie neu, sofern ihr Marketplace bereits in Ihren konfigurierten Marketplaces vorhanden ist. Das erneute Ausführen von `claude plugin install` auf dem abhängigen Plugin oder das Hinzufügen eines Marketplace mit `claude plugin marketplace add` löst auch alle ausstehenden fehlenden Abhängigkeiten auf. Abhängigkeiten von einem Marketplace, den Sie nicht hinzugefügt haben, bleiben ungelöst.

12 

13Diese Anleitung ist für Plugin-Autoren, die Abhängigkeiten in `plugin.json` deklarieren, und für Marketplace-Verwalter, die Versionen taggen. Um Plugins mit Abhängigkeiten zu installieren, siehe [Plugins entdecken und installieren](/de/discover-plugins). Für das vollständige Manifest-Schema siehe die [Plugins-Referenz](/de/plugins-reference).

14 

15<Note>

16 Versionsbeschränkungen für Abhängigkeiten erfordern Claude Code v2.1.110 oder später.

17</Note>

18 

19## Warum Versionsbeschränkungen verwenden

20 

21Stellen Sie sich einen internen Marketplace vor, auf dem zwei Teams Plugins veröffentlichen. Das Platform-Team verwaltet `secrets-vault`, einen MCP-Server, der ein Secrets-Backend umhüllt. Das Deploy-Team verwaltet `deploy-kit`, das `secrets-vault` aufruft, um während Deployments Anmeldedaten abzurufen.

22 

23`deploy-kit` wird gegen `secrets-vault` v2.1.0 getestet. Ohne Versionsbeschränkung führt die nächste Veröffentlichung des Platform-Teams, die ein MCP-Tool umbenennt, dazu, dass die automatische Aktualisierung `secrets-vault` auf die neue Version für jeden Ingenieur aktualisiert und `deploy-kit` bricht.

24 

25Mit einer Versionsbeschränkung deklariert `deploy-kit`, dass es `secrets-vault` im Bereich `~2.1.0` benötigt. Ingenieure mit installiertem `deploy-kit` bleiben auf der höchsten passenden `2.1.x`-Patch-Version. Das Deploy-Team aktualisiert nach eigenem Zeitplan, indem es eine neue `deploy-kit`-Version mit einer breiteren Beschränkung veröffentlicht.

26 

27## Abhängigkeit mit Versionsbeschränkung deklarieren

28 

29Listet Abhängigkeiten im `dependencies`-Array der `plugin.json` Ihres Plugins auf. Jeder Eintrag ist entweder ein Plugin-Name oder ein Objekt mit einer Versionsbeschränkung.

30 

31Das folgende Manifest deklariert eine unversionierte Abhängigkeit und eine beschränkte Abhängigkeit:

32 

33```json .claude-plugin/plugin.json theme={null}

34{

35 "name": "deploy-kit",

36 "version": "3.1.0",

37 "dependencies": [

38 "audit-logger",

39 { "name": "secrets-vault", "version": "~2.1.0" }

40 ]

41}

42```

43 

44Ein Eintrag kann ein einfacher String mit nur dem Plugin-Namen sein, wie `"audit-logger"` im obigen Beispiel, das von der Version abhängt, die der Marketplace dieses Plugins bereitstellt. Für mehr Kontrolle verwenden Sie ein Objekt mit diesen Feldern:

45 

46| Feld | Typ | Beschreibung |

47| :------------ | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

48| `name` | string | Plugin-Name. Wird im selben Marketplace wie das deklarierte Plugin aufgelöst. Erforderlich. |

49| `version` | string | Ein [semver-Bereich](https://github.com/npm/node-semver#ranges) wie `~2.1.0`, `^2.0`, `>=1.4` oder `=2.1.0`. Die Abhängigkeit wird in der höchsten getaggten Version abgerufen, die diesen Bereich erfüllt. |

50| `marketplace` | string | Ein anderer Marketplace, um `name` darin aufzulösen. Marketplace-übergreifende Abhängigkeiten sind blockiert, es sei denn, der Ziel-Marketplace ist in [`allowCrossMarketplaceDependenciesOn`](#depend-on-a-plugin-from-another-marketplace) in der `marketplace.json` des Root-Marketplace aufgelistet. |

51 

52Das `version`-Feld akzeptiert jeden Ausdruck, der vom `semver`-Paket von Node unterstützt wird, einschließlich Caret-, Tilde-, Bindestrich- und Vergleichsbereiche. Vorabversionen wie `2.0.0-beta.1` sind ausgeschlossen, es sei denn, Ihr Bereich entscheidet sich mit einem Vorabversions-Suffix wie `^2.0.0-0` dafür.

53 

54## Abhängigkeit von einem Plugin aus einem anderen Marketplace

55 

56Standardmäßig weigert sich Claude Code, eine Abhängigkeit automatisch zu installieren, die sich in einem anderen Marketplace als das Plugin befindet, das sie deklariert. Dies verhindert, dass ein Marketplace stillschweigend Plugins aus einer Quelle abruft, die Sie nicht überprüft haben.

57 

58Um dies zu ermöglichen, fügt der Verwalter des Root-Marketplace den Namen des Ziel-Marketplace zu `allowCrossMarketplaceDependenciesOn` in `marketplace.json` hinzu. Der Root-Marketplace ist derjenige, der das Plugin hostet, das der Benutzer installiert. Nur seine Allowlist wird konsultiert, daher vertraut nicht durch zwischengelagerte Marketplaces.

59 

60Die folgende `marketplace.json` ermöglicht es `deploy-kit`, von einem Plugin aus `acme-shared` abhängig zu sein:

61 

62```json .claude-plugin/marketplace.json theme={null}

63{

64 "name": "acme-tools",

65 "owner": { "name": "Acme" },

66 "allowCrossMarketplaceDependenciesOn": ["acme-shared"],

67 "plugins": [

68 {

69 "name": "deploy-kit",

70 "source": "./deploy-kit",

71 "dependencies": [

72 { "name": "audit-logger", "marketplace": "acme-shared" }

73 ]

74 }

75 ]

76}

77```

78 

79Wenn das Feld fehlt oder den Ziel-Marketplace nicht enthält, schlägt die Installation mit einem `cross-marketplace`-Fehler fehl, der das zu setzende Feld benennt. Benutzer können die Abhängigkeit immer noch manuell zuerst installieren, was die Beschränkung erfüllt, ohne die Allowlist zu ändern.

80 

81## Plugin-Versionen für Versionsauflösung taggen

82 

83Versionsbeschränkungen werden gegen Git-Tags im Marketplace-Repository aufgelöst. Damit Claude Code die verfügbaren Versionen einer Abhängigkeit findet, müssen die Versionen des vorgelagerten Plugins mit einer bestimmten Namenskonvention getaggt werden.

84 

85Taggen Sie jede Veröffentlichung als `{plugin-name}--v{version}`, wobei `{version}` dem `version`-Feld in der `plugin.json` dieses Commits entspricht. Führen Sie aus dem Plugin-Verzeichnis aus folgendes aus:

86 

87```bash theme={null}

88claude plugin tag --push

89```

90 

91Der Befehl `claude plugin tag` leitet den Tag-Namen aus dem Plugin-Manifest und dem umschließenden Marketplace-Eintrag ab. Vor dem Erstellen des Tags validiert er den Plugin-Inhalt, überprüft, dass `plugin.json` und der Marketplace-Eintrag sich auf die Version einigen, erfordert einen sauberen Arbeitsbaum im Plugin-Verzeichnis und weigert sich, wenn das Tag bereits vorhanden ist. Fügen Sie `--dry-run` hinzu, um zu sehen, was getaggt würde, ohne es zu erstellen. Das direkte Ausführen von `git tag secrets-vault--v2.1.0` ist gleichwertig, wenn Sie `plugin.json` und den Marketplace-Eintrag selbst synchron halten.

92 

93Das Plugin-Namen-Präfix ermöglicht es einem Marketplace-Repository, mehrere Plugins mit unabhängigen Versionslinien zu hosten. Der `--v`-Trennzeichen wird als Präfix-Übereinstimmung auf dem vollständigen Plugin-Namen analysiert, sodass Plugin-Namen, die Bindestriche enthalten, korrekt behandelt werden.

94 

95Wenn Sie ein Plugin installieren, das `{ "name": "secrets-vault", "version": "~2.1.0" }` deklariert, listet Claude Code die Tags des Marketplace auf, filtert diejenigen, die mit `secrets-vault--v` beginnen, und ruft die höchste Version ab, die `~2.1.0` erfüllt. Wenn kein passender Tag vorhanden ist, wird das abhängige Plugin mit einem Fehler deaktiviert, der die verfügbaren Versionen auflistet.

96 

97Das aufgelöste Tag's Semver wird separat vom `version`-Feld der `plugin.json` aufgezeichnet, sodass Beschränkungsprüfungen das Tag verwenden, das tatsächlich abgerufen wurde, auch wenn `plugin.json` bei diesem Commit einen veralteten Wert hat. Der Cache-Verzeichnisname für eine Tag-aufgelöste Installation enthält ein 12-stelliges Commit-SHA-Suffix, sodass wenn ein Maintainer ein Tag zu einem anderen Commit verschiebt, die nächste Installation ein frisches Cache-Verzeichnis erhält, anstatt veraltete Inhalte wiederzuverwenden.

98 

99<Note>

100 Für `npm`-Marketplace-Quellen steuert die Beschränkung nicht, welche Version abgerufen wird, da die Tag-basierte Auflösung nur auf Git-gestützten Quellen gilt. Die Beschränkung wird immer noch zur Ladezeit überprüft, und das abhängige Plugin wird mit `dependency-version-unsatisfied` deaktiviert, wenn die installierte Version sie nicht erfüllt.

101</Note>

102 

103## Wie Beschränkungen interagieren

104 

105Wenn mehrere installierte Plugins dieselbe Abhängigkeit beschränken, schneidet Claude Code ihre Bereiche ab und löst die Abhängigkeit zur höchsten Version auf, die alle erfüllt. Die folgende Tabelle zeigt, wie häufige Kombinationen aufgelöst werden.

106 

107| Plugin A erfordert | Plugin B erfordert | Ergebnis |

108| :----------------- | :----------------- | :----------------------------------------------------------------------------------------------------------------------------------- |

109| `^2.0` | `>=2.1` | Eine Installation auf dem höchsten `2.x`-Tag bei oder über `2.1.0`. Beide Plugins werden geladen. |

110| `~2.1` | `~3.0` | Installation von Plugin B schlägt mit `range-conflict` fehl. Plugin A und die Abhängigkeit bleiben wie sie waren. |

111| `=2.1.0` | keine | Die Abhängigkeit bleibt bei `2.1.0`. Die automatische Aktualisierung überspringt neuere Versionen, während Plugin A installiert ist. |

112 

113Die automatische Aktualisierung ruft eine beschränkte Abhängigkeit auf dem höchsten Git-Tag ab, der jeden Bereich des installierten Plugins erfüllt, anstatt auf der neuesten Version des Marketplace, sodass die Abhängigkeit weiterhin Updates innerhalb ihres zulässigen Bereichs erhält. Wenn kein Tag alle Bereiche erfüllt, wird die Aktualisierung übersprungen und die Übersprungsmeldung erscheint in `/doctor` und auf der Registerkarte `/plugin` Fehler und benennt das einschränkende Plugin.

114 

115Wenn Sie das letzte Plugin deinstallieren, das eine Abhängigkeit beschränkt, wird die Abhängigkeit nicht mehr gehalten und verfolgt bei der nächsten Aktualisierung wieder ihren Marketplace-Eintrag.

116 

117## Verwaiste automatisch installierte Abhängigkeiten entfernen

118 

119Automatisch installierte Abhängigkeiten bleiben auf der Festplatte, nachdem die Plugins, die sie installiert haben, deinstalliert werden, falls Sie ein abhängiges Plugin neu installieren oder die Abhängigkeit direkt weiterhin verwenden möchten. Um sie zu bereinigen, führen Sie `claude plugin prune` aus, um die automatisch installierten Abhängigkeiten aufzulisten, die kein installiertes Plugin mehr benötigt, und entfernen Sie sie nach einer Bestätigungsaufforderung. Dies erfordert Claude Code v2.1.121 oder später.

120 

121```bash theme={null}

122claude plugin prune

123```

124 

125Standardmäßig arbeitet prune im Benutzerbereich. Verwenden Sie `--scope project` oder `--scope local`, um einen anderen Bereich anzuvisieren. Übergeben Sie `--dry-run`, um aufzulisten, was entfernt würde, ohne etwas zu ändern. Übergeben Sie `-y`, um die Bestätigungsaufforderung zu überspringen. Wenn stdin oder stdout kein Terminal ist, listet prune die verwaisten Abhängigkeiten auf und beendet sich, ohne sie zu entfernen, es sei denn, `-y` wird übergeben.

126 

127Um als Teil einer Deinstallation zu bereinigen, übergeben Sie `--prune` an `claude plugin uninstall`. Nach dem Entfernen des benannten Plugins scannt Claude Code nach automatisch installierten Abhängigkeiten, die jetzt verwaist sind, und entfernt sie. Plugins, die Sie selbst installiert haben, werden niemals bereinigt, nur diejenigen, die automatisch durch das `dependencies`-Array eines anderen Plugins installiert wurden.

128 

129Um beispielsweise `deploy-kit` zu deinstallieren und die Abhängigkeiten zu bereinigen, die es hinterlässt:

130 

131```bash theme={null}

132claude plugin uninstall deploy-kit --prune

133```

134 

135## Abhängigkeitsfehler beheben

136 

137Abhängigkeitsprobleme erscheinen in `claude plugin list`, in der `/plugin`-Schnittstelle und in `/doctor`. Das betroffene Plugin wird deaktiviert, bis Sie den Fehler beheben. Die häufigsten Fehler und deren Behebungen sind unten aufgelistet.

138 

139| Fehler | Bedeutung | Wie zu beheben |

140| :------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

141| `dependency-unsatisfied` | Eine deklarierte Abhängigkeit ist nicht installiert, oder sie ist installiert, aber deaktiviert. | Führen Sie den `claude plugin install`-Befehl aus, der in der Fehlermeldung angezeigt wird. Wenn der Marketplace der Abhängigkeit noch nicht konfiguriert ist, fügen Sie ihn mit `claude plugin marketplace add` hinzu und Claude Code löst die Abhängigkeit automatisch auf. Wenn die Abhängigkeit deaktiviert ist, aktivieren Sie sie. |

142| `range-conflict` | Die Versionsanforderungen für eine Abhängigkeit können nicht kombiniert werden. Die Fehlermeldung benennt die Ursache: Keine Version erfüllt alle Bereiche, ein Bereich ist keine gültige Semver-Syntax, oder die kombinierten Bereiche sind zu komplex zum Schneiden. | Deinstallieren oder aktualisieren Sie eines der in Konflikt stehenden Plugins, beheben Sie alle ungültigen `version`-Strings, vereinfachen Sie lange `\|\|`-Ketten, oder bitten Sie den vorgelagerten Autor, seine Beschränkung zu erweitern. |

143| `dependency-version-unsatisfied` | Die Version der installierten Abhängigkeit liegt außerhalb des deklarierten Bereichs dieses Plugins. | Führen Sie `claude plugin install <dependency>@<marketplace>` aus, um die Abhängigkeit gegen alle aktuellen Beschränkungen neu aufzulösen. |

144| `no-matching-tag` | Das Repository der Abhängigkeit hat kein `{name}--v*`-Tag, das den Bereich erfüllt. | Überprüfen Sie, dass die vorgelagerte Stelle Versionen mit der obigen Konvention getaggt hat, oder lockern Sie Ihren Bereich. |

145 

146Um diese Fehler programmgesteuert zu überprüfen, führen Sie `claude plugin list --json` aus und lesen Sie das `errors`-Feld auf jedem Plugin.

147 

148## Siehe auch

149 

150* [Plugins erstellen](/de/plugins): Erstellen Sie Plugins mit Skills, Agents und Hooks

151* [Plugin-Marketplace erstellen und verteilen](/de/plugin-marketplaces): Hosten Sie Plugins für Ihr Team

152* [Plugins-Referenz](/de/plugins-reference#plugin-manifest-schema): Das vollständige `plugin.json`-Schema

153* [Versionsverwaltung](/de/plugins-reference#version-management): Wie die eigene Version eines Plugins aufgelöst wird und als Cache-Schlüssel verwendet wird

plugin-marketplaces.md +1054 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Erstellen und Verteilen eines Plugin-Marktplatzes

6 

7> Erstellen und hosten Sie Plugin-Marktplätze, um Claude Code-Erweiterungen in Teams und Communities zu verteilen.

8 

9Ein **Plugin-Marktplatz** ist ein Katalog, mit dem Sie Plugins an andere verteilen können. Marktplätze bieten zentrale Entdeckung, Versionsverfolgung, automatische Updates und Unterstützung für mehrere Quellentypen (Git-Repositories, lokale Pfade und mehr). Diese Anleitung zeigt Ihnen, wie Sie Ihren eigenen Marktplatz erstellen, um Plugins mit Ihrem Team oder Ihrer Community zu teilen.

10 

11Möchten Sie Plugins aus einem vorhandenen Marktplatz installieren? Siehe [Entdecken und Installieren vorgefertigter Plugins](/de/discover-plugins).

12 

13## Übersicht

14 

15Das Erstellen und Verteilen eines Marktplatzes umfasst:

16 

171. **Plugins erstellen**: Erstellen Sie ein oder mehrere Plugins mit skills, Agents, hooks, MCP servers oder LSP servers. Diese Anleitung setzt voraus, dass Sie bereits Plugins zum Verteilen haben; siehe [Plugins erstellen](/de/plugins) für Details zum Erstellen von Plugins.

182. **Marktplatzdatei erstellen**: Definieren Sie eine `marketplace.json`, die Ihre Plugins und deren Speicherorte auflistet (siehe [Marktplatzdatei erstellen](#create-the-marketplace-file)).

193. **Marktplatz hosten**: Pushen Sie zu GitHub, GitLab oder einem anderen Git-Host (siehe [Marktplätze hosten und verteilen](#host-and-distribute-marketplaces)).

204. **Mit Benutzern teilen**: Benutzer fügen Ihren Marktplatz mit `/plugin marketplace add` hinzu und installieren einzelne Plugins (siehe [Plugins entdecken und installieren](/de/discover-plugins)).

21 

22Sobald Ihr Marktplatz live ist, können Sie ihn aktualisieren, indem Sie Änderungen in Ihr Repository pushen. Benutzer aktualisieren ihre lokale Kopie mit `/plugin marketplace update`.

23 

24## Anleitung: Erstellen Sie einen lokalen Marktplatz

25 

26Dieses Beispiel erstellt einen Marktplatz mit einem Plugin: ein `/quality-review` skill für Code-Reviews. Sie erstellen die Verzeichnisstruktur, fügen ein skill hinzu, erstellen das Plugin-Manifest und den Marktplatzkatalog und installieren und testen ihn dann.

27 

28<Steps>

29 <Step title="Erstellen Sie die Verzeichnisstruktur">

30 ```bash theme={null}

31 mkdir -p my-marketplace/.claude-plugin

32 mkdir -p my-marketplace/plugins/quality-review-plugin/.claude-plugin

33 mkdir -p my-marketplace/plugins/quality-review-plugin/skills/quality-review

34 ```

35 </Step>

36 

37 <Step title="Erstellen Sie das skill">

38 Erstellen Sie eine `SKILL.md`-Datei, die definiert, was das `/quality-review` skill tut.

39 

40 ```markdown my-marketplace/plugins/quality-review-plugin/skills/quality-review/SKILL.md theme={null}

41 ---

42 description: Review code for bugs, security, and performance

43 disable-model-invocation: true

44 ---

45 

46 Review the code I've selected or the recent changes for:

47 - Potential bugs or edge cases

48 - Security concerns

49 - Performance issues

50 - Readability improvements

51 

52 Be concise and actionable.

53 ```

54 </Step>

55 

56 <Step title="Erstellen Sie das Plugin-Manifest">

57 Erstellen Sie eine `plugin.json`-Datei, die das Plugin beschreibt. Das Manifest befindet sich im `.claude-plugin/`-Verzeichnis.

58 

59 ```json my-marketplace/plugins/quality-review-plugin/.claude-plugin/plugin.json theme={null}

60 {

61 "name": "quality-review-plugin",

62 "description": "Adds a /quality-review skill for quick code reviews",

63 "version": "1.0.0"

64 }

65 ```

66 

67 <Note>

68 Das Festlegen von `version` bedeutet, dass Benutzer nur Updates erhalten, wenn Sie dieses Feld ändern. Erhöhen Sie es daher bei jeder Veröffentlichung. Wenn Sie `version` weglassen und diesen Marktplatz in Git hosten, zählt jeder Commit automatisch als neue Version. Siehe [Versionsauflösung](#version-resolution-and-release-channels), um den richtigen Ansatz zu wählen.

69 </Note>

70 </Step>

71 

72 <Step title="Erstellen Sie die Marktplatzdatei">

73 Erstellen Sie den Marktplatzkatalog, der Ihr Plugin auflistet.

74 

75 ```json my-marketplace/.claude-plugin/marketplace.json theme={null}

76 {

77 "name": "my-plugins",

78 "owner": {

79 "name": "Your Name"

80 },

81 "plugins": [

82 {

83 "name": "quality-review-plugin",

84 "source": "./plugins/quality-review-plugin",

85 "description": "Adds a /quality-review skill for quick code reviews"

86 }

87 ]

88 }

89 ```

90 </Step>

91 

92 <Step title="Hinzufügen und Installieren">

93 Fügen Sie den Marktplatz hinzu und installieren Sie das Plugin.

94 

95 ```shell theme={null}

96 /plugin marketplace add ./my-marketplace

97 /plugin install quality-review-plugin@my-plugins

98 ```

99 </Step>

100 

101 <Step title="Probieren Sie es aus">

102 Wählen Sie etwas Code in Ihrem Editor aus und führen Sie Ihr neues skill aus.

103 

104 ```shell theme={null}

105 /quality-review

106 ```

107 </Step>

108</Steps>

109 

110Um mehr über die Möglichkeiten von Plugins zu erfahren, einschließlich hooks, Agents, MCP servers und LSP servers, siehe [Plugins](/de/plugins).

111 

112<Note>

113 **Wie Plugins installiert werden**: Wenn Benutzer ein Plugin installieren, kopiert Claude Code das Plugin-Verzeichnis an einen Cache-Speicherort. Das bedeutet, dass Plugins keine Dateien außerhalb ihres Verzeichnisses mit Pfaden wie `../shared-utils` referenzieren können, da diese Dateien nicht kopiert werden.

114 

115 Wenn Sie Dateien über Plugins hinweg teilen müssen, verwenden Sie Symlinks. Siehe [Plugin-Caching und Dateiauflösung](/de/plugins-reference#plugin-caching-and-file-resolution) für Details.

116</Note>

117 

118## Marktplatzdatei erstellen

119 

120Erstellen Sie `.claude-plugin/marketplace.json` im Stammverzeichnis Ihres Repositories. Diese Datei definiert den Namen Ihres Marktplatzes, Eigentümerinformationen und eine Liste von Plugins mit ihren Quellen.

121 

122Jeder Plugin-Eintrag benötigt mindestens einen `name` und eine `source` (wo man ihn abrufen kann). Siehe das [vollständige Schema](#marketplace-schema) unten für alle verfügbaren Felder.

123 

124```json theme={null}

125{

126 "name": "company-tools",

127 "owner": {

128 "name": "DevTools Team",

129 "email": "devtools@example.com"

130 },

131 "plugins": [

132 {

133 "name": "code-formatter",

134 "source": "./plugins/formatter",

135 "description": "Automatic code formatting on save",

136 "version": "2.1.0",

137 "author": {

138 "name": "DevTools Team"

139 }

140 },

141 {

142 "name": "deployment-tools",

143 "source": {

144 "source": "github",

145 "repo": "company/deploy-plugin"

146 },

147 "description": "Deployment automation tools"

148 }

149 ]

150}

151```

152 

153## Marktplatz-Schema

154 

155### Erforderliche Felder

156 

157| Feld | Typ | Beschreibung | Beispiel |

158| :-------- | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- |

159| `name` | string | Marktplatz-Identifier (Kebab-Case, keine Leerzeichen). Dies ist öffentlich sichtbar: Benutzer sehen es beim Installieren von Plugins (z. B. `/plugin install my-tool@your-marketplace`). | `"acme-tools"` |

160| `owner` | object | Informationen zum Marktplatz-Betreuer ([siehe Felder unten](#owner-fields)) | |

161| `plugins` | array | Liste der verfügbaren Plugins | Siehe unten |

162 

163<Note>

164 **Reservierte Namen**: Die folgenden Marktplatznamen sind für die offizielle Nutzung durch Anthropic reserviert und können nicht von Drittanbieter-Marktplätzen verwendet werden: `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `knowledge-work-plugins`, `life-sciences`. Namen, die offizielle Marktplätze imitieren (wie `official-claude-plugins` oder `anthropic-tools-v2`), sind ebenfalls blockiert.

165</Note>

166 

167### Eigentümer-Felder

168 

169| Feld | Typ | Erforderlich | Beschreibung |

170| :------ | :----- | :----------- | :------------------------------ |

171| `name` | string | Ja | Name des Betreuers oder Teams |

172| `email` | string | Nein | Kontakt-E-Mail für den Betreuer |

173 

174### Optionale Felder

175 

176| Feld | Typ | Beschreibung |

177| :------------------------------------ | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

178| `$schema` | string | JSON-Schema-URL für Editor-Autovervollständigung und Validierung. Claude Code ignoriert dieses Feld beim Laden. |

179| `description` | string | Kurze Marktplatzbeschreibung |

180| `version` | string | Marktplatz-Manifest-Version |

181| `metadata.pluginRoot` | string | Basisverzeichnis, das relativen Plugin-Quellpfaden vorangestellt wird (z. B. `"./plugins"` ermöglicht es Ihnen, `"source": "formatter"` statt `"source": "./plugins/formatter"` zu schreiben) |

182| `allowCrossMarketplaceDependenciesOn` | array | Andere Marktplätze, von denen Plugins in diesem Marktplatz abhängen können. Abhängigkeiten von einem Marktplatz, der hier nicht aufgelistet ist, werden bei der Installation blockiert. Siehe [Von einem Plugin aus einem anderen Marktplatz abhängen](/de/plugin-dependencies#depend-on-a-plugin-from-another-marketplace). |

183 

184`description` und `version` werden auch unter `metadata` für Rückwärtskompatibilität akzeptiert.

185 

186## Plugin-Einträge

187 

188Jeder Plugin-Eintrag im `plugins`-Array beschreibt ein Plugin und wo man es findet. Sie können jedes Feld aus dem [Plugin-Manifest-Schema](/de/plugins-reference#plugin-manifest-schema) einbeziehen (wie `description`, `version`, `author`, `commands`, `hooks` usw.), plus diese Marktplatz-spezifischen Felder: `source`, `category`, `tags` und `strict`.

189 

190### Erforderliche Felder

191 

192| Feld | Typ | Beschreibung |

193| :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

194| `name` | string | Plugin-Identifier (Kebab-Case, keine Leerzeichen). Dies ist öffentlich sichtbar: Benutzer sehen es beim Installieren (z. B. `/plugin install my-plugin@marketplace`). |

195| `source` | string\|object | Wo das Plugin abgerufen werden soll (siehe [Plugin-Quellen](#plugin-sources) unten) |

196 

197### Optionale Plugin-Felder

198 

199**Standard-Metadatenfelder:**

200 

201| Feld | Typ | Beschreibung |

202| :------------ | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

203| `description` | string | Kurze Plugin-Beschreibung |

204| `version` | string | Plugin-Version. Falls gesetzt (hier oder in `plugin.json`), wird das Plugin auf diese Zeichenkette festgelegt und Benutzer erhalten Updates nur, wenn sie sich ändert. Weglassen, um auf den Git-Commit-SHA zurückzugreifen. Siehe [Versionsauflösung](#version-resolution-and-release-channels). |

205| `author` | object | Plugin-Autoreninformationen (`name` erforderlich, `email` optional) |

206| `homepage` | string | Plugin-Homepage oder Dokumentations-URL |

207| `repository` | string | Quellcode-Repository-URL |

208| `license` | string | SPDX-Lizenz-Identifier (z. B. MIT, Apache-2.0) |

209| `keywords` | array | Tags für Plugin-Entdeckung und Kategorisierung |

210| `category` | string | Plugin-Kategorie zur Organisation |

211| `tags` | array | Tags für Suchbarkeit |

212| `strict` | boolean | Steuert, ob `plugin.json` die Autorität für Komponentendefinitionen ist (Standard: true). Siehe [Strict Mode](#strict-mode) unten. |

213 

214**Komponenten-Konfigurationsfelder:**

215 

216| Feld | Typ | Beschreibung |

217| :----------- | :------------- | :-------------------------------------------------------------------------------- |

218| `skills` | string\|array | Benutzerdefinierte Pfade zu Skill-Verzeichnissen, die `<name>/SKILL.md` enthalten |

219| `commands` | string\|array | Benutzerdefinierte Pfade zu flachen `.md` Skill-Dateien oder Verzeichnissen |

220| `agents` | string\|array | Benutzerdefinierte Pfade zu Agent-Dateien |

221| `hooks` | string\|object | Benutzerdefinierte hooks-Konfiguration oder Pfad zu hooks-Datei |

222| `mcpServers` | string\|object | MCP server-Konfigurationen oder Pfad zu MCP-Konfiguration |

223| `lspServers` | string\|object | LSP server-Konfigurationen oder Pfad zu LSP-Konfiguration |

224 

225## Plugin-Quellen

226 

227Plugin-Quellen teilen Claude Code mit, wo jedes einzelne Plugin in Ihrem Marktplatz abgerufen werden soll. Diese werden im `source`-Feld jedes Plugin-Eintrags in `marketplace.json` festgelegt.

228 

229Sobald ein Plugin geklont oder auf den lokalen Computer kopiert wird, wird es in den lokalen versionierten Plugin-Cache unter `~/.claude/plugins/cache` kopiert.

230 

231| Quelle | Typ | Felder | Notizen |

232| -------------- | -------------------------------- | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |

233| Relativer Pfad | `string` (z. B. `"./my-plugin"`) | — | Lokales Verzeichnis im Marktplatz-Repo. Muss mit `./` beginnen. Wird relativ zum Marktplatz-Root aufgelöst, nicht zum `.claude-plugin/`-Verzeichnis |

234| `github` | object | `repo`, `ref?`, `sha?` | |

235| `url` | object | `url`, `ref?`, `sha?` | Git-URL-Quelle |

236| `git-subdir` | object | `url`, `path`, `ref?`, `sha?` | Unterverzeichnis in einem Git-Repo. Klont sparsam, um die Bandbreite für Monorepos zu minimieren |

237| `npm` | object | `package`, `version?`, `registry?` | Installiert über `npm install` |

238 

239<Note>

240 **Marktplatz-Quellen vs. Plugin-Quellen**: Dies sind unterschiedliche Konzepte, die unterschiedliche Dinge steuern.

241 

242 * **Marktplatz-Quelle** — wo der `marketplace.json`-Katalog selbst abgerufen werden soll. Wird festgelegt, wenn Benutzer `/plugin marketplace add` ausführen oder in `extraKnownMarketplaces`-Einstellungen. Unterstützt `ref` (Branch/Tag), aber nicht `sha`.

243 * **Plugin-Quelle** — wo ein einzelnes Plugin in der Marktplatz-Liste abgerufen werden soll. Wird im `source`-Feld jedes Plugin-Eintrags in `marketplace.json` festgelegt. Unterstützt sowohl `ref` (Branch/Tag) als auch `sha` (exakter Commit).

244 

245 Beispielsweise kann ein Marktplatz, der unter `acme-corp/plugin-catalog` gehostet wird (Marktplatz-Quelle), ein Plugin auflisten, das von `acme-corp/code-formatter` abgerufen wird (Plugin-Quelle). Die Marktplatz-Quelle und die Plugin-Quelle verweisen auf unterschiedliche Repositories und werden unabhängig voneinander angeheftet.

246</Note>

247 

248### Relative Pfade

249 

250Für Plugins im selben Repository verwenden Sie einen Pfad, der mit `./` beginnt:

251 

252```json theme={null}

253{

254 "name": "my-plugin",

255 "source": "./plugins/my-plugin"

256}

257```

258 

259Pfade werden relativ zum Marktplatz-Root aufgelöst, das ist das Verzeichnis, das `.claude-plugin/` enthält. Im obigen Beispiel verweist `./plugins/my-plugin` auf `<repo>/plugins/my-plugin`, obwohl `marketplace.json` unter `<repo>/.claude-plugin/marketplace.json` lebt. Verwenden Sie nicht `../`, um Pfade außerhalb des Marktplatz-Root zu referenzieren.

260 

261<Note>

262 Relative Pfade funktionieren nur, wenn Benutzer Ihren Marktplatz über Git hinzufügen (GitHub, GitLab oder Git-URL). Wenn Benutzer Ihren Marktplatz über eine direkte URL zur `marketplace.json`-Datei hinzufügen, werden relative Pfade nicht korrekt aufgelöst. Verwenden Sie für URL-basierte Verteilung stattdessen GitHub-, npm- oder Git-URL-Quellen. Siehe [Fehlerbehebung](#plugins-with-relative-paths-fail-in-url-based-marketplaces) für Details.

263</Note>

264 

265### GitHub-Repositories

266 

267```json theme={null}

268{

269 "name": "github-plugin",

270 "source": {

271 "source": "github",

272 "repo": "owner/plugin-repo"

273 }

274}

275```

276 

277Sie können an einen bestimmten Branch, Tag oder Commit anheften:

278 

279```json theme={null}

280{

281 "name": "github-plugin",

282 "source": {

283 "source": "github",

284 "repo": "owner/plugin-repo",

285 "ref": "v2.0.0",

286 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

287 }

288}

289```

290 

291| Feld | Typ | Beschreibung |

292| :----- | :----- | :-------------------------------------------------------------------------------------- |

293| `repo` | string | Erforderlich. GitHub-Repository im Format `owner/repo` |

294| `ref` | string | Optional. Git-Branch oder Tag (Standard: Standard-Branch des Repositories) |

295| `sha` | string | Optional. Vollständiger 40-stelliger Git-Commit-SHA zum Anheften an eine exakte Version |

296 

297### Git-Repositories

298 

299```json theme={null}

300{

301 "name": "git-plugin",

302 "source": {

303 "source": "url",

304 "url": "https://gitlab.com/team/plugin.git"

305 }

306}

307```

308 

309Sie können an einen bestimmten Branch, Tag oder Commit anheften:

310 

311```json theme={null}

312{

313 "name": "git-plugin",

314 "source": {

315 "source": "url",

316 "url": "https://gitlab.com/team/plugin.git",

317 "ref": "main",

318 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

319 }

320}

321```

322 

323| Feld | Typ | Beschreibung |

324| :---- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

325| `url` | string | Erforderlich. Vollständige Git-Repository-URL (`https://` oder `git@`). Das `.git`-Suffix ist optional, daher funktionieren Azure DevOps- und AWS CodeCommit-URLs ohne das Suffix |

326| `ref` | string | Optional. Git-Branch oder Tag (Standard: Standard-Branch des Repositories) |

327| `sha` | string | Optional. Vollständiger 40-stelliger Git-Commit-SHA zum Anheften an eine exakte Version |

328 

329### Git-Unterverzeichnisse

330 

331Verwenden Sie `git-subdir`, um auf ein Plugin zu verweisen, das sich in einem Unterverzeichnis eines Git-Repositories befindet. Claude Code verwendet einen sparsamen, teilweisen Klon, um nur das Unterverzeichnis abzurufen und die Bandbreite für große Monorepos zu minimieren.

332 

333```json theme={null}

334{

335 "name": "my-plugin",

336 "source": {

337 "source": "git-subdir",

338 "url": "https://github.com/acme-corp/monorepo.git",

339 "path": "tools/claude-plugin"

340 }

341}

342```

343 

344Sie können an einen bestimmten Branch, Tag oder Commit anheften:

345 

346```json theme={null}

347{

348 "name": "my-plugin",

349 "source": {

350 "source": "git-subdir",

351 "url": "https://github.com/acme-corp/monorepo.git",

352 "path": "tools/claude-plugin",

353 "ref": "v2.0.0",

354 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

355 }

356}

357```

358 

359Das `url`-Feld akzeptiert auch eine GitHub-Kurzform (`owner/repo`) oder SSH-URLs (`git@github.com:owner/repo.git`).

360 

361| Feld | Typ | Beschreibung |

362| :----- | :----- | :------------------------------------------------------------------------------------------------- |

363| `url` | string | Erforderlich. Git-Repository-URL, GitHub `owner/repo`-Kurzform oder SSH-URL |

364| `path` | string | Erforderlich. Unterverzeichnispfad im Repo, das das Plugin enthält (z. B. `"tools/claude-plugin"`) |

365| `ref` | string | Optional. Git-Branch oder Tag (Standard: Standard-Branch des Repositories) |

366| `sha` | string | Optional. Vollständiger 40-stelliger Git-Commit-SHA zum Anheften an eine exakte Version |

367 

368### npm-Pakete

369 

370Plugins, die als npm-Pakete verteilt werden, werden mit `npm install` installiert. Dies funktioniert mit jedem Paket in der öffentlichen npm-Registry oder einer privaten Registry, die Ihr Team hostet.

371 

372```json theme={null}

373{

374 "name": "my-npm-plugin",

375 "source": {

376 "source": "npm",

377 "package": "@acme/claude-plugin"

378 }

379}

380```

381 

382Um an eine bestimmte Version anzuheften, fügen Sie das `version`-Feld hinzu:

383 

384```json theme={null}

385{

386 "name": "my-npm-plugin",

387 "source": {

388 "source": "npm",

389 "package": "@acme/claude-plugin",

390 "version": "2.1.0"

391 }

392}

393```

394 

395Um von einer privaten oder internen Registry zu installieren, fügen Sie das `registry`-Feld hinzu:

396 

397```json theme={null}

398{

399 "name": "my-npm-plugin",

400 "source": {

401 "source": "npm",

402 "package": "@acme/claude-plugin",

403 "version": "^2.0.0",

404 "registry": "https://npm.example.com"

405 }

406}

407```

408 

409| Feld | Typ | Beschreibung |

410| :--------- | :----- | :------------------------------------------------------------------------------------------------------------ |

411| `package` | string | Erforderlich. Paketname oder Scoped-Paket (z. B. `@org/plugin`) |

412| `version` | string | Optional. Version oder Versionsspanne (z. B. `2.1.0`, `^2.0.0`, `~1.5.0`) |

413| `registry` | string | Optional. Benutzerdefinierte npm-Registry-URL. Standard ist die System-npm-Registry (normalerweise npmjs.org) |

414 

415### Erweiterte Plugin-Einträge

416 

417Dieses Beispiel zeigt einen Plugin-Eintrag mit vielen optionalen Feldern, einschließlich benutzerdefinierter Pfade für Befehle, Agents, hooks und MCP servers:

418 

419```json theme={null}

420{

421 "name": "enterprise-tools",

422 "source": {

423 "source": "github",

424 "repo": "company/enterprise-plugin"

425 },

426 "description": "Enterprise workflow automation tools",

427 "version": "2.1.0",

428 "author": {

429 "name": "Enterprise Team",

430 "email": "enterprise@example.com"

431 },

432 "homepage": "https://docs.example.com/plugins/enterprise-tools",

433 "repository": "https://github.com/company/enterprise-plugin",

434 "license": "MIT",

435 "keywords": ["enterprise", "workflow", "automation"],

436 "category": "productivity",

437 "commands": [

438 "./commands/core/",

439 "./commands/enterprise/",

440 "./commands/experimental/preview.md"

441 ],

442 "agents": ["./agents/security-reviewer.md", "./agents/compliance-checker.md"],

443 "hooks": {

444 "PostToolUse": [

445 {

446 "matcher": "Write|Edit",

447 "hooks": [

448 {

449 "type": "command",

450 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/validate.sh"

451 }

452 ]

453 }

454 ]

455 },

456 "mcpServers": {

457 "enterprise-db": {

458 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

459 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"]

460 }

461 },

462 "strict": false

463}

464```

465 

466Wichtige Dinge zu beachten:

467 

468* **`commands` und `agents`**: Sie können mehrere Verzeichnisse oder einzelne Dateien angeben. Pfade sind relativ zum Plugin-Root.

469* **`${CLAUDE_PLUGIN_ROOT}`**: Verwenden Sie diese Variable in hooks und MCP server-Konfigurationen, um auf Dateien im Installationsverzeichnis des Plugins zu verweisen. Dies ist notwendig, da Plugins beim Installieren an einen Cache-Speicherort kopiert werden. Verwenden Sie für Abhängigkeiten oder Status, die Plugin-Updates überstehen sollten, stattdessen [`${CLAUDE_PLUGIN_DATA}`](/de/plugins-reference#persistent-data-directory).

470* **`strict: false`**: Da dies auf false gesetzt ist, benötigt das Plugin keine eigene `plugin.json`. Der Marktplatz-Eintrag definiert alles. Siehe [Strict Mode](#strict-mode) unten.

471 

472### Strict Mode

473 

474Das `strict`-Feld steuert, ob `plugin.json` die Autorität für Komponentendefinitionen ist (skills, Agents, hooks, MCP servers, Ausgabestile).

475 

476| Wert | Verhalten |

477| :---------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

478| `true` (Standard) | `plugin.json` ist die Autorität. Der Marktplatz-Eintrag kann es mit zusätzlichen Komponenten ergänzen, und beide Quellen werden zusammengeführt. |

479| `false` | Der Marktplatz-Eintrag ist die gesamte Definition. Wenn das Plugin auch eine `plugin.json` hat, die Komponenten deklariert, ist das ein Konflikt und das Plugin kann nicht geladen werden. |

480 

481**Wann jeder Modus verwendet werden sollte:**

482 

483* **`strict: true`**: Das Plugin hat seine eigene `plugin.json` und verwaltet seine eigenen Komponenten. Der Marktplatz-Eintrag kann zusätzliche skills oder hooks hinzufügen. Dies ist der Standard und funktioniert für die meisten Plugins.

484* **`strict: false`**: Der Marktplatz-Betreiber möchte vollständige Kontrolle. Das Plugin-Repo stellt Rohdateien bereit, und der Marktplatz-Eintrag definiert, welche dieser Dateien als skills, Agents, hooks usw. verfügbar gemacht werden. Nützlich, wenn der Marktplatz die Komponenten eines Plugins anders strukturiert oder kuratiert als vom Plugin-Autor beabsichtigt.

485 

486## Marktplätze hosten und verteilen

487 

488### Auf GitHub hosten (empfohlen)

489 

490GitHub bietet die einfachste Verteilungsmethode:

491 

4921. **Repository erstellen**: Richten Sie ein neues Repository für Ihren Marktplatz ein

4932. **Marktplatzdatei hinzufügen**: Erstellen Sie `.claude-plugin/marketplace.json` mit Ihren Plugin-Definitionen

4943. **Mit Teams teilen**: Benutzer fügen Ihren Marktplatz mit `/plugin marketplace add owner/repo` hinzu

495 

496**Vorteile**: Integrierte Versionskontrolle, Issue-Tracking und Team-Zusammenarbeitsfunktionen.

497 

498### Auf anderen Git-Services hosten

499 

500Jeder Git-Hosting-Service funktioniert, wie GitLab, Bitbucket und selbstgehostete Server. Benutzer fügen mit der vollständigen Repository-URL hinzu:

501 

502```shell theme={null}

503/plugin marketplace add https://gitlab.com/company/plugins.git

504```

505 

506### Private Repositories

507 

508Claude Code unterstützt die Installation von Plugins aus privaten Repositories. Für manuelle Installation und Updates verwendet Claude Code Ihre vorhandenen Git-Credential-Helper, daher funktioniert HTTPS-Zugriff über `gh auth login`, macOS Keychain oder `git-credential-store` genauso wie in Ihrem Terminal. SSH-Zugriff funktioniert, solange der Host bereits in Ihrer `known_hosts`-Datei vorhanden ist und der Schlüssel in `ssh-agent` geladen ist, da Claude Code interaktive SSH-Eingabeaufforderungen für den Host-Fingerprint und die Schlüsselpassphrase unterdrückt.

509 

510Hintergrund-Auto-Updates werden beim Start ohne Credential-Helper ausgeführt, da interaktive Eingabeaufforderungen Claude Code am Start hindern würden. Um Auto-Updates für private Marktplätze zu aktivieren, legen Sie das entsprechende Authentifizierungstoken in Ihrer Umgebung fest:

511 

512| Anbieter | Umgebungsvariablen | Notizen |

513| :-------- | :----------------------------- | :------------------------------------------------ |

514| GitHub | `GITHUB_TOKEN` oder `GH_TOKEN` | Persönliches Zugriffs-Token oder GitHub App-Token |

515| GitLab | `GITLAB_TOKEN` oder `GL_TOKEN` | Persönliches Zugriffs-Token oder Projekt-Token |

516| Bitbucket | `BITBUCKET_TOKEN` | App-Passwort oder Repository-Zugriffs-Token |

517 

518Legen Sie das Token in Ihrer Shell-Konfiguration fest (z. B. `.bashrc`, `.zshrc`) oder übergeben Sie es beim Ausführen von Claude Code:

519 

520```bash theme={null}

521export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx

522```

523 

524<Note>

525 Konfigurieren Sie das Token für CI/CD-Umgebungen als geheime Umgebungsvariable. GitHub Actions stellt automatisch `GITHUB_TOKEN` für Repositories in derselben Organisation bereit.

526</Note>

527 

528### Lokal vor der Verteilung testen

529 

530Testen Sie Ihren Marktplatz lokal, bevor Sie ihn teilen:

531 

532```shell theme={null}

533/plugin marketplace add ./my-local-marketplace

534/plugin install test-plugin@my-local-marketplace

535```

536 

537Für die vollständige Palette von Add-Befehlen (GitHub, Git-URLs, lokale Pfade, Remote-URLs) siehe [Marktplätze hinzufügen](/de/discover-plugins#add-marketplaces).

538 

539### Marktplätze für Ihr Team erforderlich machen

540 

541Sie können Ihr Repository so konfigurieren, dass Teammitglieder automatisch aufgefordert werden, Ihren Marktplatz zu installieren, wenn sie dem Projektordner vertrauen. Fügen Sie Ihren Marktplatz zu `.claude/settings.json` hinzu:

542 

543```json theme={null}

544{

545 "extraKnownMarketplaces": {

546 "company-tools": {

547 "source": {

548 "source": "github",

549 "repo": "your-org/claude-plugins"

550 }

551 }

552 }

553}

554```

555 

556Sie können auch angeben, welche Plugins standardmäßig aktiviert sein sollen:

557 

558```json theme={null}

559{

560 "enabledPlugins": {

561 "code-formatter@company-tools": true,

562 "deployment-tools@company-tools": true

563 }

564}

565```

566 

567Für vollständige Konfigurationsoptionen siehe [Plugin-Einstellungen](/de/settings#plugin-settings).

568 

569<Note>

570 Wenn Sie eine lokale `directory`- oder `file`-Quelle mit einem relativen Pfad verwenden, wird der Pfad gegen den Haupt-Checkout Ihres Repositories aufgelöst. Wenn Sie Claude Code aus einem Git Worktree ausführen, verweist der Pfad immer noch auf den Haupt-Checkout, sodass alle Worktrees denselben Marktplatz-Speicherort teilen. Der Marktplatz-Status wird einmal pro Benutzer in `~/.claude/plugins/known_marketplaces.json` gespeichert, nicht pro Projekt.

571</Note>

572 

573### Plugins für Container vorab ausfüllen

574 

575Für Container-Images und CI-Umgebungen können Sie ein Plugins-Verzeichnis zur Build-Zeit vorab ausfüllen, damit Claude Code mit bereits verfügbaren Marktplätzen und Plugins startet, ohne zur Laufzeit etwas zu klonen. Legen Sie die Umgebungsvariable `CLAUDE_CODE_PLUGIN_SEED_DIR` fest, um auf dieses Verzeichnis zu verweisen.

576 

577Um mehrere Seed-Verzeichnisse zu schichten, trennen Sie Pfade mit `:` auf Unix oder `;` auf Windows. Claude Code durchsucht jedes Verzeichnis in der Reihenfolge, und der erste Seed, der einen bestimmten Marktplatz oder Plugin-Cache enthält, gewinnt.

578 

579Das Seed-Verzeichnis spiegelt die Struktur von `~/.claude/plugins`:

580 

581```

582$CLAUDE_CODE_PLUGIN_SEED_DIR/

583 known_marketplaces.json

584 marketplaces/<name>/...

585 cache/<marketplace>/<plugin>/<version>/...

586```

587 

588Um ein Seed-Verzeichnis zu erstellen, führen Sie Claude Code einmal während des Image-Builds aus, installieren Sie die benötigten Plugins, kopieren Sie dann das resultierende `~/.claude/plugins`-Verzeichnis in Ihr Image und verweisen Sie `CLAUDE_CODE_PLUGIN_SEED_DIR` darauf.

589 

590Um den Kopierungsschritt zu überspringen, legen Sie `CLAUDE_CODE_PLUGIN_CACHE_DIR` während des Builds auf Ihren Ziel-Seed-Pfad fest, damit Plugins direkt dort installiert werden:

591 

592```bash theme={null}

593CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin marketplace add your-org/plugins

594CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin install my-tool@your-plugins

595```

596 

597Legen Sie dann `CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed` in der Laufzeitumgebung Ihres Containers fest, damit Claude Code beim Start aus dem Seed liest.

598 

599Beim Start registriert Claude Code Marktplätze, die in der Seed-Datei `known_marketplaces.json` gefunden werden, in der primären Konfiguration und verwendet Plugin-Caches, die unter `cache/` gefunden werden, ohne erneut zu klonen. Dies funktioniert sowohl im interaktiven Modus als auch im nicht-interaktiven Modus mit dem `-p`-Flag.

600 

601Verhaltensdetails:

602 

603* **Schreibgeschützt**: Das Seed-Verzeichnis wird nie geschrieben. Auto-Updates sind für Seed-Marktplätze deaktiviert, da git pull auf einem schreibgeschützten Dateisystem fehlschlagen würde.

604* **Seed-Einträge haben Vorrang**: Marktplätze, die in der Seed deklariert sind, überschreiben alle übereinstimmenden Einträge in der Benutzerkonfiguration bei jedem Start. Um sich von einem Seed-Plugin abzumelden, verwenden Sie `/plugin disable`, anstatt den Marktplatz zu entfernen.

605* **Pfadauflösung**: Claude Code lokalisiert Marktplatz-Inhalte, indem es `$CLAUDE_CODE_PLUGIN_SEED_DIR/marketplaces/<name>/` zur Laufzeit durchsucht, nicht indem es Pfaden vertraut, die in der Seed-JSON gespeichert sind. Dies bedeutet, dass die Seed korrekt funktioniert, auch wenn sie an einem anderen Pfad als dort, wo sie erstellt wurde, bereitgestellt wird.

606* **Mutation ist blockiert**: Das Ausführen von `/plugin marketplace remove` oder `/plugin marketplace update` gegen einen Seed-verwalteten Marktplatz schlägt mit Anleitung fehl, um Ihren Administrator zu bitten, das Seed-Image zu aktualisieren.

607* **Komponiert mit Einstellungen**: Wenn `extraKnownMarketplaces` oder `enabledPlugins` einen Marktplatz deklarieren, der bereits in der Seed vorhanden ist, verwendet Claude Code die Seed-Kopie, anstatt zu klonen.

608 

609### Verwaltete Marktplatz-Einschränkungen

610 

611Für Organisationen, die strikte Kontrolle über Plugin-Quellen benötigen, können Administratoren einschränken, welche Plugin-Marktplätze Benutzer hinzufügen dürfen, indem sie die Einstellung [`strictKnownMarketplaces`](/de/settings#strictknownmarketplaces) in verwalteten Einstellungen verwenden.

612 

613Wenn `strictKnownMarketplaces` in verwalteten Einstellungen konfiguriert ist, hängt das Einschränkungsverhalten vom Wert ab:

614 

615| Wert | Verhalten |

616| -------------------------- | -------------------------------------------------------------------------------------------- |

617| Nicht definiert (Standard) | Keine Einschränkungen. Benutzer können jeden Marktplatz hinzufügen |

618| Leeres Array `[]` | Vollständige Sperrung. Benutzer können keine neuen Marktplätze hinzufügen |

619| Liste von Quellen | Benutzer können nur Marktplätze hinzufügen, die genau mit der Zulassungsliste übereinstimmen |

620 

621#### Häufige Konfigurationen

622 

623Deaktivieren Sie alle Marktplatz-Ergänzungen:

624 

625```json theme={null}

626{

627 "strictKnownMarketplaces": []

628}

629```

630 

631Nur bestimmte Marktplätze zulassen:

632 

633```json theme={null}

634{

635 "strictKnownMarketplaces": [

636 {

637 "source": "github",

638 "repo": "acme-corp/approved-plugins"

639 },

640 {

641 "source": "github",

642 "repo": "acme-corp/security-tools",

643 "ref": "v2.0"

644 },

645 {

646 "source": "url",

647 "url": "https://plugins.example.com/marketplace.json"

648 }

649 ]

650}

651```

652 

653Alle Marktplätze von einem internen Git-Server mit Regex-Musterabgleich auf dem Host zulassen. Dies ist der empfohlene Ansatz für [GitHub Enterprise Server](/de/github-enterprise-server#plugin-marketplaces-on-ghes) oder selbstgehostete GitLab-Instanzen:

654 

655```json theme={null}

656{

657 "strictKnownMarketplaces": [

658 {

659 "source": "hostPattern",

660 "hostPattern": "^github\\.example\\.com$"

661 }

662 ]

663}

664```

665 

666Dateisystem-basierte Marktplätze aus einem bestimmten Verzeichnis mit Regex-Musterabgleich auf dem Pfad zulassen:

667 

668```json theme={null}

669{

670 "strictKnownMarketplaces": [

671 {

672 "source": "pathPattern",

673 "pathPattern": "^/opt/approved/"

674 }

675 ]

676}

677```

678 

679Verwenden Sie `".*"` als `pathPattern`, um jeden Dateisystempfad zuzulassen und gleichzeitig Netzwerkquellen mit `hostPattern` zu steuern.

680 

681<Note>

682 `strictKnownMarketplaces` schränkt ein, was Benutzer hinzufügen können, registriert aber nicht selbst Marktplätze. Um zulässige Marktplätze automatisch verfügbar zu machen, ohne dass Benutzer `/plugin marketplace add` ausführen müssen, kombinieren Sie es mit [`extraKnownMarketplaces`](/de/settings#extraknownmarketplaces) in derselben `managed-settings.json`. Siehe [Beide zusammen verwenden](/de/settings#strictknownmarketplaces).

683</Note>

684 

685#### Wie Einschränkungen funktionieren

686 

687Einschränkungen werden überprüft, bevor Netzwerk- oder Dateisystemoperationen durchgeführt werden. Die Überprüfung wird beim Hinzufügen von Marktplätzen und beim Installieren, Aktualisieren, Aktualisieren und Auto-Update von Plugins durchgeführt. Wenn ein Marktplatz hinzugefügt wurde, bevor die Richtlinie konfiguriert wurde, und seine Quelle nicht mehr mit der Zulassungsliste übereinstimmt, weigert sich Claude Code, Plugins daraus zu installieren oder zu aktualisieren. Die gleiche Durchsetzung gilt für `blockedMarketplaces`.

688 

689Die Zulassungsliste verwendet exakten Abgleich für die meisten Quellentypen. Damit ein Marktplatz zulässig ist, müssen alle angegebenen Felder genau übereinstimmen:

690 

691* Für GitHub-Quellen: `repo` ist erforderlich, und `ref` oder `path` müssen auch übereinstimmen, wenn sie in der Zulassungsliste angegeben sind

692* Für URL-Quellen: Die vollständige URL muss genau übereinstimmen

693* Für `hostPattern`-Quellen: Der Marktplatz-Host wird gegen das Regex-Muster abgeglichen

694* Für `pathPattern`-Quellen: Der Dateisystempfad des Marktplatzes wird gegen das Regex-Muster abgeglichen

695 

696Da `strictKnownMarketplaces` in [verwalteten Einstellungen](/de/settings#settings-files) festgelegt ist, können einzelne Benutzer und Projektkonfigurationen diese Einschränkungen nicht überschreiben.

697 

698Für vollständige Konfigurationsdetails einschließlich aller unterstützten Quellentypen und Vergleich mit `extraKnownMarketplaces` siehe die [strictKnownMarketplaces-Referenz](/de/settings#strictknownmarketplaces).

699 

700### Versionsauflösung und Release-Kanäle

701 

702Plugin-Versionen bestimmen Cache-Pfade und Update-Erkennung: Wenn die aufgelöste Version mit dem übereinstimmt, was ein Benutzer bereits hat, überspringen `/plugin update` und Auto-Update das Plugin.

703 

704Claude Code löst die Version eines Plugins aus dem ersten dieser Punkte auf, der festgelegt ist:

705 

7061. `version` in der `plugin.json` des Plugins

7072. `version` im Marktplatz-Eintrag des Plugins

7083. Der Git-Commit-SHA der Plugin-Quelle

709 

710Für die Git-basierten Quellentypen `github`, `url`, `git-subdir` und relative Pfade innerhalb eines Git-gehosteten Marktplatzes können Sie `version` ganz weglassen und jeder neue Commit wird als neue Version behandelt. Dies ist die einfachste Einrichtung für interne oder aktiv entwickelte Plugins.

711 

712<Warning>

713 Das Festlegen von `version` heftet das Plugin an. Wenn `plugin.json` `"version": "1.0.0"` deklariert, führt das Pushen neuer Commits ohne Änderung dieser Zeichenkette für bestehende Benutzer zu nichts, da Claude Code die gleiche Version sieht und die zwischengespeicherte Kopie behält. Erhöhen Sie das Feld bei jeder Veröffentlichung, oder lassen Sie es weg, um den Commit-SHA zu verwenden.

714 

715 Vermeiden Sie das Festlegen von `version` sowohl in `plugin.json` als auch im Marktplatz-Eintrag. Der `plugin.json`-Wert gewinnt immer stillschweigend, daher kann eine veraltete Manifest-Version eine Version maskieren, die Sie in `marketplace.json` festgelegt haben.

716</Warning>

717 

718#### Richten Sie Release-Kanäle ein

719 

720Um "stabile" und "neueste" Release-Kanäle für Ihre Plugins zu unterstützen, können Sie zwei Marktplätze einrichten, die auf verschiedene Refs oder SHAs desselben Repos verweisen. Sie können dann die beiden Marktplätze verschiedenen Benutzergruppen über [verwaltete Einstellungen](/de/settings#settings-files) zuweisen.

721 

722<Warning>

723 Jeder Kanal muss sich zu einer anderen Version auflösen. Wenn Sie explizite Versionen verwenden, muss `plugin.json` eine andere `version` bei jedem angehefteten Ref deklarieren. Wenn Sie `version` weglassen, unterscheiden die unterschiedlichen Commit-SHAs bereits die Kanäle. Wenn zwei Refs sich zu der gleichen Versionskette auflösen, behandelt Claude Code sie als identisch und überspringt das Update.

724</Warning>

725 

726##### Beispiel

727 

728```json theme={null}

729{

730 "name": "stable-tools",

731 "plugins": [

732 {

733 "name": "code-formatter",

734 "source": {

735 "source": "github",

736 "repo": "acme-corp/code-formatter",

737 "ref": "stable"

738 }

739 }

740 ]

741}

742```

743 

744```json theme={null}

745{

746 "name": "latest-tools",

747 "plugins": [

748 {

749 "name": "code-formatter",

750 "source": {

751 "source": "github",

752 "repo": "acme-corp/code-formatter",

753 "ref": "latest"

754 }

755 }

756 ]

757}

758```

759 

760##### Kanäle Benutzergruppen zuweisen

761 

762Weisen Sie jeden Marktplatz der entsprechenden Benutzergruppe über verwaltete Einstellungen zu. Beispielsweise erhält die stabile Gruppe:

763 

764```json theme={null}

765{

766 "extraKnownMarketplaces": {

767 "stable-tools": {

768 "source": {

769 "source": "github",

770 "repo": "acme-corp/stable-tools"

771 }

772 }

773 }

774}

775```

776 

777Die Early-Access-Gruppe erhält stattdessen `latest-tools`:

778 

779```json theme={null}

780{

781 "extraKnownMarketplaces": {

782 "latest-tools": {

783 "source": {

784 "source": "github",

785 "repo": "acme-corp/latest-tools"

786 }

787 }

788 }

789}

790```

791 

792#### Abhängigkeitsversionen anheften

793 

794Ein Plugin kann seine Abhängigkeiten auf einen Semver-Bereich beschränken, damit Updates einer Abhängigkeit das abhängige Plugin nicht unterbrechen. Siehe [Plugin-Abhängigkeitsversionen einschränken](/de/plugin-dependencies) für die `{plugin-name}--v{version}` Git-Tag-Konvention, Bereichssyntax und wie mehrere Einschränkungen auf die gleiche Abhängigkeit kombiniert werden.

795 

796## Validierung und Tests

797 

798Testen Sie Ihren Marktplatz vor dem Teilen.

799 

800Validieren Sie Ihre Marktplatz-JSON-Syntax:

801 

802```bash theme={null}

803claude plugin validate .

804```

805 

806Oder von innerhalb von Claude Code:

807 

808```shell theme={null}

809/plugin validate .

810```

811 

812Fügen Sie den Marktplatz zum Testen hinzu:

813 

814```shell theme={null}

815/plugin marketplace add ./path/to/marketplace

816```

817 

818Installieren Sie ein Test-Plugin, um zu überprüfen, ob alles funktioniert:

819 

820```shell theme={null}

821/plugin install test-plugin@marketplace-name

822```

823 

824Für vollständige Plugin-Test-Workflows siehe [Testen Sie Ihre Plugins lokal](/de/plugins#test-your-plugins-locally). Für technische Fehlerbehebung siehe [Plugins-Referenz](/de/plugins-reference).

825 

826## Verwalten Sie Marktplätze über die CLI

827 

828Claude Code bietet nicht-interaktive `claude plugin marketplace` Unterbefehle zum Scripting und zur Automatisierung. Diese entsprechen den `/plugin marketplace` Befehlen, die in einer interaktiven Sitzung verfügbar sind.

829 

830### Plugin marketplace add

831 

832Fügen Sie einen Marktplatz aus einem GitHub-Repository, einer Git-URL, einer Remote-URL oder einem lokalen Pfad hinzu.

833 

834```bash theme={null}

835claude plugin marketplace add <source> [options]

836```

837 

838**Argumente:**

839 

840* `<source>`: GitHub `owner/repo` Kurzform, Git-URL, Remote-URL zu einer `marketplace.json`-Datei oder lokaler Verzeichnispfad. Um an einen Branch oder Tag anzuheften, fügen Sie `@ref` zur GitHub-Kurzform oder `#ref` zu einer Git-URL hinzu

841 

842**Optionen:**

843 

844| Option | Beschreibung | Standard |

845| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------- |

846| `--scope <scope>` | Wo der Marktplatz deklariert werden soll: `user`, `project` oder `local`. Siehe [Plugin-Installationsbereiche](/de/plugins-reference#plugin-installation-scopes) | `user` |

847| `--sparse <paths...>` | Begrenzen Sie den Checkout auf bestimmte Verzeichnisse über git sparse-checkout. Nützlich für Monorepos | |

848 

849Fügen Sie einen Marktplatz aus GitHub mit `owner/repo` Kurzform hinzu:

850 

851```bash theme={null}

852claude plugin marketplace add acme-corp/claude-plugins

853```

854 

855Heften Sie an einen bestimmten Branch oder Tag mit `@ref` an:

856 

857```bash theme={null}

858claude plugin marketplace add acme-corp/claude-plugins@v2.0

859```

860 

861Fügen Sie von einer Git-URL auf einem nicht-GitHub-Host hinzu:

862 

863```bash theme={null}

864claude plugin marketplace add https://gitlab.example.com/team/plugins.git

865```

866 

867Fügen Sie von einer Remote-URL hinzu, die die `marketplace.json`-Datei direkt bereitstellt:

868 

869```bash theme={null}

870claude plugin marketplace add https://example.com/marketplace.json

871```

872 

873Fügen Sie von einem lokalen Verzeichnis zum Testen hinzu:

874 

875```bash theme={null}

876claude plugin marketplace add ./my-marketplace

877```

878 

879Deklarieren Sie den Marktplatz im Projektbereich, damit er mit Ihrem Team über `.claude/settings.json` geteilt wird:

880 

881```bash theme={null}

882claude plugin marketplace add acme-corp/claude-plugins --scope project

883```

884 

885Für ein Monorepo begrenzen Sie den Checkout auf die Verzeichnisse, die Plugin-Inhalte enthalten:

886 

887```bash theme={null}

888claude plugin marketplace add acme-corp/monorepo --sparse .claude-plugin plugins

889```

890 

891### Plugin marketplace list

892 

893Listet alle konfigurierten Marktplätze auf.

894 

895```bash theme={null}

896claude plugin marketplace list [options]

897```

898 

899**Optionen:**

900 

901| Option | Beschreibung |

902| :------- | :--------------- |

903| `--json` | Ausgabe als JSON |

904 

905### Plugin marketplace remove

906 

907Entfernen Sie einen konfigurierten Marktplatz. Der Alias `rm` wird auch akzeptiert.

908 

909```bash theme={null}

910claude plugin marketplace remove <name>

911```

912 

913**Argumente:**

914 

915* `<name>`: Marktplatz-Name zum Entfernen, wie von `claude plugin marketplace list` angezeigt. Dies ist der `name` aus `marketplace.json`, nicht die Quelle, die Sie an `add` übergeben haben

916 

917<Warning>

918 Das Entfernen eines Marktplatzes deinstalliert auch alle Plugins, die Sie von ihm installiert haben. Um einen Marktplatz zu aktualisieren, ohne installierte Plugins zu verlieren, verwenden Sie stattdessen `claude plugin marketplace update`.

919</Warning>

920 

921### Plugin marketplace update

922 

923Aktualisieren Sie Marktplätze von ihren Quellen, um neue Plugins und Versionsänderungen abzurufen.

924 

925```bash theme={null}

926claude plugin marketplace update [name]

927```

928 

929**Argumente:**

930 

931* `[name]`: Marktplatz-Name zum Aktualisieren, wie von `claude plugin marketplace list` angezeigt. Aktualisiert alle Marktplätze, wenn weggelassen

932 

933Sowohl `remove` als auch `update` schlagen fehl, wenn sie gegen einen Seed-verwalteten Marktplatz ausgeführt werden, der schreibgeschützt ist. Beim Aktualisieren aller Marktplätze werden Seed-verwaltete Einträge übersprungen und andere Marktplätze werden weiterhin aktualisiert. Um Seed-bereitgestellte Plugins zu ändern, bitten Sie Ihren Administrator, das Seed-Image zu aktualisieren. Siehe [Plugins für Container vorab ausfüllen](#pre-populate-plugins-for-containers).

934 

935## Fehlerbehebung

936 

937### Marktplatz wird nicht geladen

938 

939**Symptome**: Kann Marktplatz nicht hinzufügen oder Plugins von ihm nicht sehen

940 

941**Lösungen**:

942 

943* Überprüfen Sie, dass die Marktplatz-URL erreichbar ist

944* Überprüfen Sie, dass `.claude-plugin/marketplace.json` im angegebenen Pfad vorhanden ist

945* Stellen Sie sicher, dass die JSON-Syntax gültig ist und das Frontmatter wohlgeformt ist, indem Sie `claude plugin validate` oder `/plugin validate` verwenden

946* Bestätigen Sie für private Repositories, dass Sie Zugriffsberechtigung haben

947 

948### Marktplatz-Validierungsfehler

949 

950Führen Sie `claude plugin validate .` oder `/plugin validate .` aus Ihrem Marktplatz-Verzeichnis aus, um auf Probleme zu überprüfen. Der Validator überprüft `plugin.json`, Skill/Agent/Befehl-Frontmatter und `hooks/hooks.json` auf Syntax- und Schema-Fehler. Häufige Fehler:

951 

952| Fehler | Ursache | Lösung |

953| :------------------------------------------------ | :-------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------- |

954| `File not found: .claude-plugin/marketplace.json` | Fehlendes Manifest | Erstellen Sie `.claude-plugin/marketplace.json` mit erforderlichen Feldern |

955| `Invalid JSON syntax: Unexpected token...` | JSON-Syntaxfehler in marketplace.json | Überprüfen Sie auf fehlende Kommas, zusätzliche Kommas oder nicht zitierte Strings |

956| `Duplicate plugin name "x" found in marketplace` | Zwei Plugins teilen denselben Namen | Geben Sie jedem Plugin einen eindeutigen `name`-Wert |

957| `plugins[0].source: Path contains ".."` | Quellpfad enthält `..` | Verwenden Sie Pfade relativ zum Marktplatz-Root ohne `..`. Siehe [Relative Pfade](#relative-paths) |

958| `YAML frontmatter failed to parse: ...` | Ungültiges YAML in einer Skill-, Agent- oder Befehlsdatei | Beheben Sie die YAML-Syntax im Frontmatter-Block. Zur Laufzeit wird diese Datei ohne Metadaten geladen. |

959| `Invalid JSON syntax: ...` (hooks.json) | Malformed `hooks/hooks.json` | Beheben Sie die JSON-Syntax. Eine malformed `hooks/hooks.json` verhindert, dass das gesamte Plugin geladen wird. |

960 

961**Warnungen** (nicht blockierend):

962 

963* `Marketplace has no plugins defined`: Fügen Sie mindestens ein Plugin zum `plugins`-Array hinzu

964* `No marketplace description provided`: Fügen Sie eine Top-Level-`description` hinzu, um Benutzern zu helfen, Ihren Marktplatz zu verstehen

965* `Plugin name "x" is not kebab-case`: Der Plugin-Name enthält Großbuchstaben, Leerzeichen oder Sonderzeichen. Benennen Sie in Kleinbuchstaben, Ziffern und Bindestriche um (z. B. `my-plugin`). Claude Code akzeptiert andere Formen, aber die Claude.ai-Marktplatz-Synchronisierung lehnt sie ab.

966 

967### Plugin-Installationsfehler

968 

969**Symptome**: Marktplatz wird angezeigt, aber Plugin-Installation schlägt fehl

970 

971**Lösungen**:

972 

973* Überprüfen Sie, dass Plugin-Quell-URLs erreichbar sind

974* Überprüfen Sie, dass Plugin-Verzeichnisse erforderliche Dateien enthalten

975* Überprüfen Sie für GitHub-Quellen, dass Repositories öffentlich sind oder Sie Zugriff haben

976* Testen Sie Plugin-Quellen manuell durch Klonen/Herunterladen

977 

978### Authentifizierung für private Repositories schlägt fehl

979 

980**Symptome**: Authentifizierungsfehler beim Installieren von Plugins aus privaten Repositories

981 

982**Lösungen**:

983 

984Für manuelle Installation und Updates:

985 

986* Überprüfen Sie, dass Sie bei Ihrem Git-Anbieter authentifiziert sind (führen Sie z. B. `gh auth status` für GitHub aus)

987* Überprüfen Sie, dass Ihr Credential-Helper korrekt konfiguriert ist: `git config --global credential.helper`

988* Versuchen Sie, das Repository manuell zu klonen, um zu überprüfen, dass Ihre Anmeldedaten funktionieren

989 

990Für Hintergrund-Auto-Updates:

991 

992* Legen Sie das entsprechende Token in Ihrer Umgebung fest: `echo $GITHUB_TOKEN`

993* Überprüfen Sie, dass das Token die erforderlichen Berechtigungen hat (Lesezugriff auf das Repository)

994* Überprüfen Sie für GitHub, dass das Token den `repo`-Scope für private Repositories hat

995* Überprüfen Sie für GitLab, dass das Token mindestens den `read_repository`-Scope hat

996* Überprüfen Sie, dass das Token nicht abgelaufen ist

997 

998### Marktplatz-Updates schlagen in Offline-Umgebungen fehl

999 

1000**Symptome**: Marktplatz `git pull` schlägt fehl und Claude Code löscht den vorhandenen Cache, wodurch Plugins nicht mehr verfügbar werden.

1001 

1002**Ursache**: Standardmäßig entfernt Claude Code den veralteten Klon und versucht erneut zu klonen, wenn ein `git pull` fehlschlägt. In Offline- oder Airgapped-Umgebungen schlägt das erneute Klonen auf die gleiche Weise fehl, wodurch das Marktplatz-Verzeichnis leer bleibt.

1003 

1004**Lösung**: Legen Sie `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` fest, um den vorhandenen Cache beizubehalten, wenn der Pull fehlschlägt, anstatt ihn zu löschen:

1005 

1006```bash theme={null}

1007export CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1

1008```

1009 

1010Mit dieser Variable gesetzt behält Claude Code den veralteten Marktplatz-Klon bei `git pull`-Fehler bei und verwendet weiterhin den letzten bekannten guten Status. Verwenden Sie für vollständig Offline-Bereitstellungen, bei denen das Repository nie erreichbar sein wird, stattdessen [`CLAUDE_CODE_PLUGIN_SEED_DIR`](#pre-populate-plugins-for-containers), um das Plugins-Verzeichnis zur Build-Zeit vorab auszufüllen.

1011 

1012### Git-Operationen zeitüberschreitung

1013 

1014**Symptome**: Plugin-Installation oder Marktplatz-Updates schlagen mit einem Timeout-Fehler fehl, wie "Git clone timed out after 120s" oder "Git pull timed out after 120s".

1015 

1016**Ursache**: Claude Code verwendet ein 120-Sekunden-Timeout für alle Git-Operationen, einschließlich Klonen von Plugin-Repositories und Abrufen von Marktplatz-Updates. Große Repositories oder langsame Netzwerkverbindungen können dieses Limit überschreiten.

1017 

1018**Lösung**: Erhöhen Sie das Timeout mit der Umgebungsvariable `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`. Der Wert ist in Millisekunden:

1019 

1020```bash theme={null}

1021export CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS=300000 # 5 Minuten

1022```

1023 

1024### Plugins mit relativen Pfaden schlagen in URL-basierten Marktplätzen fehl

1025 

1026**Symptome**: Einen Marktplatz über URL hinzugefügt (z. B. `https://example.com/marketplace.json`), aber Plugins mit relativen Pfadquellen wie `"./plugins/my-plugin"` schlagen mit "path not found"-Fehlern fehl.

1027 

1028**Ursache**: URL-basierte Marktplätze laden nur die `marketplace.json`-Datei selbst herunter. Sie laden keine Plugin-Dateien vom Server herunter. Relative Pfade im Marktplatz-Eintrag verweisen auf Dateien auf dem Remote-Server, die nicht heruntergeladen wurden.

1029 

1030**Lösungen**:

1031 

1032* **Verwenden Sie externe Quellen**: Ändern Sie Plugin-Einträge, um stattdessen GitHub-, npm- oder Git-URL-Quellen zu verwenden:

1033 ```json theme={null}

1034 { "name": "my-plugin", "source": { "source": "github", "repo": "owner/repo" } }

1035 ```

1036* **Verwenden Sie einen Git-basierten Marktplatz**: Hosten Sie Ihren Marktplatz in einem Git-Repository und fügen Sie ihn mit der Git-URL hinzu. Git-basierte Marktplätze klonen das gesamte Repository, wodurch relative Pfade funktionieren.

1037 

1038### Dateien nicht gefunden nach Installation

1039 

1040**Symptome**: Plugin wird installiert, aber Verweise auf Dateien schlagen fehl, besonders Dateien außerhalb des Plugin-Verzeichnisses

1041 

1042**Ursache**: Plugins werden in ein Cache-Verzeichnis kopiert, anstatt an Ort und Stelle verwendet zu werden. Pfade, die auf Dateien außerhalb des Plugin-Verzeichnisses verweisen (wie `../shared-utils`), funktionieren nicht, da diese Dateien nicht kopiert werden.

1043 

1044**Lösungen**: Siehe [Plugin-Caching und Dateiauflösung](/de/plugins-reference#plugin-caching-and-file-resolution) für Workarounds, einschließlich Symlinks und Verzeichnisumstrukturierung.

1045 

1046Für zusätzliche Debugging-Tools und häufige Probleme siehe [Debugging- und Entwicklungstools](/de/plugins-reference#debugging-and-development-tools).

1047 

1048## Siehe auch

1049 

1050* [Entdecken und Installieren vorgefertigter Plugins](/de/discover-plugins) - Installieren von Plugins aus vorhandenen Marktplätzen

1051* [Plugins](/de/plugins) - Erstellen Ihrer eigenen Plugins

1052* [Plugins-Referenz](/de/plugins-reference) - Vollständige technische Spezifikationen und Schemas

1053* [Plugin-Einstellungen](/de/settings#plugin-settings) - Plugin-Konfigurationsoptionen

1054* [strictKnownMarketplaces-Referenz](/de/settings#strictknownmarketplaces) - Verwaltete Marktplatz-Einschränkungen

plugins.md +454 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Plugins erstellen

6 

7> Erstellen Sie benutzerdefinierte Plugins, um Claude Code mit Skills, Agents, Hooks und MCP-Servern zu erweitern.

8 

9Plugins ermöglichen es Ihnen, Claude Code mit benutzerdefinierten Funktionen zu erweitern, die projektübergreifend und teamübergreifend freigegeben werden können. Diese Anleitung behandelt die Erstellung eigener Plugins mit Skills, Agents, Hooks und MCP-Servern.

10 

11Möchten Sie vorhandene Plugins installieren? Siehe [Plugins entdecken und installieren](/de/discover-plugins). Für vollständige technische Spezifikationen siehe [Plugins-Referenz](/de/plugins-reference).

12 

13## Wann Plugins vs. eigenständige Konfiguration verwenden

14 

15Claude Code unterstützt zwei Möglichkeiten, um benutzerdefinierte Skills, Agents und Hooks hinzuzufügen:

16 

17| Ansatz | Skill-Namen | Am besten für |

18| :----------------------------------------------------------- | :------------------- | :------------------------------------------------------------------------------------------------------------------- |

19| **Eigenständig** (`.claude/`-Verzeichnis) | `/hello` | Persönliche Workflows, projektspezifische Anpassungen, schnelle Experimente |

20| **Plugins** (Verzeichnisse mit `.claude-plugin/plugin.json`) | `/plugin-name:hello` | Freigabe für Teamkollegen, Verteilung an die Community, versionierte Releases, wiederverwendbar über Projekte hinweg |

21 

22**Verwenden Sie eigenständige Konfiguration, wenn**:

23 

24* Sie Claude Code für ein einzelnes Projekt anpassen

25* Die Konfiguration persönlich ist und nicht freigegeben werden muss

26* Sie mit Skills oder Hooks experimentieren, bevor Sie diese verpacken

27* Sie kurze Skill-Namen wie `/hello` oder `/deploy` möchten

28 

29**Verwenden Sie Plugins, wenn**:

30 

31* Sie Funktionen mit Ihrem Team oder der Community teilen möchten

32* Sie die gleichen Skills/Agents über mehrere Projekte hinweg benötigen

33* Sie Versionskontrolle und einfache Updates für Ihre Erweiterungen möchten

34* Sie über einen Marketplace verteilen

35* Sie mit Namespace-Skills wie `/my-plugin:hello` einverstanden sind (Namespacing verhindert Konflikte zwischen Plugins)

36 

37<Tip>

38 Beginnen Sie mit eigenständiger Konfiguration in `.claude/` für schnelle Iteration, dann [konvertieren Sie zu einem Plugin](#convert-existing-configurations-to-plugins), wenn Sie bereit sind zu teilen.

39</Tip>

40 

41## Schnellstart

42 

43Dieser Schnellstart führt Sie durch die Erstellung eines Plugins mit einem benutzerdefinierten Skill. Sie erstellen ein Manifest (die Konfigurationsdatei, die Ihr Plugin definiert), fügen einen Skill hinzu und testen ihn lokal mit dem Flag `--plugin-dir`.

44 

45### Voraussetzungen

46 

47* Claude Code [installiert und authentifiziert](/de/quickstart#step-1-install-claude-code)

48 

49<Note>

50 Wenn Sie den Befehl `/plugin` nicht sehen, aktualisieren Sie Claude Code auf die neueste Version. Siehe [Troubleshooting](/de/troubleshooting) für Upgrade-Anweisungen.

51</Note>

52 

53### Erstellen Sie Ihr erstes Plugin

54 

55<Steps>

56 <Step title="Erstellen Sie das Plugin-Verzeichnis">

57 Jedes Plugin befindet sich in seinem eigenen Verzeichnis, das ein Manifest und Ihre Skills, Agents oder Hooks enthält. Erstellen Sie jetzt eines:

58 

59 ```bash theme={null}

60 mkdir my-first-plugin

61 ```

62 </Step>

63 

64 <Step title="Erstellen Sie das Plugin-Manifest">

65 Die Manifestdatei unter `.claude-plugin/plugin.json` definiert die Identität Ihres Plugins: seinen Namen, die Beschreibung und die Version. Claude Code verwendet diese Metadaten, um Ihr Plugin im Plugin-Manager anzuzeigen.

66 

67 Erstellen Sie das `.claude-plugin`-Verzeichnis in Ihrem Plugin-Ordner:

68 

69 ```bash theme={null}

70 mkdir my-first-plugin/.claude-plugin

71 ```

72 

73 Erstellen Sie dann `my-first-plugin/.claude-plugin/plugin.json` mit diesem Inhalt:

74 

75 ```json my-first-plugin/.claude-plugin/plugin.json theme={null}

76 {

77 "name": "my-first-plugin",

78 "description": "A greeting plugin to learn the basics",

79 "version": "1.0.0",

80 "author": {

81 "name": "Your Name"

82 }

83 }

84 ```

85 

86 | Feld | Zweck |

87 | :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

88 | `name` | Eindeutige Kennung und Skill-Namespace. Skills werden mit diesem Präfix versehen (z. B. `/my-first-plugin:hello`). |

89 | `description` | Wird im Plugin-Manager angezeigt, wenn Sie Plugins durchsuchen oder installieren. |

90 | `version` | Optional. Falls gesetzt, erhalten Benutzer nur Updates, wenn Sie dieses Feld erhöhen. Falls weggelassen und Ihr Plugin wird über Git verteilt, wird der Commit-SHA verwendet und jeder Commit zählt als neue Version. Siehe [Versionsverwaltung](/de/plugins-reference#version-management). |

91 | `author` | Optional. Hilfreich für die Zuordnung. |

92 

93 Für zusätzliche Felder wie `homepage`, `repository` und `license` siehe das [vollständige Manifest-Schema](/de/plugins-reference#plugin-manifest-schema).

94 </Step>

95 

96 <Step title="Fügen Sie einen Skill hinzu">

97 Skills befinden sich im Verzeichnis `skills/`. Jeder Skill ist ein Ordner, der eine Datei `SKILL.md` enthält. Der Ordnername wird zum Skill-Namen, mit dem Präfix des Plugin-Namespace (`hello/` in einem Plugin namens `my-first-plugin` erstellt `/my-first-plugin:hello`).

98 

99 Erstellen Sie ein Skill-Verzeichnis in Ihrem Plugin-Ordner:

100 

101 ```bash theme={null}

102 mkdir -p my-first-plugin/skills/hello

103 ```

104 

105 Erstellen Sie dann `my-first-plugin/skills/hello/SKILL.md` mit diesem Inhalt:

106 

107 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}

108 ---

109 description: Greet the user with a friendly message

110 disable-model-invocation: true

111 ---

112 

113 Greet the user warmly and ask how you can help them today.

114 ```

115 </Step>

116 

117 <Step title="Testen Sie Ihr Plugin">

118 Führen Sie Claude Code mit dem Flag `--plugin-dir` aus, um Ihr Plugin zu laden:

119 

120 ```bash theme={null}

121 claude --plugin-dir ./my-first-plugin

122 ```

123 

124 Sobald Claude Code startet, versuchen Sie Ihren neuen Skill:

125 

126 ```shell theme={null}

127 /my-first-plugin:hello

128 ```

129 

130 Sie sehen Claude mit einer Begrüßung antworten. Führen Sie `/help` aus, um Ihren Skill unter dem Plugin-Namespace aufgelistet zu sehen.

131 

132 <Note>

133 **Warum Namespacing?** Plugin-Skills sind immer mit Namespace versehen (wie `/my-first-plugin:hello`), um Konflikte zu vermeiden, wenn mehrere Plugins Skills mit demselben Namen haben.

134 

135 Um das Namespace-Präfix zu ändern, aktualisieren Sie das Feld `name` in `plugin.json`.

136 </Note>

137 </Step>

138 

139 <Step title="Fügen Sie Skill-Argumente hinzu">

140 Machen Sie Ihren Skill dynamisch, indem Sie Benutzereingaben akzeptieren. Der Platzhalter `$ARGUMENTS` erfasst jeden Text, den der Benutzer nach dem Skill-Namen bereitstellt.

141 

142 Aktualisieren Sie Ihre Datei `SKILL.md`:

143 

144 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}

145 ---

146 description: Greet the user with a personalized message

147 ---

148 

149 # Hello Skill

150 

151 Greet the user named "$ARGUMENTS" warmly and ask how you can help them today. Make the greeting personal and encouraging.

152 ```

153 

154 Führen Sie `/reload-plugins` aus, um die Änderungen zu übernehmen, und versuchen Sie dann den Skill mit Ihrem Namen:

155 

156 ```shell theme={null}

157 /my-first-plugin:hello Alex

158 ```

159 

160 Claude wird Sie beim Namen begrüßen. Weitere Informationen zum Übergeben von Argumenten an Skills finden Sie unter [Skills](/de/skills#pass-arguments-to-skills).

161 </Step>

162</Steps>

163 

164Sie haben erfolgreich ein Plugin mit diesen Schlüsselkomponenten erstellt und getestet:

165 

166* **Plugin-Manifest** (`.claude-plugin/plugin.json`): beschreibt die Metadaten Ihres Plugins

167* **Skills-Verzeichnis** (`skills/`): enthält Ihre benutzerdefinierten Skills

168* **Skill-Argumente** (`$ARGUMENTS`): erfasst Benutzereingaben für dynamisches Verhalten

169 

170<Tip>

171 Das Flag `--plugin-dir` ist nützlich für Entwicklung und Tests. Wenn Sie bereit sind, Ihr Plugin mit anderen zu teilen, siehe [Erstellen und verteilen Sie einen Plugin-Marketplace](/de/plugin-marketplaces).

172</Tip>

173 

174## Übersicht über die Plugin-Struktur

175 

176Sie haben ein Plugin mit einem Skill erstellt, aber Plugins können viel mehr enthalten: benutzerdefinierte Agents, Hooks, MCP-Server und LSP-Server.

177 

178<Warning>

179 **Häufiger Fehler**: Platzieren Sie `commands/`, `agents/`, `skills/` oder `hooks/` nicht im Verzeichnis `.claude-plugin/`. Nur `plugin.json` gehört in `.claude-plugin/`. Alle anderen Verzeichnisse müssen auf der Plugin-Root-Ebene sein.

180</Warning>

181 

182| Verzeichnis | Speicherort | Zweck |

183| :---------------- | :---------- | :------------------------------------------------------------------------------------------------------ |

184| `.claude-plugin/` | Plugin-Root | Enthält `plugin.json`-Manifest (optional, wenn Komponenten Standardspeicherorte verwenden) |

185| `skills/` | Plugin-Root | Skills als `<name>/SKILL.md`-Verzeichnisse |

186| `commands/` | Plugin-Root | Skills als flache Markdown-Dateien. Verwenden Sie `skills/` für neue Plugins |

187| `agents/` | Plugin-Root | Benutzerdefinierte Agent-Definitionen |

188| `hooks/` | Plugin-Root | Event-Handler in `hooks.json` |

189| `.mcp.json` | Plugin-Root | MCP-Server-Konfigurationen |

190| `.lsp.json` | Plugin-Root | LSP-Server-Konfigurationen für Code-Intelligenz |

191| `monitors/` | Plugin-Root | Hintergrund-Monitor-Konfigurationen in `monitors.json` |

192| `bin/` | Plugin-Root | Ausführbare Dateien, die zum `PATH` des Bash-Tools hinzugefügt werden, während das Plugin aktiviert ist |

193| `settings.json` | Plugin-Root | Standard-[Einstellungen](/de/settings), die angewendet werden, wenn das Plugin aktiviert ist |

194 

195<Note>

196 **Nächste Schritte**: Bereit, weitere Funktionen hinzuzufügen? Springen Sie zu [Entwickeln Sie komplexere Plugins](#develop-more-complex-plugins), um Agents, Hooks, MCP-Server und LSP-Server hinzuzufügen. Für vollständige technische Spezifikationen aller Plugin-Komponenten siehe [Plugins-Referenz](/de/plugins-reference).

197</Note>

198 

199## Entwickeln Sie komplexere Plugins

200 

201Sobald Sie sich mit grundlegenden Plugins vertraut gemacht haben, können Sie anspruchsvollere Erweiterungen erstellen.

202 

203### Fügen Sie Skills zu Ihrem Plugin hinzu

204 

205Plugins können [Agent-Skills](/de/skills) enthalten, um die Fähigkeiten von Claude zu erweitern. Skills werden vom Modell aufgerufen: Claude verwendet sie automatisch basierend auf dem Task-Kontext.

206 

207Fügen Sie ein Verzeichnis `skills/` auf Ihrer Plugin-Root mit Skill-Ordnern hinzu, die `SKILL.md`-Dateien enthalten:

208 

209```text theme={null}

210my-plugin/

211├── .claude-plugin/

212│ └── plugin.json

213└── skills/

214 └── code-review/

215 └── SKILL.md

216```

217 

218Jede `SKILL.md` enthält YAML-Frontmatter und Anweisungen. Fügen Sie eine `description` ein, damit Claude weiß, wann der Skill verwendet werden soll:

219 

220```yaml theme={null}

221---

222description: Reviews code for best practices and potential issues. Use when reviewing code, checking PRs, or analyzing code quality.

223---

224 

225When reviewing code, check for:

2261. Code organization and structure

2272. Error handling

2283. Security concerns

2294. Test coverage

230```

231 

232Nach der Installation des Plugins führen Sie `/reload-plugins` aus, um die Skills zu laden. Für vollständige Anleitung zur Skill-Erstellung, einschließlich progressiver Offenlegung und Tool-Einschränkungen, siehe [Agent-Skills](/de/skills).

233 

234### Fügen Sie LSP-Server zu Ihrem Plugin hinzu

235 

236<Tip>

237 Für gängige Sprachen wie TypeScript, Python und Rust installieren Sie die vorgefertigten LSP-Plugins aus dem offiziellen Marketplace. Erstellen Sie benutzerdefinierte LSP-Plugins nur, wenn Sie Unterstützung für Sprachen benötigen, die noch nicht abgedeckt sind.

238</Tip>

239 

240LSP-Plugins (Language Server Protocol) geben Claude Echtzeit-Code-Intelligenz. Wenn Sie eine Sprache unterstützen müssen, die kein offizielles LSP-Plugin hat, können Sie ein eigenes erstellen, indem Sie eine `.lsp.json`-Datei zu Ihrem Plugin hinzufügen:

241 

242```json .lsp.json theme={null}

243{

244 "go": {

245 "command": "gopls",

246 "args": ["serve"],

247 "extensionToLanguage": {

248 ".go": "go"

249 }

250 }

251}

252```

253 

254Benutzer, die Ihr Plugin installieren, müssen die Language-Server-Binärdatei auf ihrem Computer installiert haben.

255 

256Für vollständige LSP-Konfigurationsoptionen siehe [LSP-Server](/de/plugins-reference#lsp-servers).

257 

258### Fügen Sie Hintergrund-Monitore zu Ihrem Plugin hinzu

259 

260Hintergrund-Monitore ermöglichen es Ihrem Plugin, Protokolle, Dateien oder externen Status im Hintergrund zu überwachen und Claude zu benachrichtigen, wenn Ereignisse eintreffen. Claude Code startet jeden Monitor automatisch, wenn das Plugin aktiv ist, sodass Sie Claude nicht anweisen müssen, die Überwachung zu starten.

261 

262Fügen Sie eine Datei `monitors/monitors.json` auf der Plugin-Root mit einem Array von Monitor-Einträgen hinzu:

263 

264```json monitors/monitors.json theme={null}

265[

266 {

267 "name": "error-log",

268 "command": "tail -F ./logs/error.log",

269 "description": "Application error log"

270 }

271]

272```

273 

274Jede stdout-Zeile aus `command` wird Claude während der Sitzung als Benachrichtigung zugestellt. Für das vollständige Schema, einschließlich des `when`-Triggers und der Variablenersetzung, siehe [Monitore](/de/plugins-reference#monitors).

275 

276### Versenden Sie Standard-Einstellungen mit Ihrem Plugin

277 

278Plugins können eine Datei `settings.json` auf der Plugin-Root enthalten, um Standard-Konfiguration anzuwenden, wenn das Plugin aktiviert ist. Derzeit werden nur die Schlüssel `agent` und `subagentStatusLine` unterstützt.

279 

280Das Setzen von `agent` aktiviert einen der [benutzerdefinierten Agents](/de/sub-agents) des Plugins als Haupt-Thread und wendet seinen System-Prompt, Tool-Einschränkungen und Modell an. Dies ermöglicht es einem Plugin, das Standardverhalten von Claude Code zu ändern, wenn es aktiviert ist.

281 

282```json settings.json theme={null}

283{

284 "agent": "security-reviewer"

285}

286```

287 

288Dieses Beispiel aktiviert den Agent `security-reviewer`, der im Verzeichnis `agents/` des Plugins definiert ist. Einstellungen aus `settings.json` haben Vorrang vor `settings`, die in `plugin.json` deklariert sind. Unbekannte Schlüssel werden stillschweigend ignoriert.

289 

290### Organisieren Sie komplexe Plugins

291 

292Für Plugins mit vielen Komponenten organisieren Sie Ihre Verzeichnisstruktur nach Funktionalität. Für vollständige Verzeichnislayouts und Organisationsmuster siehe [Plugin-Verzeichnisstruktur](/de/plugins-reference#plugin-directory-structure).

293 

294### Testen Sie Ihre Plugins lokal

295 

296Verwenden Sie das Flag `--plugin-dir`, um Plugins während der Entwicklung zu testen. Dies lädt Ihr Plugin direkt, ohne dass eine Installation erforderlich ist.

297 

298```bash theme={null}

299claude --plugin-dir ./my-plugin

300```

301 

302Wenn ein `--plugin-dir`-Plugin denselben Namen wie ein installiertes Marketplace-Plugin hat, hat die lokale Kopie in dieser Sitzung Vorrang. Dies ermöglicht es Ihnen, Änderungen an einem Plugin zu testen, das Sie bereits installiert haben, ohne es zuerst zu deinstallieren. Marketplace-Plugins, die durch verwaltete Einstellungen erzwungen aktiviert sind, sind die einzige Ausnahme und können nicht überschrieben werden.

303 

304Wenn Sie Änderungen an Ihrem Plugin vornehmen, führen Sie `/reload-plugins` aus, um die Updates zu übernehmen, ohne neu zu starten. Dies lädt Plugins, Skills, Agents, Hooks, Plugin-MCP-Server und Plugin-LSP-Server neu. Testen Sie Ihre Plugin-Komponenten:

305 

306* Versuchen Sie Ihre Skills mit `/plugin-name:skill-name`

307* Überprüfen Sie, dass Agents in `/agents` angezeigt werden

308* Überprüfen Sie, dass Hooks wie erwartet funktionieren

309 

310<Tip>

311 Sie können mehrere Plugins gleichzeitig laden, indem Sie das Flag mehrmals angeben:

312 

313 ```bash theme={null}

314 claude --plugin-dir ./plugin-one --plugin-dir ./plugin-two

315 ```

316</Tip>

317 

318### Debuggen Sie Plugin-Probleme

319 

320Wenn Ihr Plugin nicht wie erwartet funktioniert:

321 

3221. **Überprüfen Sie die Struktur**: Stellen Sie sicher, dass Ihre Verzeichnisse auf der Plugin-Root sind, nicht in `.claude-plugin/`

3232. **Testen Sie Komponenten einzeln**: Überprüfen Sie jeden Skill, Agent und Hook separat

3243. **Verwenden Sie Validierungs- und Debugging-Tools**: Siehe [Debugging- und Entwicklungstools](/de/plugins-reference#debugging-and-development-tools) für CLI-Befehle und Troubleshooting-Techniken

325 

326### Teilen Sie Ihre Plugins

327 

328Wenn Ihr Plugin bereit zum Teilen ist:

329 

3301. **Fügen Sie Dokumentation hinzu**: Fügen Sie eine `README.md` mit Installations- und Verwendungsanweisungen ein

3312. **Wählen Sie eine Versionierungsstrategie**: Entscheiden Sie, ob Sie eine explizite `version` setzen oder sich auf den Git-Commit-SHA verlassen. Siehe [Versionsverwaltung](/de/plugins-reference#version-management)

3323. **Erstellen oder verwenden Sie einen Marketplace**: Verteilen Sie über [Plugin-Marketplaces](/de/plugin-marketplaces) zur Installation

3334. **Testen Sie mit anderen**: Lassen Sie Teamkollegen das Plugin vor einer breiteren Verteilung testen

334 

335Sobald Ihr Plugin in einem Marketplace ist, können andere es mit den Anweisungen in [Plugins entdecken und installieren](/de/discover-plugins) installieren. Um ein Plugin intern für Ihr Team zu halten, hosten Sie den Marketplace in einem [privaten Repository](/de/plugin-marketplaces#private-repositories).

336 

337### Reichen Sie Ihr Plugin beim offiziellen Marketplace ein

338 

339Um ein Plugin beim offiziellen Anthropic-Marketplace einzureichen, verwenden Sie eines der In-App-Einreichungsformulare:

340 

341* **Claude.ai**: [claude.ai/settings/plugins/submit](https://claude.ai/settings/plugins/submit)

342* **Console**: [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)

343 

344Sobald Ihr Plugin aufgelistet ist, können Sie Ihre eigene CLI haben, die Claude Code-Benutzer auffordert, es zu installieren. Siehe [Empfehlen Sie Ihr Plugin von Ihrer CLI](/de/plugin-hints).

345 

346<Note>

347 Für vollständige technische Spezifikationen, Debugging-Techniken und Verteilungsstrategien siehe [Plugins-Referenz](/de/plugins-reference).

348</Note>

349 

350## Konvertieren Sie vorhandene Konfigurationen in Plugins

351 

352Wenn Sie bereits Skills oder Hooks in Ihrem Verzeichnis `.claude/` haben, können Sie diese in ein Plugin konvertieren, um die Freigabe und Verteilung zu vereinfachen.

353 

354### Migrationschritte

355 

356<Steps>

357 <Step title="Erstellen Sie die Plugin-Struktur">

358 Erstellen Sie ein neues Plugin-Verzeichnis:

359 

360 ```bash theme={null}

361 mkdir -p my-plugin/.claude-plugin

362 ```

363 

364 Erstellen Sie die Manifestdatei unter `my-plugin/.claude-plugin/plugin.json`:

365 

366 ```json my-plugin/.claude-plugin/plugin.json theme={null}

367 {

368 "name": "my-plugin",

369 "description": "Migrated from standalone configuration",

370 "version": "1.0.0"

371 }

372 ```

373 </Step>

374 

375 <Step title="Kopieren Sie Ihre vorhandenen Dateien">

376 Kopieren Sie Ihre vorhandenen Konfigurationen in das Plugin-Verzeichnis:

377 

378 ```bash theme={null}

379 # Copy commands

380 cp -r .claude/commands my-plugin/

381 

382 # Copy agents (if any)

383 cp -r .claude/agents my-plugin/

384 

385 # Copy skills (if any)

386 cp -r .claude/skills my-plugin/

387 ```

388 </Step>

389 

390 <Step title="Migrieren Sie Hooks">

391 Wenn Sie Hooks in Ihren Einstellungen haben, erstellen Sie ein Hooks-Verzeichnis:

392 

393 ```bash theme={null}

394 mkdir my-plugin/hooks

395 ```

396 

397 Erstellen Sie `my-plugin/hooks/hooks.json` mit Ihrer Hooks-Konfiguration. Kopieren Sie das Objekt `hooks` aus Ihrer `.claude/settings.json` oder `settings.local.json`, da das Format gleich ist. Der Befehl empfängt Hook-Eingaben als JSON auf stdin, verwenden Sie also `jq`, um den Dateipfad zu extrahieren:

398 

399 ```json my-plugin/hooks/hooks.json theme={null}

400 {

401 "hooks": {

402 "PostToolUse": [

403 {

404 "matcher": "Write|Edit",

405 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix" }]

406 }

407 ]

408 }

409 }

410 ```

411 </Step>

412 

413 <Step title="Testen Sie Ihr migriertes Plugin">

414 Laden Sie Ihr Plugin, um zu überprüfen, ob alles funktioniert:

415 

416 ```bash theme={null}

417 claude --plugin-dir ./my-plugin

418 ```

419 

420 Testen Sie jede Komponente: Führen Sie Ihre Befehle aus, überprüfen Sie, dass Agents in `/agents` angezeigt werden, und überprüfen Sie, dass Hooks korrekt ausgelöst werden.

421 </Step>

422</Steps>

423 

424### Was sich bei der Migration ändert

425 

426| Eigenständig (`.claude/`) | Plugin |

427| :---------------------------------------- | :---------------------------------------- |

428| Nur in einem Projekt verfügbar | Kann über Marketplaces freigegeben werden |

429| Dateien in `.claude/commands/` | Dateien in `plugin-name/commands/` |

430| Hooks in `settings.json` | Hooks in `hooks/hooks.json` |

431| Muss manuell kopiert werden, um zu teilen | Mit `/plugin install` installieren |

432 

433<Note>

434 Nach der Migration können Sie die ursprünglichen Dateien aus `.claude/` entfernen, um Duplikate zu vermeiden. Die Plugin-Version hat Vorrang, wenn sie geladen wird.

435</Note>

436 

437## Nächste Schritte

438 

439Jetzt, da Sie das Plugin-System von Claude Code verstehen, finden Sie hier vorgeschlagene Pfade für verschiedene Ziele:

440 

441### Für Plugin-Benutzer

442 

443* [Plugins entdecken und installieren](/de/discover-plugins): Durchsuchen Sie Marketplaces und installieren Sie Plugins

444* [Konfigurieren Sie Team-Marketplaces](/de/discover-plugins#configure-team-marketplaces): Richten Sie Repository-Level-Plugins für Ihr Team ein

445 

446### Für Plugin-Entwickler

447 

448* [Erstellen und verteilen Sie einen Marketplace](/de/plugin-marketplaces): Verpacken und teilen Sie Ihre Plugins

449* [Plugins-Referenz](/de/plugins-reference): Vollständige technische Spezifikationen

450* Tauchen Sie tiefer in spezifische Plugin-Komponenten ein:

451 * [Skills](/de/skills): Details zur Skill-Entwicklung

452 * [Subagents](/de/sub-agents): Agent-Konfiguration und Fähigkeiten

453 * [Hooks](/de/hooks): Event-Handling und Automatisierung

454 * [MCP](/de/mcp): Integration externer Tools

plugins-reference.md +1011 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Plugins-Referenz

6 

7> Vollständige technische Referenz für das Claude Code Plugin-System, einschließlich Schemas, CLI-Befehle und Komponentenspezifikationen.

8 

9<Tip>

10 Möchten Sie Plugins installieren? Siehe [Plugins entdecken und installieren](/de/discover-plugins). Zum Erstellen von Plugins siehe [Plugins](/de/plugins). Zum Verteilen von Plugins siehe [Plugin-Marktplätze](/de/plugin-marketplaces).

11</Tip>

12 

13Diese Referenz bietet vollständige technische Spezifikationen für das Claude Code Plugin-System, einschließlich Komponentenschemas, CLI-Befehle und Entwicklungstools.

14 

15Ein **Plugin** ist ein eigenständiges Verzeichnis von Komponenten, das Claude Code mit benutzerdefinierten Funktionen erweitert. Plugin-Komponenten umfassen Skills, Agents, Hooks, MCP-Server, LSP-Server und Monitore.

16 

17## Plugin-Komponenten-Referenz

18 

19### Skills

20 

21Plugins fügen Skills zu Claude Code hinzu und erstellen `/name` Verknüpfungen, die Sie oder Claude aufrufen können.

22 

23**Speicherort**: `skills/` oder `commands/` Verzeichnis im Plugin-Root

24 

25**Dateiformat**: Skills sind Verzeichnisse mit `SKILL.md`; Befehle sind einfache Markdown-Dateien

26 

27**Skill-Struktur**:

28 

29```text theme={null}

30skills/

31├── pdf-processor/

32│ ├── SKILL.md

33│ ├── reference.md (optional)

34│ └── scripts/ (optional)

35└── code-reviewer/

36 └── SKILL.md

37```

38 

39**Integrationverhalten**:

40 

41* Skills und Befehle werden automatisch erkannt, wenn das Plugin installiert wird

42* Claude kann sie automatisch basierend auf dem Task-Kontext aufrufen

43* Skills können unterstützende Dateien neben SKILL.md enthalten

44 

45Vollständige Details finden Sie unter [Skills](/de/skills).

46 

47### Agents

48 

49Plugins können spezialisierte Subagents für spezifische Aufgaben bereitstellen, die Claude automatisch aufrufen kann, wenn dies angemessen ist.

50 

51**Speicherort**: `agents/` Verzeichnis im Plugin-Root

52 

53**Dateiformat**: Markdown-Dateien, die Agent-Fähigkeiten beschreiben

54 

55**Agent-Struktur**:

56 

57```markdown theme={null}

58---

59name: agent-name

60description: Worauf sich dieser Agent spezialisiert und wann Claude ihn aufrufen sollte

61model: sonnet

62effort: medium

63maxTurns: 20

64disallowedTools: Write, Edit

65---

66 

67Detailliertes System-Prompt für den Agent, das seine Rolle, Expertise und sein Verhalten beschreibt.

68```

69 

70Plugin-Agents unterstützen `name`, `description`, `model`, `effort`, `maxTurns`, `tools`, `disallowedTools`, `skills`, `memory`, `background` und `isolation` Frontmatter-Felder. Der einzige gültige `isolation` Wert ist `"worktree"`. Aus Sicherheitsgründen werden `hooks`, `mcpServers` und `permissionMode` für von Plugins bereitgestellte Agents nicht unterstützt.

71 

72**Integrationspunkte**:

73 

74* Agents erscheinen in der `/agents` Schnittstelle

75* Claude kann Agents automatisch basierend auf dem Task-Kontext aufrufen

76* Agents können manuell von Benutzern aufgerufen werden

77* Plugin-Agents funktionieren neben integrierten Claude-Agents

78 

79Vollständige Details finden Sie unter [Subagents](/de/sub-agents).

80 

81### Hooks

82 

83Plugins können Event-Handler bereitstellen, die automatisch auf Claude Code Events reagieren.

84 

85**Speicherort**: `hooks/hooks.json` im Plugin-Root oder inline in plugin.json

86 

87**Format**: JSON-Konfiguration mit Event-Matchern und Aktionen

88 

89**Hook-Konfiguration**:

90 

91```json theme={null}

92{

93 "hooks": {

94 "PostToolUse": [

95 {

96 "matcher": "Write|Edit",

97 "hooks": [

98 {

99 "type": "command",

100 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/format-code.sh"

101 }

102 ]

103 }

104 ]

105 }

106}

107```

108 

109Plugin-Hooks reagieren auf die gleichen Lifecycle-Events wie [benutzerdefinierte Hooks](/de/hooks):

110 

111| Event | When it fires |

112| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |

113| `SessionStart` | When a session begins or resumes |

114| `Setup` | When you start Claude Code with `--init-only`, or with `--init` or `--maintenance` in `-p` mode. For one-time preparation in CI or scripts |

115| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |

116| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |

117| `PreToolUse` | Before a tool call executes. Can block it |

118| `PermissionRequest` | When a permission dialog appears |

119| `PermissionDenied` | When a tool call is denied by the auto mode classifier. Return `{retry: true}` to tell the model it may retry the denied tool call |

120| `PostToolUse` | After a tool call succeeds |

121| `PostToolUseFailure` | After a tool call fails |

122| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |

123| `Notification` | When Claude Code sends a notification |

124| `SubagentStart` | When a subagent is spawned |

125| `SubagentStop` | When a subagent finishes |

126| `TaskCreated` | When a task is being created via `TaskCreate` |

127| `TaskCompleted` | When a task is being marked as completed |

128| `Stop` | When Claude finishes responding |

129| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |

130| `TeammateIdle` | When an [agent team](/en/agent-teams) teammate is about to go idle |

131| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |

132| `ConfigChange` | When a configuration file changes during a session |

133| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |

134| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |

135| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |

136| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |

137| `PreCompact` | Before context compaction |

138| `PostCompact` | After context compaction completes |

139| `Elicitation` | When an MCP server requests user input during a tool call |

140| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |

141| `SessionEnd` | When a session terminates |

142 

143**Hook-Typen**:

144 

145* `command`: Shell-Befehle oder Skripte ausführen

146* `http`: Das Event JSON als POST-Anfrage an eine URL senden

147* `mcp_tool`: Ein Tool auf einem konfigurierten [MCP-Server](/de/mcp) aufrufen

148* `prompt`: Ein Prompt mit einem LLM evaluieren (verwendet `$ARGUMENTS` Platzhalter für Kontext)

149* `agent`: Einen agentic Verifier mit Tools für komplexe Verifikationsaufgaben ausführen

150 

151### MCP-Server

152 

153Plugins können Model Context Protocol (MCP) Server bündeln, um Claude Code mit externen Tools und Services zu verbinden.

154 

155**Speicherort**: `.mcp.json` im Plugin-Root oder inline in plugin.json

156 

157**Format**: Standard MCP-Server-Konfiguration

158 

159**MCP-Server-Konfiguration**:

160 

161```json theme={null}

162{

163 "mcpServers": {

164 "plugin-database": {

165 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

166 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],

167 "env": {

168 "DB_PATH": "${CLAUDE_PLUGIN_ROOT}/data"

169 }

170 },

171 "plugin-api-client": {

172 "command": "npx",

173 "args": ["@company/mcp-server", "--plugin-mode"],

174 "cwd": "${CLAUDE_PLUGIN_ROOT}"

175 }

176 }

177}

178```

179 

180**Integrationverhalten**:

181 

182* Plugin MCP-Server starten automatisch, wenn das Plugin aktiviert wird

183* Server erscheinen als Standard MCP-Tools in Claudes Toolkit

184* Server-Fähigkeiten integrieren sich nahtlos mit Claudes vorhandenen Tools

185* Plugin-Server können unabhängig von Benutzer MCP-Servern konfiguriert werden

186 

187### LSP-Server

188 

189<Tip>

190 Möchten Sie LSP-Plugins verwenden? Installieren Sie sie vom offiziellen Marktplatz: Suchen Sie nach „lsp" im `/plugin` Discover-Tab. Dieser Abschnitt dokumentiert, wie Sie LSP-Plugins für Sprachen erstellen, die nicht vom offiziellen Marktplatz abgedeckt werden.

191</Tip>

192 

193Plugins können [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) (LSP) Server bereitstellen, um Claude Echtzeit-Code-Intelligenz beim Arbeiten an Ihrer Codebasis zu geben.

194 

195LSP-Integration bietet:

196 

197* **Sofortige Diagnose**: Claude sieht Fehler und Warnungen sofort nach jeder Bearbeitung

198* **Code-Navigation**: Gehe zu Definition, finde Referenzen und Hover-Informationen

199* **Sprachbewusstsein**: Typinformationen und Dokumentation für Code-Symbole

200 

201**Speicherort**: `.lsp.json` im Plugin-Root oder inline in `plugin.json`

202 

203**Format**: JSON-Konfiguration, die Language Server Namen ihren Konfigurationen zuordnet

204 

205**`.lsp.json` Dateiformat**:

206 

207```json theme={null}

208{

209 "go": {

210 "command": "gopls",

211 "args": ["serve"],

212 "extensionToLanguage": {

213 ".go": "go"

214 }

215 }

216}

217```

218 

219**Inline in `plugin.json`**:

220 

221```json theme={null}

222{

223 "name": "my-plugin",

224 "lspServers": {

225 "go": {

226 "command": "gopls",

227 "args": ["serve"],

228 "extensionToLanguage": {

229 ".go": "go"

230 }

231 }

232 }

233}

234```

235 

236**Erforderliche Felder:**

237 

238| Feld | Beschreibung |

239| :-------------------- | :--------------------------------------------------- |

240| `command` | Die auszuführende LSP-Binärdatei (muss in PATH sein) |

241| `extensionToLanguage` | Ordnet Dateierweiterungen Sprachbezeichnern zu |

242 

243**Optionale Felder:**

244 

245| Feld | Beschreibung |

246| :---------------------- | :-------------------------------------------------------------------------- |

247| `args` | Befehlszeilenargumente für den LSP-Server |

248| `transport` | Kommunikationstransport: `stdio` (Standard) oder `socket` |

249| `env` | Umgebungsvariablen, die beim Starten des Servers gesetzt werden |

250| `initializationOptions` | Optionen, die während der Initialisierung an den Server übergeben werden |

251| `settings` | Einstellungen, die über `workspace/didChangeConfiguration` übergeben werden |

252| `workspaceFolder` | Workspace-Ordnerpfad für den Server |

253| `startupTimeout` | Maximale Zeit zum Warten auf Server-Startup (Millisekunden) |

254| `shutdownTimeout` | Maximale Zeit zum Warten auf ordnungsgemäßes Herunterfahren (Millisekunden) |

255| `restartOnCrash` | Ob der Server automatisch neu gestartet werden soll, wenn er abstürzt |

256| `maxRestarts` | Maximale Anzahl von Neustartversuchen, bevor aufgegeben wird |

257 

258<Warning>

259 **Sie müssen die Language Server Binärdatei separat installieren.** LSP-Plugins konfigurieren, wie Claude Code sich mit einem Language Server verbindet, aber sie enthalten den Server selbst nicht. Wenn Sie `Executable not found in $PATH` im `/plugin` Errors-Tab sehen, installieren Sie die erforderliche Binärdatei für Ihre Sprache.

260</Warning>

261 

262**Verfügbare LSP-Plugins:**

263 

264| Plugin | Language Server | Installationsbefehl |

265| :--------------- | :------------------------- | :------------------------------------------------------------------------------------------- |

266| `pyright-lsp` | Pyright (Python) | `pip install pyright` oder `npm install -g pyright` |

267| `typescript-lsp` | TypeScript Language Server | `npm install -g typescript-language-server typescript` |

268| `rust-lsp` | rust-analyzer | [Siehe rust-analyzer Installation](https://rust-analyzer.github.io/manual.html#installation) |

269 

270Installieren Sie zuerst den Language Server, dann installieren Sie das Plugin vom Marktplatz.

271 

272### Monitore

273 

274Plugins können Hintergrund-Monitore deklarieren, die Claude Code automatisch startet, wenn das Plugin aktiv ist. Jeder Monitor führt einen Shell-Befehl für die Lebensdauer der Session aus und liefert jede stdout-Zeile an Claude als Benachrichtigung, damit Claude auf Log-Einträge, Statusänderungen oder abgerufene Events reagieren kann, ohne aufgefordert zu werden, die Überwachung selbst zu starten.

275 

276Plugin-Monitore verwenden den gleichen Mechanismus wie das [Monitor-Tool](/de/tools-reference#monitor-tool) und teilen seine Verfügbarkeitsbeschränkungen. Sie laufen nur in interaktiven CLI-Sessions, laufen unsandboxed auf der gleichen Vertrauensebene wie [Hooks](#hooks) und werden auf Hosts übersprungen, wo das Monitor-Tool nicht verfügbar ist.

277 

278<Note>

279 Plugin-Monitore erfordern Claude Code v2.1.105 oder später.

280</Note>

281 

282**Speicherort**: `monitors/monitors.json` im Plugin-Root oder inline in `plugin.json`

283 

284**Format**: JSON-Array von Monitor-Einträgen

285 

286Die folgende `monitors/monitors.json` überwacht einen Deployment-Status-Endpunkt und ein lokales Error-Log:

287 

288```json theme={null}

289[

290 {

291 "name": "deploy-status",

292 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/poll-deploy.sh ${user_config.api_endpoint}",

293 "description": "Deployment status changes"

294 },

295 {

296 "name": "error-log",

297 "command": "tail -F ./logs/error.log",

298 "description": "Application error log",

299 "when": "on-skill-invoke:debug"

300 }

301]

302```

303 

304Um Monitore inline zu deklarieren, setzen Sie den `monitors` Schlüssel in `plugin.json` auf das gleiche Array. Um von einem nicht-Standard-Pfad zu laden, setzen Sie `monitors` auf einen relativen Pfad-String wie `"./config/monitors.json"`.

305 

306**Erforderliche Felder:**

307 

308| Feld | Beschreibung |

309| :------------ | :----------------------------------------------------------------------------------------------------------------------------------------------- |

310| `name` | Bezeichner eindeutig innerhalb des Plugins. Verhindert doppelte Prozesse, wenn das Plugin neu geladen wird oder ein Skill erneut aufgerufen wird |

311| `command` | Shell-Befehl, der als persistenter Hintergrund-Prozess im Session-Arbeitsverzeichnis ausgeführt wird |

312| `description` | Kurze Zusammenfassung dessen, was überwacht wird. Wird im Task-Panel und in Benachrichtigungszusammenfassungen angezeigt |

313 

314**Optionale Felder:**

315 

316| Feld | Beschreibung |

317| :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

318| `when` | Steuert, wann der Monitor startet. `"always"` startet ihn beim Session-Start und beim Plugin-Reload und ist der Standard. `"on-skill-invoke:<skill-name>"` startet ihn beim ersten Mal, wenn der benannte Skill in diesem Plugin versendet wird |

319 

320Der `command` Wert unterstützt die gleichen [Variablenersetzungen](#environment-variables) wie MCP- und LSP-Server-Konfigurationen: `${CLAUDE_PLUGIN_ROOT}`, `${CLAUDE_PLUGIN_DATA}`, `${user_config.*}` und alle `${ENV_VAR}` aus der Umgebung. Stellen Sie dem Befehl `cd "${CLAUDE_PLUGIN_ROOT}" && ` voran, wenn das Skript aus dem Plugin-eigenen Verzeichnis ausgeführt werden muss.

321 

322Das Deaktivieren eines Plugins während einer Session stoppt nicht die Monitore, die bereits laufen. Sie stoppen, wenn die Session endet.

323 

324### Themes

325 

326Plugins können Farbthemes versenden, die in `/theme` neben den integrierten Voreinstellungen und den lokalen Themes des Benutzers angezeigt werden. Ein Theme ist eine JSON-Datei in `themes/` mit einer `base` Voreinstellung und einer sparsamen `overrides` Map von Farb-Tokens.

327 

328```json theme={null}

329{

330 "name": "Dracula",

331 "base": "dark",

332 "overrides": {

333 "claude": "#bd93f9",

334 "error": "#ff5555",

335 "success": "#50fa7b"

336 }

337}

338```

339 

340Das Auswählen eines Plugin-Themes speichert `custom:<plugin-name>:<slug>` in der Konfiguration des Benutzers. Plugin-Themes sind schreibgeschützt; das Drücken von `Ctrl+E` auf einem in `/theme` kopiert es in `~/.claude/themes/`, damit der Benutzer die Kopie bearbeiten kann.

341 

342***

343 

344## Plugin-Installationsbereiche

345 

346Wenn Sie ein Plugin installieren, wählen Sie einen **Bereich**, der bestimmt, wo das Plugin verfügbar ist und wer es sonst noch verwenden kann:

347 

348| Bereich | Einstellungsdatei | Anwendungsfall |

349| :-------- | :------------------------------------------------------ | :-------------------------------------------------------------------- |

350| `user` | `~/.claude/settings.json` | Persönliche Plugins, die in allen Projekten verfügbar sind (Standard) |

351| `project` | `.claude/settings.json` | Team-Plugins, die über Versionskontrolle geteilt werden |

352| `local` | `.claude/settings.local.json` | Projektspezifische Plugins, gitignoriert |

353| `managed` | [Verwaltete Einstellungen](/de/settings#settings-files) | Verwaltete Plugins (schreibgeschützt, nur aktualisierbar) |

354 

355Plugins verwenden das gleiche Bereichssystem wie andere Claude Code Konfigurationen. Installationsanweisungen und Bereichs-Flags finden Sie unter [Plugins installieren](/de/discover-plugins#install-plugins). Eine vollständige Erklärung der Bereiche finden Sie unter [Konfigurationsbereiche](/de/settings#configuration-scopes).

356 

357***

358 

359## Plugin-Manifest-Schema

360 

361Die `.claude-plugin/plugin.json` Datei definiert die Metadaten und Konfiguration Ihres Plugins. Dieser Abschnitt dokumentiert alle unterstützten Felder und Optionen.

362 

363Das Manifest ist optional. Wenn es weggelassen wird, erkennt Claude Code Komponenten automatisch in [Standardspeicherorten](#file-locations-reference) und leitet den Plugin-Namen aus dem Verzeichnisnamen ab. Verwenden Sie ein Manifest, wenn Sie Metadaten oder benutzerdefinierte Komponentenpfade bereitstellen müssen.

364 

365### Vollständiges Schema

366 

367```json theme={null}

368{

369 "name": "plugin-name",

370 "version": "1.2.0",

371 "description": "Brief plugin description",

372 "author": {

373 "name": "Author Name",

374 "email": "author@example.com",

375 "url": "https://github.com/author"

376 },

377 "homepage": "https://docs.example.com/plugin",

378 "repository": "https://github.com/author/plugin",

379 "license": "MIT",

380 "keywords": ["keyword1", "keyword2"],

381 "skills": "./custom/skills/",

382 "commands": ["./custom/commands/special.md"],

383 "agents": ["./custom/agents/reviewer.md"],

384 "hooks": "./config/hooks.json",

385 "mcpServers": "./mcp-config.json",

386 "outputStyles": "./styles/",

387 "themes": "./themes/",

388 "lspServers": "./.lsp.json",

389 "monitors": "./monitors.json",

390 "dependencies": [

391 "helper-lib",

392 { "name": "secrets-vault", "version": "~2.1.0" }

393 ]

394}

395```

396 

397### Erforderliche Felder

398 

399Wenn Sie ein Manifest einschließen, ist `name` das einzige erforderliche Feld.

400 

401| Feld | Typ | Beschreibung | Beispiel |

402| :----- | :----- | :----------------------------------------------------- | :------------------- |

403| `name` | string | Eindeutiger Bezeichner (kebab-case, keine Leerzeichen) | `"deployment-tools"` |

404 

405Dieser Name wird für die Namensgebung von Komponenten verwendet. Beispielsweise wird der Agent `agent-creator` für das Plugin mit dem Namen `plugin-dev` in der Benutzeroberfläche als `plugin-dev:agent-creator` angezeigt.

406 

407### Metadaten-Felder

408 

409| Feld | Typ | Beschreibung | Beispiel |

410| :------------ | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |

411| `$schema` | string | JSON-Schema-URL für Editor-Autovervollständigung und Validierung. Claude Code ignoriert dieses Feld beim Laden. | `"https://json.schemastore.org/claude-code-plugin-manifest.json"` |

412| `version` | string | Optional. Semantische Version. Das Setzen dieser Version fixiert das Plugin auf diese Versionsnummer, sodass Benutzer nur Updates erhalten, wenn Sie diese erhöhen. Wenn weggelassen, greift Claude Code auf den Git-Commit-SHA zurück, sodass jeder Commit als neue Version behandelt wird. Wenn auch im Marktplatz-Eintrag gesetzt, hat `plugin.json` Vorrang. Siehe [Versionsverwaltung](#version-management). | `"2.1.0"` |

413| `description` | string | Kurze Erklärung des Plugin-Zwecks | `"Deployment automation tools"` |

414| `author` | object | Autoreninformationen | `{"name": "Dev Team", "email": "dev@company.com"}` |

415| `homepage` | string | Dokumentations-URL | `"https://docs.example.com"` |

416| `repository` | string | Quellcode-URL | `"https://github.com/user/plugin"` |

417| `license` | string | Lizenzbezeichner | `"MIT"`, `"Apache-2.0"` |

418| `keywords` | array | Discovery-Tags | `["deployment", "ci-cd"]` |

419 

420### Komponentenpfad-Felder

421 

422| Feld | Typ | Beschreibung | Beispiel |

423| :------------- | :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------- |

424| `skills` | string\|array | Benutzerdefinierte Skill-Verzeichnisse mit `<name>/SKILL.md` Struktur (ersetzt Standard `skills/`) | `"./custom/skills/"` |

425| `commands` | string\|array | Benutzerdefinierte flache `.md` Skill-Dateien oder Verzeichnisse (ersetzt Standard `commands/`) | `"./custom/cmd.md"` oder `["./cmd1.md"]` |

426| `agents` | string\|array | Benutzerdefinierte Agent-Dateien (ersetzt Standard `agents/`) | `"./custom/agents/reviewer.md"` |

427| `hooks` | string\|array\|object | Hook-Konfigurationspfade oder Inline-Konfiguration | `"./my-extra-hooks.json"` |

428| `mcpServers` | string\|array\|object | MCP-Konfigurationspfade oder Inline-Konfiguration | `"./my-extra-mcp-config.json"` |

429| `outputStyles` | string\|array | Benutzerdefinierte Output-Style-Dateien/Verzeichnisse (ersetzt Standard `output-styles/`) | `"./styles/"` |

430| `themes` | string\|array | Farbthema-Dateien/Verzeichnisse (ersetzt Standard `themes/`). Siehe [Designs](#themes) | `"./themes/"` |

431| `lspServers` | string\|array\|object | [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) Konfigurationen für Code-Intelligenz (Gehe zu Definition, finde Referenzen, etc.) | `"./.lsp.json"` |

432| `monitors` | string\|array | Hintergrund-[Monitor](/de/tools-reference#monitor-tool) Konfigurationen, die automatisch starten, wenn das Plugin aktiv ist. Siehe [Monitore](#monitors) | `"./monitors.json"` |

433| `userConfig` | object | Benutzerkonfigurierbare Werte, die bei der Aktivierung abgefragt werden. Siehe [Benutzerkonfiguration](#user-configuration) | Siehe unten |

434| `channels` | array | Kanal-Deklarationen für Nachrichteninjection (Telegram, Slack, Discord Stil). Siehe [Kanäle](#channels) | Siehe unten |

435| `dependencies` | array | Andere Plugins, die dieses Plugin benötigt, optional mit semver Versionsbeschränkungen. Siehe [Plugin-Abhängigkeitsversionen einschränken](/de/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |

436 

437### Benutzerkonfiguration

438 

439Das `userConfig` Feld deklariert Werte, die Claude Code den Benutzer abfragt, wenn das Plugin aktiviert wird. Verwenden Sie dies, anstatt Benutzer zu zwingen, `settings.json` manuell zu bearbeiten.

440 

441```json theme={null}

442{

443 "userConfig": {

444 "api_endpoint": {

445 "type": "string",

446 "title": "API endpoint",

447 "description": "Your team's API endpoint"

448 },

449 "api_token": {

450 "type": "string",

451 "title": "API token",

452 "description": "API authentication token",

453 "sensitive": true

454 }

455 }

456}

457```

458 

459Schlüssel müssen gültige Bezeichner sein. Jede Option unterstützt diese Felder:

460 

461| Feld | Erforderlich | Beschreibung |

462| :------------ | :----------- | :--------------------------------------------------------------------------------------------------------- |

463| `type` | Ja | Einer von `string`, `number`, `boolean`, `directory` oder `file` |

464| `title` | Ja | Beschriftung im Konfigurationsdialog |

465| `description` | Ja | Hilfetext unter dem Feld |

466| `sensitive` | Nein | Wenn `true`, maskiert die Eingabe und speichert den Wert im sicheren Speicher anstelle von `settings.json` |

467| `required` | Nein | Wenn `true`, schlägt die Validierung fehl, wenn das Feld leer ist |

468| `default` | Nein | Wert, der verwendet wird, wenn der Benutzer nichts bereitstellt |

469| `multiple` | Nein | Für `string` Typ, erlaubt ein Array von Strings |

470| `min` / `max` | Nein | Grenzen für `number` Typ |

471 

472Jeder Wert ist für die Substitution als `${user_config.KEY}` in MCP- und LSP-Server-Konfigurationen, Hook-Befehlen und Monitor-Befehlen verfügbar. Nicht-sensitive Werte können auch in Skill- und Agent-Inhalten ersetzt werden. Alle Werte werden an Plugin-Subprozesse als `CLAUDE_PLUGIN_OPTION_<KEY>` Umgebungsvariablen exportiert.

473 

474Nicht-sensitive Werte werden in `settings.json` unter `pluginConfigs[<plugin-id>].options` gespeichert. Sensitive Werte gehen zum System-Keychain (oder `~/.claude/.credentials.json`, wo der Keychain nicht verfügbar ist). Keychain-Speicher wird mit OAuth-Tokens geteilt und hat ein ungefähres Gesamtlimit von 2 KB, daher halten Sie sensitive Werte klein.

475 

476### Kanäle

477 

478Das `channels` Feld ermöglicht es einem Plugin, einen oder mehrere Nachrichtenkanäle zu deklarieren, die Inhalte in die Konversation injizieren. Jeder Kanal bindet sich an einen MCP-Server, den das Plugin bereitstellt.

479 

480```json theme={null}

481{

482 "channels": [

483 {

484 "server": "telegram",

485 "userConfig": {

486 "bot_token": {

487 "type": "string",

488 "title": "Bot token",

489 "description": "Telegram bot token",

490 "sensitive": true

491 },

492 "owner_id": {

493 "type": "string",

494 "title": "Owner ID",

495 "description": "Your Telegram user ID"

496 }

497 }

498 }

499 ]

500}

501```

502 

503Das `server` Feld ist erforderlich und muss einem Schlüssel in den `mcpServers` des Plugins entsprechen. Das optionale Pro-Kanal `userConfig` verwendet das gleiche Schema wie das Top-Level-Feld, wodurch das Plugin Bot-Tokens oder Owner-IDs abfragen kann, wenn das Plugin aktiviert wird.

504 

505### Pfad-Verhaltensregeln

506 

507Für `skills`, `commands`, `agents`, `outputStyles`, `themes` und `monitors` ersetzt ein benutzerdefinierter Pfad den Standard. Wenn das Manifest `skills` angibt, wird das Standard-Verzeichnis `skills/` nicht gescannt; wenn es `monitors` angibt, wird die Standard-Datei `monitors/monitors.json` nicht geladen. [Hooks](#hooks), [MCP-Server](#mcp-servers) und [LSP-Server](#lsp-servers) haben unterschiedliche Semantiken für die Behandlung mehrerer Quellen.

508 

509* Alle Pfade müssen relativ zum Plugin-Root sein und mit `./` beginnen

510* Komponenten aus benutzerdefinierten Pfaden verwenden die gleichen Benennungs- und Namensgebungsregeln

511* Mehrere Pfade können als Arrays angegeben werden

512* Um das Standard-Verzeichnis zu behalten und mehr Pfade für Skills, Befehle, Agents oder Output-Styles hinzuzufügen, schließen Sie den Standard in Ihr Array ein: `"skills": ["./skills/", "./extras/"]`

513* Wenn ein Skill-Pfad auf ein Verzeichnis verweist, das direkt ein `SKILL.md` enthält, beispielsweise `"skills": ["./"]` verweist auf den Plugin-Root, bestimmt das Frontmatter-Feld `name` in `SKILL.md` den Aufrufen-Namen des Skills. Dies gibt einen stabilen Namen unabhängig vom Installationsverzeichnis. Wenn `name` nicht im Frontmatter gesetzt ist, wird der Verzeichnis-Basename als Fallback verwendet.

514 

515**Pfad-Beispiele**:

516 

517```json theme={null}

518{

519 "commands": [

520 "./specialized/deploy.md",

521 "./utilities/batch-process.md"

522 ],

523 "agents": [

524 "./custom-agents/reviewer.md",

525 "./custom-agents/tester.md"

526 ]

527}

528```

529 

530### Umgebungsvariablen

531 

532Claude Code bietet zwei Variablen zum Referenzieren von Plugin-Pfaden. Beide werden überall dort inline ersetzt, wo sie in Skill-Inhalten, Agent-Inhalten, Hook-Befehlen, Monitor-Befehlen und MCP- oder LSP-Server-Konfigurationen erscheinen. Beide werden auch als Umgebungsvariablen an Hook-Prozesse und MCP- oder LSP-Server-Subprozesse exportiert.

533 

534**`${CLAUDE_PLUGIN_ROOT}`**: Der absolute Pfad zum Installationsverzeichnis Ihres Plugins. Verwenden Sie dies, um auf Skripte, Binärdateien und Konfigurationsdateien zu verweisen, die mit dem Plugin gebündelt sind. Dieser Pfad ändert sich, wenn das Plugin aktualisiert wird, daher überleben Dateien, die Sie hier schreiben, ein Update nicht.

535 

536**`${CLAUDE_PLUGIN_DATA}`**: Ein persistentes Verzeichnis für Plugin-Status, das Updates überlebt. Verwenden Sie dies für installierte Abhängigkeiten wie `node_modules` oder Python-Umgebungen, generierte Code, Caches und alle anderen Dateien, die über Plugin-Versionen hinweg bestehen bleiben sollten. Das Verzeichnis wird automatisch erstellt, wenn diese Variable zum ersten Mal referenziert wird.

537 

538```json theme={null}

539{

540 "hooks": {

541 "PostToolUse": [

542 {

543 "hooks": [

544 {

545 "type": "command",

546 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/process.sh"

547 }

548 ]

549 }

550 ]

551 }

552}

553```

554 

555#### Persistentes Datenverzeichnis

556 

557Das `${CLAUDE_PLUGIN_DATA}` Verzeichnis wird zu `~/.claude/plugins/data/{id}/` aufgelöst, wobei `{id}` der Plugin-Bezeichner mit Zeichen außerhalb von `a-z`, `A-Z`, `0-9`, `_` und `-` ist, die durch `-` ersetzt werden. Für ein Plugin, das als `formatter@my-marketplace` installiert ist, ist das Verzeichnis `~/.claude/plugins/data/formatter-my-marketplace/`.

558 

559Eine häufige Verwendung ist die einmalige Installation von Sprachabhängigkeiten und deren Wiederverwendung über Sessions und Plugin-Updates hinweg. Da das Datenverzeichnis länger lebt als jede einzelne Plugin-Version, kann eine Überprüfung auf Verzeichnisexistenz allein nicht erkennen, wenn ein Update das Abhängigkeitsmanifest des Plugins ändert. Das empfohlene Muster vergleicht das gebündelte Manifest mit einer Kopie im Datenverzeichnis und installiert neu, wenn sie sich unterscheiden.

560 

561Dieser `SessionStart` Hook installiert `node_modules` beim ersten Durchlauf und erneut, wenn ein Plugin-Update ein geändertes `package.json` enthält:

562 

563```json theme={null}

564{

565 "hooks": {

566 "SessionStart": [

567 {

568 "hooks": [

569 {

570 "type": "command",

571 "command": "diff -q \"${CLAUDE_PLUGIN_ROOT}/package.json\" \"${CLAUDE_PLUGIN_DATA}/package.json\" >/dev/null 2>&1 || (cd \"${CLAUDE_PLUGIN_DATA}\" && cp \"${CLAUDE_PLUGIN_ROOT}/package.json\" . && npm install) || rm -f \"${CLAUDE_PLUGIN_DATA}/package.json\""

572 }

573 ]

574 }

575 ]

576 }

577}

578```

579 

580Der `diff` beendet sich mit Nonzero, wenn die gespeicherte Kopie fehlt oder sich vom gebündelten unterscheidet, was sowohl den ersten Durchlauf als auch abhängigkeitsändernde Updates abdeckt. Wenn `npm install` fehlschlägt, entfernt das nachfolgende `rm` das kopierte Manifest, damit die nächste Session erneut versucht.

581 

582Skripte, die in `${CLAUDE_PLUGIN_ROOT}` gebündelt sind, können dann gegen die persistierten `node_modules` ausgeführt werden:

583 

584```json theme={null}

585{

586 "mcpServers": {

587 "routines": {

588 "command": "node",

589 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"],

590 "env": {

591 "NODE_PATH": "${CLAUDE_PLUGIN_DATA}/node_modules"

592 }

593 }

594 }

595}

596```

597 

598Das Datenverzeichnis wird automatisch gelöscht, wenn Sie das Plugin aus dem letzten Bereich deinstallieren, in dem es installiert ist. Die `/plugin` Schnittstelle zeigt die Verzeichnisgröße an und fragt vor dem Löschen. Die CLI löscht standardmäßig; übergeben Sie [`--keep-data`](#plugin-uninstall), um es zu bewahren.

599 

600***

601 

602## Plugin-Caching und Dateiauflösung

603 

604Plugins werden auf eine von zwei Arten angegeben:

605 

606* Durch `claude --plugin-dir`, für die Dauer einer Session.

607* Durch einen Marktplatz, installiert für zukünftige Sessions.

608 

609Aus Sicherheits- und Verifizierungsgründen kopiert Claude Code *Marktplatz*-Plugins in den lokalen **Plugin-Cache** des Benutzers (`~/.claude/plugins/cache`), anstatt sie an Ort und Stelle zu verwenden. Das Verständnis dieses Verhaltens ist wichtig, wenn Sie Plugins entwickeln, die auf externe Dateien verweisen.

610 

611Jede installierte Version ist ein separates Verzeichnis im Cache. Wenn Sie ein Plugin aktualisieren oder deinstallieren, wird das vorherige Versionsverzeichnis als verwaist markiert und automatisch 7 Tage später entfernt. Die Gnadenfrist ermöglicht es gleichzeitigen Claude Code Sessions, die bereits die alte Version geladen haben, ohne Fehler weiter zu laufen.

612 

613Claudes Glob- und Grep-Tools überspringen verwaiste Versionsverzeichnisse während Suchen, daher enthalten Dateiergebnisse keinen veralteten Plugin-Code.

614 

615### Pfad-Traversal-Einschränkungen

616 

617Installierte Plugins können nicht auf Dateien außerhalb ihres Verzeichnisses verweisen. Pfade, die außerhalb des Plugin-Root traversieren (wie `../shared-utils`), funktionieren nach der Installation nicht, da diese externen Dateien nicht in den Cache kopiert werden.

618 

619### Arbeiten mit externen Abhängigkeiten

620 

621Wenn Ihr Plugin auf Dateien außerhalb seines Verzeichnisses zugreifen muss, können Sie symbolische Links zu externen Dateien in Ihrem Plugin-Verzeichnis erstellen. Symlinks werden im Cache beibehalten, anstatt dereferenziert zu werden, und sie werden zur Laufzeit zu ihrem Ziel aufgelöst. Der folgende Befehl erstellt einen Link von innerhalb Ihres Plugin-Verzeichnisses zu einem gemeinsamen Utilities-Speicherort:

622 

623```bash theme={null}

624ln -s /path/to/shared-utils ./shared-utils

625```

626 

627Dies bietet Flexibilität bei Beibehaltung der Sicherheitsvorteile des Caching-Systems.

628 

629***

630 

631## Plugin-Verzeichnisstruktur

632 

633### Standard-Plugin-Layout

634 

635Ein vollständiges Plugin folgt dieser Struktur:

636 

637```text theme={null}

638enterprise-plugin/

639├── .claude-plugin/ # Metadaten-Verzeichnis (optional)

640│ └── plugin.json # Plugin-Manifest

641├── skills/ # Skills

642│ ├── code-reviewer/

643│ │ └── SKILL.md

644│ └── pdf-processor/

645│ ├── SKILL.md

646│ └── scripts/

647├── commands/ # Skills als flache .md Dateien

648│ ├── status.md

649│ └── logs.md

650├── agents/ # Subagent-Definitionen

651│ ├── security-reviewer.md

652│ ├── performance-tester.md

653│ └── compliance-checker.md

654├── output-styles/ # Output-Style-Definitionen

655│ └── terse.md

656├── themes/ # Farbschema-Definitionen

657│ └── dracula.json

658├── monitors/ # Hintergrund-Monitor-Konfigurationen

659│ └── monitors.json

660├── hooks/ # Hook-Konfigurationen

661│ ├── hooks.json # Haupt-Hook-Konfiguration

662│ └── security-hooks.json # Zusätzliche Hooks

663├── bin/ # Plugin-Ausführbare Dateien, die zu PATH hinzugefügt werden

664│ └── my-tool # Aufrufbar als bloßer Befehl im Bash-Tool

665├── settings.json # Standardeinstellungen für das Plugin

666├── .mcp.json # MCP-Server-Definitionen

667├── .lsp.json # LSP-Server-Konfigurationen

668├── scripts/ # Hook- und Utility-Skripte

669│ ├── security-scan.sh

670│ ├── format-code.py

671│ └── deploy.js

672├── LICENSE # Lizenzdatei

673└── CHANGELOG.md # Versionsverlauf

674```

675 

676<Warning>

677 Das `.claude-plugin/` Verzeichnis enthält die `plugin.json` Datei. Alle anderen Verzeichnisse (commands/, agents/, skills/, output-styles/, themes/, monitors/, hooks/) müssen sich im Plugin-Root befinden, nicht innerhalb von `.claude-plugin/`.

678</Warning>

679 

680### Datei-Speicherorte-Referenz

681 

682| Komponente | Standard-Speicherort | Zweck |

683| :---------------------- | :--------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

684| **Manifest** | `.claude-plugin/plugin.json` | Plugin-Metadaten und Konfiguration (optional) |

685| **Skills** | `skills/` | Skills mit `<name>/SKILL.md` Struktur |

686| **Befehle** | `commands/` | Skills als flache Markdown-Dateien. Verwenden Sie `skills/` für neue Plugins |

687| **Agents** | `agents/` | Subagent Markdown-Dateien |

688| **Output-Styles** | `output-styles/` | Output-Style-Definitionen |

689| **Themes** | `themes/` | Farbschema-Definitionen |

690| **Hooks** | `hooks/hooks.json` | Hook-Konfiguration |

691| **MCP-Server** | `.mcp.json` | MCP-Server-Definitionen |

692| **LSP-Server** | `.lsp.json` | Language Server Konfigurationen |

693| **Monitore** | `monitors/monitors.json` | Hintergrund-Monitor-Konfigurationen |

694| **Ausführbare Dateien** | `bin/` | Ausführbare Dateien, die zum Bash-Tool `PATH` hinzugefügt werden. Dateien hier sind als bloße Befehle in jedem Bash-Tool-Aufruf aufrufbar, während das Plugin aktiviert ist |

695| **Einstellungen** | `settings.json` | Standardkonfiguration, die angewendet wird, wenn das Plugin aktiviert wird. Derzeit werden nur die [`agent`](/de/sub-agents) und [`subagentStatusLine`](/de/statusline#subagent-status-lines) Schlüssel unterstützt |

696 

697***

698 

699## CLI-Befehle-Referenz

700 

701Claude Code bietet CLI-Befehle für nicht-interaktive Plugin-Verwaltung, nützlich für Scripting und Automatisierung.

702 

703### plugin install

704 

705Installieren Sie ein Plugin aus verfügbaren Marktplätzen.

706 

707```bash theme={null}

708claude plugin install <plugin> [options]

709```

710 

711**Argumente:**

712 

713* `<plugin>`: Plugin-Name oder `plugin-name@marketplace-name` für einen bestimmten Marktplatz

714 

715**Optionen:**

716 

717| Option | Beschreibung | Standard |

718| :-------------------- | :--------------------------------------------------- | :------- |

719| `-s, --scope <scope>` | Installationsbereich: `user`, `project` oder `local` | `user` |

720| `-h, --help` | Hilfe für Befehl anzeigen | |

721 

722Der Bereich bestimmt, welche Einstellungsdatei das installierte Plugin hinzugefügt wird. Beispielsweise schreibt `--scope project` zu `enabledPlugins` in .claude/settings.json, wodurch das Plugin für alle verfügbar wird, die das Projekt-Repository klonen.

723 

724**Beispiele:**

725 

726```bash theme={null}

727# Installieren Sie im Benutzerbereich (Standard)

728claude plugin install formatter@my-marketplace

729 

730# Installieren Sie im Projektbereich (geteilt mit Team)

731claude plugin install formatter@my-marketplace --scope project

732 

733# Installieren Sie im lokalen Bereich (gitignoriert)

734claude plugin install formatter@my-marketplace --scope local

735```

736 

737### plugin uninstall

738 

739Entfernen Sie ein installiertes Plugin.

740 

741```bash theme={null}

742claude plugin uninstall <plugin> [options]

743```

744 

745**Argumente:**

746 

747* `<plugin>`: Plugin-Name oder `plugin-name@marketplace-name`

748 

749**Optionen:**

750 

751| Option | Beschreibung | Standard |

752| :-------------------- | :-------------------------------------------------------------------------------------------------------------------------------- | :------- |

753| `-s, --scope <scope>` | Deinstallieren aus Bereich: `user`, `project` oder `local` | `user` |

754| `--keep-data` | Bewahren Sie das [persistente Datenverzeichnis](#persistent-data-directory) des Plugins | |

755| `--prune` | Entfernen Sie auch automatisch installierte Abhängigkeiten, die kein anderes Plugin benötigt. Siehe [plugin prune](#plugin-prune) | |

756| `-y, --yes` | Überspringen Sie die `--prune` Bestätigungsaufforderung. Erforderlich, wenn stdin kein TTY ist | |

757| `-h, --help` | Hilfe für Befehl anzeigen | |

758 

759**Aliase:** `remove`, `rm`

760 

761Standardmäßig löscht das Deinstallieren aus dem letzten verbleibenden Bereich auch das `${CLAUDE_PLUGIN_DATA}` Verzeichnis des Plugins. Verwenden Sie `--keep-data`, um es zu bewahren, beispielsweise beim Neuinstallieren nach dem Testen einer neuen Version.

762 

763### plugin prune

764 

765Entfernen Sie automatisch installierte Plugin-Abhängigkeiten, die nicht mehr von einem installierten Plugin benötigt werden. Abhängigkeiten, die Claude Code eingezogen hat, um das [`dependencies`](/de/plugin-dependencies) Feld eines anderen Plugins zu erfüllen, werden entfernt; Plugins, die Sie direkt installiert haben, werden niemals berührt.

766 

767```bash theme={null}

768claude plugin prune [options]

769```

770 

771**Optionen:**

772 

773| Option | Beschreibung | Standard |

774| :-------------------- | :----------------------------------------------------------------------------------- | :------- |

775| `-s, --scope <scope>` | Bereinigen im Bereich: `user`, `project` oder `local` | `user` |

776| `--dry-run` | Listet auf, was entfernt würde, ohne etwas zu entfernen | |

777| `-y, --yes` | Überspringen Sie die Bestätigungsaufforderung. Erforderlich, wenn stdin kein TTY ist | |

778| `-h, --help` | Hilfe für Befehl anzeigen | |

779 

780**Aliase:** `autoremove`

781 

782Der Befehl listet verwaiste Abhängigkeiten auf und fragt vor dem Entfernen um Bestätigung. Um ein Plugin zu entfernen und seine Abhängigkeiten in einem Schritt zu bereinigen, führen Sie `claude plugin uninstall <plugin> --prune` aus.

783 

784<Note>

785 `claude plugin prune` erfordert Claude Code v2.1.121 oder später.

786</Note>

787 

788### plugin enable

789 

790Aktivieren Sie ein deaktiviertes Plugin.

791 

792```bash theme={null}

793claude plugin enable <plugin> [options]

794```

795 

796**Argumente:**

797 

798* `<plugin>`: Plugin-Name oder `plugin-name@marketplace-name`

799 

800**Optionen:**

801 

802| Option | Beschreibung | Standard |

803| :-------------------- | :----------------------------------------------------- | :------- |

804| `-s, --scope <scope>` | Bereich zum Aktivieren: `user`, `project` oder `local` | `user` |

805| `-h, --help` | Hilfe für Befehl anzeigen | |

806 

807### plugin disable

808 

809Deaktivieren Sie ein Plugin, ohne es zu deinstallieren.

810 

811```bash theme={null}

812claude plugin disable <plugin> [options]

813```

814 

815**Argumente:**

816 

817* `<plugin>`: Plugin-Name oder `plugin-name@marketplace-name`

818 

819**Optionen:**

820 

821| Option | Beschreibung | Standard |

822| :-------------------- | :------------------------------------------------------- | :------- |

823| `-s, --scope <scope>` | Bereich zum Deaktivieren: `user`, `project` oder `local` | `user` |

824| `-h, --help` | Hilfe für Befehl anzeigen | |

825 

826### plugin update

827 

828Aktualisieren Sie ein Plugin auf die neueste Version.

829 

830```bash theme={null}

831claude plugin update <plugin> [options]

832```

833 

834**Argumente:**

835 

836* `<plugin>`: Plugin-Name oder `plugin-name@marketplace-name`

837 

838**Optionen:**

839 

840| Option | Beschreibung | Standard |

841| :-------------------- | :------------------------------------------------------------------- | :------- |

842| `-s, --scope <scope>` | Bereich zum Aktualisieren: `user`, `project`, `local` oder `managed` | `user` |

843| `-h, --help` | Hilfe für Befehl anzeigen | |

844 

845***

846 

847### plugin list

848 

849Listet installierte Plugins mit ihrer Version, Quell-Marktplatz und Aktivierungsstatus auf.

850 

851```bash theme={null}

852claude plugin list [options]

853```

854 

855**Optionen:**

856 

857| Option | Beschreibung | Standard |

858| :------------ | :------------------------------------------------------------------- | :------- |

859| `--json` | Ausgabe als JSON | |

860| `--available` | Verfügbare Plugins von Marktplätzen einschließen. Erfordert `--json` | |

861| `-h, --help` | Hilfe für Befehl anzeigen | |

862 

863### plugin tag

864 

865Erstellen Sie ein Release-Git-Tag für das Plugin im aktuellen Verzeichnis. Führen Sie es im Ordner des Plugins aus. Siehe [Tag-Plugin-Releases](/de/plugin-dependencies#tag-plugin-releases-for-version-resolution).

866 

867```bash theme={null}

868claude plugin tag [options]

869```

870 

871**Optionen:**

872 

873| Option | Beschreibung | Standard |

874| :------------ | :------------------------------------------------------------------------------------------- | :------- |

875| `--push` | Pushen Sie das Tag zum Remote nach dem Erstellen | |

876| `--dry-run` | Drucken Sie aus, was getaggt würde, ohne das Tag zu erstellen | |

877| `-f, --force` | Erstellen Sie das Tag auch wenn der Arbeitsbaum schmutzig ist oder das Tag bereits existiert | |

878| `-h, --help` | Hilfe für Befehl anzeigen | |

879 

880***

881 

882## Debugging- und Entwicklungstools

883 

884### Debugging-Befehle

885 

886Verwenden Sie `claude --debug`, um Plugin-Lade-Details zu sehen:

887 

888Dies zeigt:

889 

890* Welche Plugins geladen werden

891* Alle Fehler in Plugin-Manifesten

892* Skill-, Agent- und Hook-Registrierung

893* MCP-Server-Initialisierung

894 

895### Häufige Probleme

896 

897| Problem | Ursache | Lösung |

898| :---------------------------------- | :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

899| Plugin wird nicht geladen | Ungültige `plugin.json` | Führen Sie `claude plugin validate` oder `/plugin validate` aus, um `plugin.json`, Skill/Agent/Command Frontmatter und `hooks/hooks.json` auf Syntax- und Schema-Fehler zu überprüfen |

900| Skills nicht erscheinend | Falsche Verzeichnisstruktur | Stellen Sie sicher, dass `skills/` oder `commands/` im Plugin-Root ist, nicht in `.claude-plugin/` |

901| Hooks werden nicht ausgelöst | Skript nicht ausführbar | Führen Sie `chmod +x script.sh` aus |

902| MCP-Server schlägt fehl | Fehlender `${CLAUDE_PLUGIN_ROOT}` | Verwenden Sie Variable für alle Plugin-Pfade |

903| Pfadfehler | Absolute Pfade verwendet | Alle Pfade müssen relativ sein und mit `./` beginnen |

904| LSP `Executable not found in $PATH` | Language Server nicht installiert | Installieren Sie die Binärdatei (z.B. `npm install -g typescript-language-server typescript`) |

905 

906### Beispiel-Fehlermeldungen

907 

908**Manifest-Validierungsfehler**:

909 

910* `Invalid JSON syntax: Unexpected token } in JSON at position 142`: Überprüfen Sie auf fehlende Kommas, zusätzliche Kommas oder nicht zitierte Strings

911* `Plugin has an invalid manifest file at .claude-plugin/plugin.json. Validation errors: name: Required`: Ein erforderliches Feld fehlt

912* `Plugin has a corrupt manifest file at .claude-plugin/plugin.json. JSON parse error: ...`: JSON-Syntaxfehler

913 

914**Plugin-Ladefehler**:

915 

916* `Warning: No commands found in plugin my-plugin custom directory: ./cmds. Expected .md files or SKILL.md in subdirectories.`: Befehlspfad existiert, enthält aber keine gültigen Befehlsdateien

917* `Plugin directory not found at path: ./plugins/my-plugin. Check that the marketplace entry has the correct path.`: Der `source` Pfad in marketplace.json verweist auf ein nicht existierendes Verzeichnis

918* `Plugin my-plugin has conflicting manifests: both plugin.json and marketplace entry specify components.`: Entfernen Sie doppelte Komponentendefinitionen oder entfernen Sie `strict: false` im Marktplatz-Eintrag

919 

920### Hook-Fehlerbehebung

921 

922**Hook-Skript wird nicht ausgeführt**:

923 

9241. Überprüfen Sie, dass das Skript ausführbar ist: `chmod +x ./scripts/your-script.sh`

9252. Überprüfen Sie die Shebang-Zeile: Erste Zeile sollte `#!/bin/bash` oder `#!/usr/bin/env bash` sein

9263. Überprüfen Sie, dass der Pfad `${CLAUDE_PLUGIN_ROOT}` verwendet: `"command": "${CLAUDE_PLUGIN_ROOT}/scripts/your-script.sh"`

9274. Testen Sie das Skript manuell: `./scripts/your-script.sh`

928 

929**Hook wird nicht bei erwarteten Events ausgelöst**:

930 

9311. Überprüfen Sie, dass der Event-Name korrekt ist (Groß-/Kleinschreibung beachten): `PostToolUse`, nicht `postToolUse`

9322. Überprüfen Sie, dass das Matcher-Muster Ihre Tools passt: `"matcher": "Write|Edit"` für Dateivorgänge

9333. Bestätigen Sie, dass der Hook-Typ gültig ist: `command`, `http`, `mcp_tool`, `prompt` oder `agent`

934 

935### MCP-Server-Fehlerbehebung

936 

937**Server wird nicht gestartet**:

938 

9391. Überprüfen Sie, dass der Befehl existiert und ausführbar ist

9402. Überprüfen Sie, dass alle Pfade die `${CLAUDE_PLUGIN_ROOT}` Variable verwenden

9413. Überprüfen Sie die MCP-Server-Logs: `claude --debug` zeigt Initialisierungsfehler

9424. Testen Sie den Server manuell außerhalb von Claude Code

943 

944**Server-Tools erscheinen nicht**:

945 

9461. Stellen Sie sicher, dass der Server ordnungsgemäß in `.mcp.json` oder `plugin.json` konfiguriert ist

9472. Überprüfen Sie, dass der Server das MCP-Protokoll ordnungsgemäß implementiert

9483. Überprüfen Sie auf Verbindungs-Timeouts in der Debug-Ausgabe

949 

950### Verzeichnisstruktur-Fehler

951 

952**Symptome**: Plugin wird geladen, aber Komponenten (Skills, Agents, Hooks) fehlen.

953 

954**Korrekte Struktur**: Komponenten müssen sich im Plugin-Root befinden, nicht innerhalb von `.claude-plugin/`. Nur `plugin.json` gehört in `.claude-plugin/`.

955 

956```text theme={null}

957my-plugin/

958├── .claude-plugin/

959│ └── plugin.json ← Nur Manifest hier

960├── commands/ ← Auf Root-Ebene

961├── agents/ ← Auf Root-Ebene

962└── hooks/ ← Auf Root-Ebene

963```

964 

965Wenn sich Ihre Komponenten in `.claude-plugin/` befinden, verschieben Sie sie in den Plugin-Root.

966 

967**Debug-Checkliste**:

968 

9691. Führen Sie `claude --debug` aus und suchen Sie nach „loading plugin" Meldungen

9702. Überprüfen Sie, dass jedes Komponentenverzeichnis in der Debug-Ausgabe aufgelistet ist

9713. Überprüfen Sie Dateiberechtigungen, die das Lesen der Plugin-Dateien ermöglichen

972 

973***

974 

975## Verteilungs- und Versionierungs-Referenz

976 

977### Versionsverwaltung

978 

979Claude Code verwendet die Version des Plugins als Cache-Schlüssel, der bestimmt, ob ein Update verfügbar ist. Wenn Sie `/plugin update` ausführen oder Auto-Update aktiviert ist, berechnet Claude Code die aktuelle Version und überspringt das Update, wenn es mit der bereits installierten Version übereinstimmt.

980 

981Die Version wird aus dem ersten dieser Felder aufgelöst, das gesetzt ist:

982 

9831. Das Feld `version` in der `plugin.json` des Plugins

9842. Das Feld `version` im Marketplace-Eintrag des Plugins in `marketplace.json`

9853. Der Git-Commit-SHA des Plugin-Quellcodes für `github`, `url`, `git-subdir` und relative-path-Quellen in einem Git-gehosteten Marketplace

9864. `unknown`, für `npm`-Quellen oder lokale Verzeichnisse, die sich nicht in einem Git-Repository befinden

987 

988Dies gibt Ihnen zwei Möglichkeiten, ein Plugin zu versionieren:

989 

990| Ansatz | Wie | Update-Verhalten | Am besten für |

991| :--------------------- | :------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------- |

992| **Explizite Version** | Setzen Sie `"version": "2.1.0"` in `plugin.json` | Benutzer erhalten Updates nur, wenn Sie dieses Feld erhöhen. Das Pushen neuer Commits ohne Erhöhung hat keine Auswirkung, und `/plugin update` meldet „bereits auf der neuesten Version". | Veröffentlichte Plugins mit stabilen Release-Zyklen |

993| **Commit-SHA-Version** | Lassen Sie `version` sowohl in `plugin.json` als auch im Marketplace-Eintrag weg | Benutzer erhalten Updates bei jedem neuen Commit zur Git-Quelle des Plugins | Interne oder Team-Plugins unter aktiver Entwicklung |

994 

995<Warning>

996 Wenn Sie `version` in `plugin.json` setzen, müssen Sie es jedes Mal erhöhen, wenn Benutzer Änderungen erhalten sollen. Das bloße Pushen neuer Commits reicht nicht aus, da Claude Code die gleiche Versionszeichenkette sieht und die zwischengespeicherte Kopie behält. Wenn Sie schnell iterieren, lassen Sie `version` ungesetzt, damit stattdessen der Git-Commit-SHA verwendet wird.

997</Warning>

998 

999Wenn Sie explizite Versionen verwenden, folgen Sie [semantischer Versionierung](https://semver.org) (`MAJOR.MINOR.PATCH`): Erhöhen Sie MAJOR für Breaking Changes, MINOR für neue Features, PATCH für Bugfixes. Dokumentieren Sie Änderungen in einer `CHANGELOG.md`.

1000 

1001***

1002 

1003## Siehe auch

1004 

1005* [Plugins](/de/plugins) - Tutorials und praktische Verwendung

1006* [Plugin-Marktplätze](/de/plugin-marketplaces) - Erstellen und Verwalten von Marktplätzen

1007* [Skills](/de/skills) - Skill-Entwicklungsdetails

1008* [Subagents](/de/sub-agents) - Agent-Konfiguration und Fähigkeiten

1009* [Hooks](/de/hooks) - Event-Handling und Automatisierung

1010* [MCP](/de/mcp) - Integration externer Tools

1011* [Einstellungen](/de/settings) - Konfigurationsoptionen für Plugins

quickstart.md +976 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Schnellstart

6 

7> Willkommen bei Claude Code!

8 

9export const InstallConfigurator = ({defaultSurface = 'terminal'}) => {

10 const TERM = {

11 mac: {

12 label: 'macOS / Linux',

13 cmd: 'curl -fsSL https://claude.ai/install.sh | bash'

14 },

15 win: {

16 label: 'Windows'

17 },

18 brew: {

19 label: 'Homebrew',

20 cmd: 'brew install --cask claude-code'

21 },

22 winget: {

23 label: 'WinGet',

24 cmd: 'winget install Anthropic.ClaudeCode'

25 }

26 };

27 const WIN_VARIANTS = {

28 ps: 'irm https://claude.ai/install.ps1 | iex',

29 cmd: 'curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd'

30 };

31 const TABS = [{

32 key: 'terminal',

33 label: 'Terminal'

34 }, {

35 key: 'desktop',

36 label: 'Desktop'

37 }, {

38 key: 'vscode',

39 label: 'VS Code'

40 }, {

41 key: 'jetbrains',

42 label: 'JetBrains'

43 }];

44 const ALT_TARGETS = {

45 desktop: {

46 name: 'Desktop',

47 tagline: 'The full agent in a native app for macOS and Windows.',

48 installLabel: 'Download the app',

49 installHref: 'https://claude.com/download?utm_source=claude_code&utm_medium=docs&utm_content=configurator_desktop_download',

50 guideHref: '/en/desktop-quickstart'

51 },

52 vscode: {

53 name: 'VS Code',

54 tagline: 'Review diffs, manage context, and chat without leaving your editor.',

55 installLabel: 'Install from Marketplace',

56 installHref: 'https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code',

57 altCmd: 'code --install-extension anthropic.claude-code',

58 guideHref: '/en/vs-code'

59 },

60 jetbrains: {

61 name: 'JetBrains',

62 tagline: 'Native plugin for IntelliJ, PyCharm, WebStorm, and other JetBrains IDEs.',

63 installLabel: 'Install from Marketplace',

64 installHref: 'https://plugins.jetbrains.com/plugin/27310-claude-code-beta-',

65 guideHref: '/en/jetbrains'

66 }

67 };

68 const PROVIDERS = [{

69 key: 'anthropic',

70 label: 'Anthropic'

71 }, {

72 key: 'bedrock',

73 label: 'Amazon Bedrock'

74 }, {

75 key: 'foundry',

76 label: 'Microsoft Foundry'

77 }, {

78 key: 'vertex',

79 label: 'Google Vertex AI'

80 }];

81 const PROVIDER_NOTICE = {

82 bedrock: <>

83 <strong>Configure your AWS account first.</strong> Running on Bedrock

84 requires model access enabled in the AWS console and IAM credentials.{' '}

85 <a href="/en/amazon-bedrock">Bedrock setup guide →</a>

86 </>,

87 vertex: <>

88 <strong>Configure your GCP project first.</strong> Running on Vertex AI

89 requires the Vertex API enabled and a service account with the right

90 permissions.{' '}

91 <a href="/en/google-vertex-ai">Vertex setup guide →</a>

92 </>,

93 foundry: <>

94 <strong>Configure your Azure resources first.</strong> Running on

95 Microsoft Foundry requires an Azure subscription with a Foundry resource

96 and model deployments provisioned.{' '}

97 <a href="/en/microsoft-foundry">Foundry setup guide →</a>

98 </>

99 };

100 const iconCheck = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="3" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

101 <polyline points="20 6 9 17 4 12" />

102 </svg>;

103 const iconCopy = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

104 <rect x="9" y="9" width="13" height="13" rx="2" />

105 <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" />

106 </svg>;

107 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

108 <line x1="5" y1="12" x2="19" y2="12" />

109 <polyline points="12 5 19 12 12 19" />

110 </svg>;

111 const iconArrowUpRight = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

112 <line x1="7" y1="17" x2="17" y2="7" />

113 <polyline points="7 7 17 7 17 17" />

114 </svg>;

115 const iconInfo = (size = 16) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

116 <circle cx="12" cy="12" r="10" />

117 <line x1="12" y1="16" x2="12" y2="12" />

118 <line x1="12" y1="8" x2="12.01" y2="8" />

119 </svg>;

120 const [target, setTarget] = useState(defaultSurface);

121 const [team, setTeam] = useState(false);

122 const [provider, setProvider] = useState('anthropic');

123 const [pkg, setPkg] = useState(() => (/Win/).test(navigator.userAgent) ? 'win' : 'mac');

124 const [winCmd, setWinCmd] = useState(false);

125 const [copied, setCopied] = useState(null);

126 const copyTimer = useRef(null);

127 const handleCopy = async (text, key) => {

128 try {

129 await navigator.clipboard.writeText(text);

130 } catch {

131 const ta = document.createElement('textarea');

132 ta.value = text;

133 document.body.appendChild(ta);

134 ta.select();

135 document.execCommand('copy');

136 document.body.removeChild(ta);

137 }

138 clearTimeout(copyTimer.current);

139 setCopied(key);

140 copyTimer.current = setTimeout(() => setCopied(null), 1800);

141 };

142 const cardBodyCmd = (cmd, prompt) => {

143 const on = copied === 'term';

144 return <div className="cc-ic-card-body">

145 <span className="cc-ic-prompt">{prompt || '$'}</span>

146 <div className="cc-ic-cmd">{cmd}</div>

147 <button type="button" className={'cc-ic-copy' + (on ? ' cc-ic-copied' : '')} onClick={() => handleCopy(cmd, 'term')}>

148 {on ? iconCheck(13) : iconCopy(13)}

149 <span>{on ? 'Copied' : 'Copy'}</span>

150 </button>

151 </div>;

152 };

153 const isWinInstaller = pkg === 'win';

154 const isWinPrompt = pkg === 'win' || pkg === 'winget';

155 const terminalCmd = isWinInstaller ? WIN_VARIANTS[winCmd ? 'cmd' : 'ps'] : TERM[pkg].cmd;

156 const alt = ALT_TARGETS[target];

157 const showNotice = team && provider !== 'anthropic';

158 const STYLES = `

159.cc-ic {

160 --ic-slate: #141413;

161 --ic-clay: #d97757;

162 --ic-clay-deep: #c6613f;

163 --ic-gray-000: #ffffff;

164 --ic-gray-150: #f0eee6;

165 --ic-gray-550: #73726c;

166 --ic-gray-700: #3d3d3a;

167 --ic-border-subtle: rgba(31, 30, 29, 0.08);

168 --ic-border-default: rgba(31, 30, 29, 0.15);

169 --ic-border-strong: rgba(31, 30, 29, 0.3);

170 --ic-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, 'Courier New', monospace;

171 font-family: 'Anthropic Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

172 font-size: 14px; line-height: 1.5; color: var(--ic-slate);

173 margin: 8px 0 32px;

174}

175.dark .cc-ic {

176 --ic-slate: #f0eee6;

177 --ic-gray-000: #262624;

178 --ic-gray-150: #1f1e1d;

179 --ic-gray-550: #91908a;

180 --ic-gray-700: #bfbdb4;

181 --ic-border-subtle: rgba(240, 238, 230, 0.08);

182 --ic-border-default: rgba(240, 238, 230, 0.14);

183 --ic-border-strong: rgba(240, 238, 230, 0.28);

184}

185.dark .cc-ic-check { background: transparent; }

186.dark .cc-ic-card { border: 0.5px solid var(--ic-border-subtle); }

187.dark .cc-ic-p-pill.cc-ic-active { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }

188.cc-ic *, .cc-ic *::before, .cc-ic *::after { box-sizing: border-box; }

189.cc-ic a { text-decoration: none; }

190.cc-ic a:not([class]) { color: inherit; }

191.cc-ic button { font-family: inherit; cursor: pointer; }

192 

193.cc-ic-tab-strip {

194 display: inline-flex; gap: 2px;

195 padding: 4px; background: var(--ic-gray-150);

196 border-radius: 10px; overflow-x: auto;

197 max-width: 100%;

198}

199.cc-ic-tab {

200 appearance: none; background: none; border: none;

201 padding: 10px 18px; font-size: 15px; font-weight: 430;

202 color: var(--ic-gray-550); border-radius: 7px;

203 white-space: nowrap;

204 transition: color 0.12s, background-color 0.12s;

205}

206.cc-ic-tab:hover { color: var(--ic-gray-700); }

207.cc-ic-tab.cc-ic-active {

208 color: var(--ic-slate); font-weight: 500;

209 background: var(--ic-gray-000);

210 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);

211}

212.dark .cc-ic-tab.cc-ic-active { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); }

213 

214.cc-ic-team-wrap { padding: 16px 0 20px; }

215.cc-ic-team-toggle {

216 display: flex; align-items: center; gap: 12px; font-family: inherit;

217 padding: 12px 16px; font-size: 14px; font-weight: 430;

218 color: var(--ic-gray-700); cursor: pointer; user-select: none;

219 width: fit-content; background: var(--ic-gray-150);

220 border: 0.5px solid var(--ic-border-subtle); border-radius: 8px;

221 transition: border-color 0.15s;

222}

223.cc-ic-team-toggle:hover { border-color: var(--ic-border-default); }

224.cc-ic-team-toggle.cc-ic-checked {

225 background: rgba(217, 119, 87, 0.08);

226 border-color: rgba(217, 119, 87, 0.25);

227}

228.cc-ic-check {

229 width: 16px; height: 16px;

230 border: 1px solid var(--ic-border-strong); border-radius: 4px;

231 background: var(--ic-gray-000);

232 display: flex; align-items: center; justify-content: center;

233 flex-shrink: 0;

234}

235.cc-ic-check svg { color: #fff; display: none; }

236.cc-ic-team-toggle.cc-ic-checked .cc-ic-check { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); }

237.cc-ic-team-toggle.cc-ic-checked .cc-ic-check svg { display: block; }

238 

239.cc-ic-team-reveal { display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; }

240.cc-ic-sales {

241 display: flex; align-items: center; justify-content: space-between;

242 gap: 16px; padding: 14px 16px;

243 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

244 border-radius: 8px; flex-wrap: wrap;

245}

246.cc-ic-sales-text { font-size: 13px; color: var(--ic-gray-700); line-height: 1.5; flex: 1; min-width: 200px; }

247.cc-ic-sales-text strong { font-weight: 550; color: var(--ic-slate); }

248.cc-ic-sales-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

249.cc-ic-btn-clay {

250 display: inline-flex; align-items: center; gap: 8px;

251 background: var(--ic-clay-deep); color: #fff; border: none;

252 border-radius: 8px; padding: 8px 14px;

253 font-size: 13px; font-weight: 500;

254 transition: background-color 0.15s; white-space: nowrap;

255}

256.cc-ic-btn-clay:hover { background: var(--ic-clay); }

257.cc-ic-btn-ghost {

258 display: inline-flex; align-items: center; gap: 8px;

259 background: transparent; color: var(--ic-gray-700);

260 border: 0.5px solid var(--ic-border-default);

261 border-radius: 8px; padding: 8px 14px;

262 font-size: 13px; font-weight: 500;

263}

264.cc-ic-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

265 

266.cc-ic-provider-bar {

267 display: flex; align-items: center; gap: 12px;

268 padding: 14px 16px; background: var(--ic-gray-150);

269 border-radius: 8px; font-size: 13px; flex-wrap: wrap;

270}

271.cc-ic-provider-bar .cc-ic-label { color: var(--ic-gray-550); flex-shrink: 0; }

272.cc-ic-provider-pills { display: flex; gap: 4px; flex-wrap: wrap; }

273.cc-ic-p-pill {

274 appearance: none; border: none; background: transparent;

275 padding: 6px 12px; border-radius: 6px;

276 font-size: 13px; font-weight: 430; color: var(--ic-gray-700);

277 white-space: nowrap;

278}

279.cc-ic-p-pill:hover { background: rgba(0, 0, 0, 0.04); }

280.cc-ic-p-pill.cc-ic-active {

281 background: var(--ic-gray-000); color: var(--ic-slate);

282 font-weight: 500; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);

283}

284.cc-ic-provider-notice {

285 display: flex; padding: 16px 18px;

286 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

287 border-radius: 8px; gap: 14px; align-items: flex-start;

288}

289.cc-ic-provider-notice > svg { color: var(--ic-gray-550); margin-top: 2px; flex-shrink: 0; }

290.cc-ic-provider-notice-body { font-size: 14px; line-height: 1.55; color: var(--ic-gray-700); }

291.cc-ic-provider-notice-body strong { font-weight: 550; color: var(--ic-slate); }

292.cc-ic-provider-notice-body a { color: var(--ic-clay-deep); font-weight: 500; }

293.cc-ic-provider-notice-body a:hover { text-decoration: underline; }

294 

295.cc-ic-card { background: #141413; border-radius: 12px; overflow: hidden; }

296.cc-ic-subtabs {

297 display: flex; align-items: center;

298 background: #1a1918;

299 border-bottom: 0.5px solid rgba(255, 255, 255, 0.08);

300 padding: 0 8px; overflow-x: auto;

301}

302.cc-ic-subtab {

303 appearance: none; background: none; border: none;

304 padding: 12px 16px; font-size: 12px;

305 color: rgba(255, 255, 255, 0.5);

306 position: relative; white-space: nowrap;

307}

308.cc-ic-subtab:hover { color: rgba(255, 255, 255, 0.75); }

309.cc-ic-subtab.cc-ic-active { color: #fff; }

310.cc-ic-subtab.cc-ic-active::after {

311 content: ''; position: absolute;

312 left: 12px; right: 12px; bottom: -0.5px;

313 height: 2px; background: var(--ic-clay);

314}

315.cc-ic-shell-switch {

316 display: inline-flex; gap: 2px;

317 margin: 14px 26px 0; padding: 3px;

318 background: rgba(255, 255, 255, 0.06);

319 border: 0.5px solid rgba(255, 255, 255, 0.08);

320 border-radius: 8px;

321 font-family: inherit;

322}

323.cc-ic-shell-option {

324 font: inherit; font-size: 12px; font-weight: 500;

325 padding: 5px 12px; border-radius: 6px;

326 background: transparent; border: none;

327 color: rgba(255, 255, 255, 0.55);

328 cursor: pointer; user-select: none; white-space: nowrap;

329 transition: color 120ms ease, background-color 120ms ease;

330}

331.cc-ic-shell-option:hover { color: rgba(255, 255, 255, 0.85); }

332.cc-ic-shell-option.cc-ic-active {

333 background: rgba(255, 255, 255, 0.12);

334 color: #fff;

335 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);

336}

337 

338.cc-ic-card-body { padding: 24px 26px; display: flex; align-items: flex-start; gap: 14px; }

339.cc-ic-prompt {

340 color: var(--ic-clay); font-family: var(--ic-font-mono);

341 font-size: 17px; user-select: none; padding-top: 2px;

342}

343.cc-ic-cmd {

344 flex: 1; font-family: var(--ic-font-mono);

345 font-size: 17px; color: #f0eee6;

346 line-height: 1.55; white-space: pre-wrap; word-break: break-word;

347}

348.cc-ic-copy {

349 display: inline-flex; align-items: center; gap: 6px;

350 background: rgba(255, 255, 255, 0.08);

351 border: 0.5px solid rgba(255, 255, 255, 0.12);

352 color: rgba(255, 255, 255, 0.85);

353 padding: 7px 13px; border-radius: 8px;

354 font-size: 13px; font-weight: 500; flex-shrink: 0;

355}

356.cc-ic-copy:hover { background: rgba(255, 255, 255, 0.14); }

357.cc-ic-copy.cc-ic-copied { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); color: #fff; }

358 

359.cc-ic-below {

360 margin-top: 12px; font-size: 13px; color: var(--ic-gray-550);

361 display: flex; gap: 16px; flex-wrap: wrap; align-items: baseline;

362}

363.cc-ic-below a { color: var(--ic-gray-700); border-bottom: 0.5px solid var(--ic-border-default); }

364.cc-ic-below a:hover { color: var(--ic-clay-deep); border-bottom-color: var(--ic-clay-deep); }

365.cc-ic-handoff {

366 padding: 22px 24px;

367 background: linear-gradient(180deg, #faf9f4 0%, #f3f1e9 100%);

368 border: 0.5px solid var(--ic-border-default);

369 border-radius: 12px;

370 box-shadow: 0 1px 2px rgba(31, 30, 29, 0.04), 0 6px 16px -4px rgba(31, 30, 29, 0.06);

371}

372.dark .cc-ic-handoff {

373 background: linear-gradient(180deg, #262624 0%, #1f1e1d 100%);

374 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3), 0 6px 16px -4px rgba(0, 0, 0, 0.4);

375}

376.cc-ic-handoff-title {

377 font-size: 16px; font-weight: 550; color: var(--ic-slate);

378 letter-spacing: -0.01em; margin-bottom: 4px;

379}

380.cc-ic-handoff-sub {

381 font-size: 14px; line-height: 1.5; color: var(--ic-gray-700);

382 margin-bottom: 18px;

383}

384.cc-ic-handoff-actions { display: flex; gap: 10px; flex-wrap: wrap; }

385.cc-ic-handoff-alt {

386 margin-top: 12px; font-size: 12px; color: var(--ic-gray-550);

387}

388.cc-ic-handoff-alt code {

389 font-family: var(--ic-font-mono); font-size: 11px;

390 background: var(--ic-gray-150); padding: 2px 6px;

391 border-radius: 4px; color: var(--ic-gray-700);

392}

393.cc-ic-copy-sm {

394 appearance: none; border: none;

395 display: inline-flex; align-items: center; justify-content: center;

396 width: 22px; height: 22px;

397 margin-left: 4px; vertical-align: middle;

398 background: var(--ic-gray-150); color: var(--ic-gray-550);

399 border-radius: 4px;

400 transition: color 0.1s, background-color 0.1s;

401}

402.cc-ic-copy-sm:hover { color: var(--ic-gray-700); background: var(--ic-border-default); }

403.cc-ic-copy-sm.cc-ic-copied { background: var(--ic-clay-deep); color: #fff; }

404 

405@media (max-width: 720px) {

406 .cc-ic-tab { padding: 12px 14px; font-size: 14px; }

407 .cc-ic-sales-actions { width: 100%; }

408 .cc-ic-card-body { padding: 20px; }

409 .cc-ic-cmd { font-size: 15px; }

410}

411`;

412 return <div className="cc-ic not-prose">

413 <style>{STYLES}</style>

414 

415 {}

416 <div className="cc-ic-tab-strip" role="tablist">

417 {TABS.map(t => <button key={t.key} type="button" role="tab" aria-selected={target === t.key} className={'cc-ic-tab' + (target === t.key ? ' cc-ic-active' : '')} onClick={() => setTarget(t.key)}>

418 {t.label}

419 </button>)}

420 </div>

421 

422 {}

423 <div className="cc-ic-team-wrap">

424 <button type="button" role="switch" aria-checked={team} className={'cc-ic-team-toggle' + (team ? ' cc-ic-checked' : '')} onClick={() => setTeam(!team)}>

425 <span className="cc-ic-check">{iconCheck(11)}</span>

426 <span>

427 I’m buying for a team or company (SSO, AWS/Azure/GCP, central billing)

428 </span>

429 </button>

430 </div>

431 

432 {}

433 {team && <div className="cc-ic-team-reveal">

434 <div className="cc-ic-sales">

435 <div className="cc-ic-sales-text">

436 <strong>Set up your team:</strong> self-serve or talk to sales.

437 </div>

438 <div className="cc-ic-sales-actions">

439 <a href="https://claude.ai/upgrade?initialPlanType=team&amp;utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_get_started" className="cc-ic-btn-ghost">

440 Get started

441 </a>

442 <a href="https://www.anthropic.com/contact-sales?utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_contact_sales" className="cc-ic-btn-clay">

443 Contact sales {iconArrowRight()}

444 </a>

445 </div>

446 </div>

447 

448 <div className="cc-ic-provider-bar">

449 <span className="cc-ic-label">Run on</span>

450 <div className="cc-ic-provider-pills" role="radiogroup" aria-label="Provider">

451 {PROVIDERS.map(p => <button key={p.key} type="button" role="radio" aria-checked={provider === p.key} className={'cc-ic-p-pill' + (provider === p.key ? ' cc-ic-active' : '')} onClick={() => setProvider(p.key)}>

452 {p.label}

453 </button>)}

454 </div>

455 </div>

456 

457 {showNotice && <div className="cc-ic-provider-notice">

458 {iconInfo()}

459 <div className="cc-ic-provider-notice-body">

460 {PROVIDER_NOTICE[provider]}

461 </div>

462 </div>}

463 </div>}

464 

465 {}

466 {target === 'terminal' && <div className="cc-ic-card">

467 <div className="cc-ic-subtabs" role="tablist" aria-label="Install method">

468 {Object.keys(TERM).map(k => <button key={k} type="button" role="tab" aria-selected={pkg === k} className={'cc-ic-subtab' + (pkg === k ? ' cc-ic-active' : '')} onClick={() => setPkg(k)}>

469 {TERM[k].label}

470 </button>)}

471 </div>

472 {isWinInstaller && <div className="cc-ic-shell-switch" role="tablist" aria-label="Shell">

473 {[{

474 k: 'ps',

475 label: 'PowerShell'

476 }, {

477 k: 'cmd',

478 label: 'CMD'

479 }].map(({k, label}) => {

480 const active = k === 'cmd' === winCmd;

481 return <button key={k} type="button" role="tab" aria-selected={active} className={'cc-ic-shell-option' + (active ? ' cc-ic-active' : '')} onClick={() => setWinCmd(k === 'cmd')}>

482 {label}

483 </button>;

484 })}

485 </div>}

486 {cardBodyCmd(terminalCmd, isWinPrompt ? '>' : '$')}

487 </div>}

488 

489 {}

490 {target === 'terminal' && <div className="cc-ic-below">

491 {isWinInstaller && <span>

492 <a href="https://git-scm.com/downloads/win" target="_blank" rel="noopener">

493 Git for Windows

494 </a>{' '}

495 recommended. PowerShell is used if Git Bash is absent.

496 </span>}

497 {(pkg === 'brew' || pkg === 'winget') && <span>

498 Does not auto-update. Run{' '}

499 <code>{pkg === 'brew' ? 'brew upgrade claude-code' : 'winget upgrade Anthropic.ClaudeCode'}</code>{' '}

500 periodically.

501 </span>}

502 <a href="/en/troubleshoot-install">Installation troubleshooting</a>

503 </div>}

504 

505 {alt && <div className="cc-ic-handoff">

506 <div className="cc-ic-handoff-title">Claude Code for {alt.name}</div>

507 <div className="cc-ic-handoff-sub">{alt.tagline}</div>

508 <div className="cc-ic-handoff-actions">

509 <a href={alt.installHref} className="cc-ic-btn-clay" {...alt.installHref.startsWith('http') ? {

510 target: '_blank',

511 rel: 'noopener'

512 } : {}}>

513 {alt.installLabel} {iconArrowUpRight(13)}

514 </a>

515 <a href={alt.guideHref} className="cc-ic-btn-ghost">

516 {alt.name} guide {iconArrowRight(12)}

517 </a>

518 </div>

519 {alt.altCmd && <div className="cc-ic-handoff-alt">

520 or run <code>{alt.altCmd}</code>

521 <button type="button" className={'cc-ic-copy-sm' + (copied === 'alt' ? ' cc-ic-copied' : '')} onClick={() => handleCopy(alt.altCmd, 'alt')} aria-label="Copy command">

522 {copied === 'alt' ? iconCheck(11) : iconCopy(11)}

523 </button>

524 </div>}

525 </div>}

526 </div>;

527};

528 

529export const Experiment = ({flag, treatment, children}) => {

530 const VID_KEY = 'exp_vid';

531 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

532 const fnv1a = s => {

533 let h = 0x811c9dc5;

534 for (let i = 0; i < s.length; i++) {

535 h ^= s.charCodeAt(i);

536 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

537 }

538 return h >>> 0;

539 };

540 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

541 const [decision] = useState(() => {

542 const params = new URLSearchParams(location.search);

543 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

544 const force = params.get('gb-force');

545 if (force) {

546 for (const p of force.split(',')) {

547 const [k, v] = p.split(':');

548 if (k === flag) return {

549 variant: v || 'treatment',

550 track: false

551 };

552 }

553 }

554 if (navigator.globalPrivacyControl) {

555 return {

556 variant: 'control',

557 track: false

558 };

559 }

560 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

561 if (prefsMatch) {

562 try {

563 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

564 return {

565 variant: 'control',

566 track: false

567 };

568 }

569 } catch {

570 return {

571 variant: 'control',

572 track: false

573 };

574 }

575 } else {

576 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

577 if (!country || CONSENT_COUNTRIES.has(country)) {

578 return {

579 variant: 'control',

580 track: false

581 };

582 }

583 }

584 let vid;

585 try {

586 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

587 if (ajsMatch) {

588 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

589 } else {

590 vid = localStorage.getItem(VID_KEY);

591 if (!vid) {

592 vid = crypto.randomUUID();

593 }

594 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

595 }

596 try {

597 localStorage.setItem(VID_KEY, vid);

598 } catch {}

599 } catch {

600 return {

601 variant: 'control',

602 track: false

603 };

604 }

605 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

606 return {

607 variant,

608 track: true,

609 vid

610 };

611 });

612 useEffect(() => {

613 if (!decision.track) return;

614 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

615 method: 'POST',

616 headers: {

617 'Content-Type': 'application/json',

618 'x-service-name': 'claude_code_docs'

619 },

620 body: JSON.stringify({

621 events: [{

622 event_type: 'GrowthbookExperimentEvent',

623 event_data: {

624 device_id: decision.vid,

625 anonymous_id: decision.vid,

626 timestamp: new Date().toISOString(),

627 experiment_id: flag,

628 variation_id: decision.variant === 'treatment' ? 1 : 0,

629 environment: 'production'

630 }

631 }]

632 }),

633 keepalive: true

634 }).catch(() => {});

635 }, []);

636 return decision.variant === 'treatment' ? treatment : children;

637};

638 

639Diese Schnellstartanleitung ermöglicht es Ihnen, in wenigen Minuten KI-gestützte Codierungshilfe zu nutzen. Am Ende werden Sie verstehen, wie Sie Claude Code für häufige Entwicklungsaufgaben einsetzen.

640 

641<Experiment flag="quickstart-install-configurator" treatment={<InstallConfigurator />} />

642 

643## Bevor Sie beginnen

644 

645Stellen Sie sicher, dass Sie folgende Voraussetzungen erfüllen:

646 

647* Ein offenes Terminal oder eine offene Eingabeaufforderung

648 * Wenn Sie das Terminal noch nie verwendet haben, lesen Sie den [Terminal-Leitfaden](/de/terminal-guide)

649* Ein Codeprojekt zum Arbeiten

650* Ein [Claude-Abonnement](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_prereq) (Pro, Max, Teams oder Enterprise), ein [Claude Console](https://console.anthropic.com/)-Konto oder Zugriff über einen [unterstützten Cloud-Anbieter](/de/third-party-integrations)

651 

652<Note>

653 Diese Anleitung behandelt die Terminal-CLI. Claude Code ist auch im [Web](https://claude.ai/code) verfügbar, als [Desktop-App](/de/desktop), in [VS Code](/de/vs-code) und [JetBrains IDEs](/de/jetbrains), in [Slack](/de/slack) und in CI/CD mit [GitHub Actions](/de/github-actions) und [GitLab](/de/gitlab-ci-cd). Siehe [alle Schnittstellen](/de/overview#use-claude-code-everywhere).

654</Note>

655 

656## Schritt 1: Claude Code installieren

657 

658To install Claude Code, use one of the following methods:

659 

660<Tabs>

661 <Tab title="Native Install (Recommended)">

662 **macOS, Linux, WSL:**

663 

664 ```bash theme={null}

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

666 ```

667 

668 **Windows PowerShell:**

669 

670 ```powershell theme={null}

671 irm https://claude.ai/install.ps1 | iex

672 ```

673 

674 **Windows CMD:**

675 

676 ```batch theme={null}

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

678 ```

679 

680 If you see `The token '&&' is not a valid statement separator`, you're in PowerShell, not CMD. If you see `'irm' is not recognized as an internal or external command`, you're in CMD, not PowerShell. Your prompt shows `PS C:\` when you're in PowerShell and `C:\` without the `PS` when you're in CMD.

681 

682 [Git for Windows](https://git-scm.com/downloads/win) is recommended on native Windows so Claude Code can use the Bash tool. If Git for Windows is not installed, Claude Code uses PowerShell as the shell tool instead. WSL setups do not need Git for Windows.

683 

684 <Info>

685 Native installations automatically update in the background to keep you on the latest version.

686 </Info>

687 </Tab>

688 

689 <Tab title="Homebrew">

690 ```bash theme={null}

691 brew install --cask claude-code

692 ```

693 

694 Homebrew offers two casks. `claude-code` tracks the stable release channel, which is typically about a week behind and skips releases with major regressions. `claude-code@latest` tracks the latest channel and receives new versions as soon as they ship.

695 

696 <Info>

697 Homebrew installations do not auto-update. Run `brew upgrade claude-code` or `brew upgrade claude-code@latest`, depending on which cask you installed, to get the latest features and security fixes.

698 </Info>

699 </Tab>

700 

701 <Tab title="WinGet">

702 ```powershell theme={null}

703 winget install Anthropic.ClaudeCode

704 ```

705 

706 <Info>

707 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.

708 </Info>

709 </Tab>

710</Tabs>

711 

712You can also install with [apt, dnf, or apk](/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.

713 

714## Schritt 2: Melden Sie sich bei Ihrem Konto an

715 

716Claude Code erfordert ein Konto zur Nutzung. Wenn Sie eine interaktive Sitzung mit dem Befehl `claude` starten, müssen Sie sich anmelden:

717 

718```bash theme={null}

719claude

720# Sie werden beim ersten Gebrauch aufgefordert, sich anzumelden

721```

722 

723```bash theme={null}

724/login

725# Folgen Sie den Aufforderungen, um sich mit Ihrem Konto anzumelden

726```

727 

728Sie können sich mit einem dieser Kontotypen anmelden:

729 

730* [Claude Pro, Max, Teams oder Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login) (empfohlen)

731* [Claude Console](https://console.anthropic.com/) (API-Zugriff mit Prepaid-Guthaben). Bei der ersten Anmeldung wird automatisch ein „Claude Code"-Arbeitsbereich in der Console erstellt, um die Kosten zentral zu verfolgen.

732* [Amazon Bedrock, Google Vertex AI oder Microsoft Foundry](/de/third-party-integrations) (Enterprise-Cloud-Anbieter)

733 

734Nach der Anmeldung werden Ihre Anmeldedaten gespeichert und Sie müssen sich nicht erneut anmelden. Um später zu einem anderen Konto zu wechseln, verwenden Sie den Befehl `/login`.

735 

736## Schritt 3: Starten Sie Ihre erste Sitzung

737 

738Öffnen Sie Ihr Terminal in einem beliebigen Projektverzeichnis und starten Sie Claude Code:

739 

740```bash theme={null}

741cd /path/to/your/project

742claude

743```

744 

745Sie sehen den Claude Code-Willkommensbildschirm mit Ihren Sitzungsinformationen, kürzlichen Gesprächen und den neuesten Updates. Geben Sie `/help` ein, um verfügbare Befehle anzuzeigen, oder `/resume`, um ein vorheriges Gespräch fortzusetzen.

746 

747<Tip>

748 Nach der Anmeldung (Schritt 2) werden Ihre Anmeldedaten auf Ihrem System gespeichert. Weitere Informationen finden Sie unter [Verwaltung von Anmeldedaten](/de/authentication#credential-management).

749</Tip>

750 

751## Schritt 4: Stellen Sie Ihre erste Frage

752 

753Beginnen Sie damit, Ihre Codebasis zu verstehen. Versuchen Sie einen dieser Befehle:

754 

755```text theme={null}

756what does this project do?

757```

758 

759Claude wird Ihre Dateien analysieren und eine Zusammenfassung bereitstellen. Sie können auch spezifischere Fragen stellen:

760 

761```text theme={null}

762what technologies does this project use?

763```

764 

765```text theme={null}

766where is the main entry point?

767```

768 

769```text theme={null}

770explain the folder structure

771```

772 

773Sie können Claude auch nach seinen eigenen Fähigkeiten fragen:

774 

775```text theme={null}

776what can Claude Code do?

777```

778 

779```text theme={null}

780how do I create custom skills in Claude Code?

781```

782 

783```text theme={null}

784can Claude Code work with Docker?

785```

786 

787<Note>

788 Claude Code liest Ihre Projektdateien nach Bedarf. Sie müssen den Kontext nicht manuell hinzufügen.

789</Note>

790 

791## Schritt 5: Nehmen Sie Ihre erste Codeänderung vor

792 

793Jetzt lassen Sie Claude Code tatsächlich programmieren. Versuchen Sie eine einfache Aufgabe:

794 

795```text theme={null}

796add a hello world function to the main file

797```

798 

799Claude Code wird:

800 

8011. Die entsprechende Datei finden

8022. Die vorgeschlagenen Änderungen anzeigen

8033. Um Ihre Genehmigung bitten

8044. Die Bearbeitung durchführen

805 

806<Note>

807 Claude Code fragt immer um Erlaubnis, bevor Dateien geändert werden. Sie können einzelne Änderungen genehmigen oder den Modus „Alle akzeptieren" für eine Sitzung aktivieren.

808</Note>

809 

810## Schritt 6: Verwenden Sie Git mit Claude Code

811 

812Claude Code macht Git-Operationen konversativ:

813 

814```text theme={null}

815what files have I changed?

816```

817 

818```text theme={null}

819commit my changes with a descriptive message

820```

821 

822Sie können auch komplexere Git-Operationen anfordern:

823 

824```text theme={null}

825create a new branch called feature/quickstart

826```

827 

828```text theme={null}

829show me the last 5 commits

830```

831 

832```text theme={null}

833help me resolve merge conflicts

834```

835 

836## Schritt 7: Beheben Sie einen Fehler oder fügen Sie eine Funktion hinzu

837 

838Claude ist versiert im Debuggen und in der Implementierung von Funktionen.

839 

840Beschreiben Sie, was Sie möchten, in natürlicher Sprache:

841 

842```text theme={null}

843add input validation to the user registration form

844```

845 

846Oder beheben Sie vorhandene Probleme:

847 

848```text theme={null}

849there's a bug where users can submit empty forms - fix it

850```

851 

852Claude Code wird:

853 

854* Den relevanten Code lokalisieren

855* Den Kontext verstehen

856* Eine Lösung implementieren

857* Tests ausführen, falls verfügbar

858 

859## Schritt 8: Testen Sie andere häufige Arbeitsabläufe

860 

861Es gibt verschiedene Möglichkeiten, mit Claude zu arbeiten:

862 

863**Code umgestalten**

864 

865```text theme={null}

866refactor the authentication module to use async/await instead of callbacks

867```

868 

869**Tests schreiben**

870 

871```text theme={null}

872write unit tests for the calculator functions

873```

874 

875**Dokumentation aktualisieren**

876 

877```text theme={null}

878update the README with installation instructions

879```

880 

881**Code-Überprüfung**

882 

883```text theme={null}

884review my changes and suggest improvements

885```

886 

887<Tip>

888 Sprechen Sie mit Claude wie mit einem hilfreichen Kollegen. Beschreiben Sie, was Sie erreichen möchten, und es wird Ihnen helfen, dorthin zu gelangen.

889</Tip>

890 

891## Wesentliche Befehle

892 

893Hier sind die wichtigsten Befehle für die tägliche Nutzung:

894 

895| Befehl | Was er tut | Beispiel |

896| ------------------- | ---------------------------------------------------- | ----------------------------------- |

897| `claude` | Interaktiven Modus starten | `claude` |

898| `claude "task"` | Eine einmalige Aufgabe ausführen | `claude "fix the build error"` |

899| `claude -p "query"` | Einmalige Abfrage ausführen und dann beenden | `claude -p "explain this function"` |

900| `claude -c` | Letztes Gespräch im aktuellen Verzeichnis fortsetzen | `claude -c` |

901| `claude -r` | Ein vorheriges Gespräch fortsetzen | `claude -r` |

902| `claude commit` | Einen Git-Commit erstellen | `claude commit` |

903| `/clear` | Gesprächsverlauf löschen | `/clear` |

904| `/help` | Verfügbare Befehle anzeigen | `/help` |

905| `exit` oder Ctrl+C | Claude Code beenden | `exit` |

906 

907Siehe die [CLI-Referenz](/de/cli-reference) für eine vollständige Liste der Befehle.

908 

909## Tipps für Anfänger

910 

911Weitere Informationen finden Sie unter [Best Practices](/de/best-practices) und [häufige Arbeitsabläufe](/de/common-workflows).

912 

913<AccordionGroup>

914 <Accordion title="Seien Sie spezifisch mit Ihren Anfragen">

915 Statt: 'Beheben Sie den Fehler"

916 

917 Versuchen Sie: „Beheben Sie den Login-Fehler, bei dem Benutzer einen leeren Bildschirm sehen, nachdem sie falsche Anmeldedaten eingegeben haben"

918 </Accordion>

919 

920 <Accordion title="Verwenden Sie Schritt-für-Schritt-Anweisungen">

921 Unterteilen Sie komplexe Aufgaben in Schritte:

922 

923 ```text theme={null}

924 1. create a new database table for user profiles

925 2. create an API endpoint to get and update user profiles

926 3. build a webpage that allows users to see and edit their information

927 ```

928 </Accordion>

929 

930 <Accordion title="Lassen Sie Claude zuerst erkunden">

931 Bevor Sie Änderungen vornehmen, lassen Sie Claude Ihren Code verstehen:

932 

933 ```text theme={null}

934 analyze the database schema

935 ```

936 

937 ```text theme={null}

938 build a dashboard showing products that are most frequently returned by our UK customers

939 ```

940 </Accordion>

941 

942 <Accordion title="Sparen Sie Zeit mit Verknüpfungen">

943 * Drücken Sie `?`, um alle verfügbaren Tastaturkürzel anzuzeigen

944 * Verwenden Sie Tab für Befehlsvervollständigung

945 * Drücken Sie ↑ für Befehlsverlauf

946 * Geben Sie `/` ein, um alle Befehle und skills anzuzeigen

947 </Accordion>

948</AccordionGroup>

949 

950## Was kommt als Nächstes?

951 

952Nachdem Sie die Grundlagen gelernt haben, erkunden Sie erweiterte Funktionen:

953 

954<CardGroup cols={2}>

955 <Card title="Wie Claude Code funktioniert" icon="microchip" href="/de/how-claude-code-works">

956 Verstehen Sie die agentengestützte Schleife, integrierte Tools und wie Claude Code mit Ihrem Projekt interagiert

957 </Card>

958 

959 <Card title="Best Practices" icon="star" href="/de/best-practices">

960 Erzielen Sie bessere Ergebnisse mit effektiven Prompts und Projektsetup

961 </Card>

962 

963 <Card title="Häufige Arbeitsabläufe" icon="graduation-cap" href="/de/common-workflows">

964 Schritt-für-Schritt-Anleitungen für häufige Aufgaben

965 </Card>

966 

967 <Card title="Erweitern Sie Claude Code" icon="puzzle-piece" href="/de/features-overview">

968 Passen Sie mit CLAUDE.md, skills, hooks, MCP und mehr an

969 </Card>

970</CardGroup>

971 

972## Hilfe erhalten

973 

974* **In Claude Code**: Geben Sie `/help` ein oder fragen Sie „how do I..."

975* **Dokumentation**: Sie sind hier! Durchsuchen Sie andere Leitfäden

976* **Community**: Treten Sie unserem [Discord](https://www.anthropic.com/discord) bei, um Tipps und Unterstützung zu erhalten

remote-control.md +259 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Lokale Sitzungen von jedem Gerät aus mit Remote Control fortsetzen

6 

7> Setzen Sie eine lokale Claude Code-Sitzung von Ihrem Telefon, Tablet oder einem beliebigen Browser aus mit Remote Control fort. Funktioniert mit claude.ai/code und der Claude-Mobile-App.

8 

9<Note>

10 Remote Control ist in der Forschungsvorschau verfügbar und auf allen Plänen verfügbar. Bei Team und Enterprise ist es standardmäßig deaktiviert, bis ein Administrator den Remote Control-Schalter in den [Claude Code-Admin-Einstellungen](https://claude.ai/admin-settings/claude-code) aktiviert.

11</Note>

12 

13Remote Control verbindet [claude.ai/code](https://claude.ai/code) oder die Claude-App für [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) und [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) mit einer Claude Code-Sitzung, die auf Ihrem Computer ausgeführt wird. Starten Sie eine Aufgabe an Ihrem Schreibtisch und setzen Sie sie dann von Ihrem Telefon auf der Couch oder einem Browser auf einem anderen Computer fort.

14 

15Wenn Sie eine Remote Control-Sitzung auf Ihrem Computer starten, wird Claude die ganze Zeit lokal ausgeführt, sodass nichts in die Cloud verschoben wird. Mit Remote Control können Sie:

16 

17* **Ihre vollständige lokale Umgebung remote nutzen**: Ihr Dateisystem, [MCP servers](/de/mcp), Tools und Projektkonfiguration bleiben verfügbar, und durch Eingabe von `@` werden Dateipfade aus Ihrem lokalen Projekt automatisch vervollständigt

18* **Von beiden Oberflächen gleichzeitig arbeiten**: Das Gespräch bleibt auf allen verbundenen Geräten synchronisiert, sodass Sie Nachrichten von Ihrem Terminal, Browser und Telefon austauschbar senden können

19* **Unterbrechungen überstehen**: Wenn Ihr Laptop in den Ruhezustand wechselt oder Ihr Netzwerk ausfällt, wird die Sitzung automatisch wiederhergestellt, wenn Ihr Computer wieder online ist

20 

21Im Gegensatz zu [Claude Code im Web](/de/claude-code-on-the-web), das auf Cloud-Infrastruktur ausgeführt wird, werden Remote Control-Sitzungen direkt auf Ihrem Computer ausgeführt und interagieren mit Ihrem lokalen Dateisystem. Die Web- und Mobile-Schnittstellen sind nur ein Fenster in diese lokale Sitzung.

22 

23<Note>

24 Remote Control erfordert Claude Code v2.1.51 oder später. Überprüfen Sie Ihre Version mit `claude --version`.

25</Note>

26 

27Diese Seite behandelt die Einrichtung, das Starten und Verbinden mit Sitzungen sowie den Vergleich von Remote Control mit Claude Code im Web.

28 

29## Anforderungen

30 

31Bevor Sie Remote Control verwenden, bestätigen Sie, dass Ihre Umgebung diese Bedingungen erfüllt:

32 

33* **Abonnement**: verfügbar in Pro-, Max-, Team- und Enterprise-Plänen. API-Schlüssel werden nicht unterstützt. Bei Team und Enterprise muss ein Administrator zunächst den Remote Control-Schalter in den [Claude Code-Admin-Einstellungen](https://claude.ai/admin-settings/claude-code) aktivieren.

34* **Authentifizierung**: Führen Sie `claude` aus und verwenden Sie `/login`, um sich über claude.ai anzumelden, falls Sie dies noch nicht getan haben.

35* **Workspace-Vertrauen**: Führen Sie `claude` mindestens einmal in Ihrem Projektverzeichnis aus, um den Workspace-Vertrauensdialog zu akzeptieren.

36 

37## Starten Sie eine Remote Control-Sitzung

38 

39Sie können eine Remote Control-Sitzung über die CLI oder die VS Code-Erweiterung starten. Die CLI bietet drei Aufrufmodi; VS Code verwendet den Befehl `/remote-control`.

40 

41<Tabs>

42 <Tab title="Server-Modus">

43 Navigieren Sie zu Ihrem Projektverzeichnis und führen Sie aus:

44 

45 ```bash theme={null}

46 claude remote-control

47 ```

48 

49 Der Prozess läuft weiterhin in Ihrem Terminal im Server-Modus und wartet auf Remote-Verbindungen. Er zeigt eine Sitzungs-URL an, die Sie zum [Verbinden von einem anderen Gerät](#connect-from-another-device) verwenden können, und Sie können die Leertaste drücken, um einen QR-Code für schnellen Zugriff von Ihrem Telefon anzuzeigen. Während eine Remote-Sitzung aktiv ist, zeigt das Terminal den Verbindungsstatus und die Tool-Aktivität an.

50 

51 Verfügbare Flags:

52 

53 | Flag | Beschreibung |

54 | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

55 | `--name "My Project"` | Legen Sie einen benutzerdefinierten Sitzungstitel fest, der in der Sitzungsliste unter claude.ai/code sichtbar ist. |

56 | `--remote-control-session-name-prefix <prefix>` | Präfix für automatisch generierte Sitzungsnamen, wenn kein expliziter Name festgelegt ist. Standardmäßig der Hostname Ihres Computers, was Namen wie `myhost-graceful-unicorn` erzeugt. Setzen Sie `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` für denselben Effekt. |

57 | `--spawn <mode>` | Wie der Server Sitzungen erstellt.<br />• `same-dir` (Standard): Alle Sitzungen teilen sich das aktuelle Arbeitsverzeichnis, sodass sie in Konflikt geraten können, wenn dieselben Dateien bearbeitet werden.<br />• `worktree`: Jede On-Demand-Sitzung erhält ihren eigenen [git worktree](/de/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees). Erfordert ein Git-Repository.<br />• `session`: Single-Session-Modus. Bedient genau eine Sitzung und lehnt zusätzliche Verbindungen ab. Wird nur beim Start festgelegt.<br />Drücken Sie `w` zur Laufzeit, um zwischen `same-dir` und `worktree` umzuschalten. |

58 | `--capacity <N>` | Maximale Anzahl gleichzeitiger Sitzungen. Standard ist 32. Kann nicht mit `--spawn=session` verwendet werden. |

59 | `--verbose` | Zeigen Sie detaillierte Verbindungs- und Sitzungsprotokolle an. |

60 | `--sandbox` / `--no-sandbox` | Aktivieren oder deaktivieren Sie [sandboxing](/de/sandboxing) für Dateisystem- und Netzwerkisolation. Standardmäßig deaktiviert. |

61 </Tab>

62 

63 <Tab title="Interaktive Sitzung">

64 Um eine normale interaktive Claude Code-Sitzung mit aktiviertem Remote Control zu starten, verwenden Sie das Flag `--remote-control` (oder `--rc`):

65 

66 ```bash theme={null}

67 claude --remote-control

68 ```

69 

70 Geben Sie optional einen Namen für die Sitzung an:

71 

72 ```bash theme={null}

73 claude --remote-control "My Project"

74 ```

75 

76 Dies gibt Ihnen eine vollständige interaktive Sitzung in Ihrem Terminal, die Sie auch von claude.ai oder der Claude-App aus steuern können. Im Gegensatz zu `claude remote-control` (Server-Modus) können Sie lokal Nachrichten eingeben, während die Sitzung auch remote verfügbar ist.

77 </Tab>

78 

79 <Tab title="Aus einer bestehenden Sitzung">

80 Wenn Sie sich bereits in einer Claude Code-Sitzung befinden und diese remote fortsetzen möchten, verwenden Sie den Befehl `/remote-control` (oder `/rc`):

81 

82 ```text theme={null}

83 /remote-control

84 ```

85 

86 Übergeben Sie einen Namen als Argument, um einen benutzerdefinierten Sitzungstitel festzulegen:

87 

88 ```text theme={null}

89 /remote-control My Project

90 ```

91 

92 Dies startet eine Remote Control-Sitzung, die Ihren aktuellen Gesprächsverlauf überträgt und eine Sitzungs-URL und einen QR-Code anzeigt, die Sie zum [Verbinden von einem anderen Gerät](#connect-from-another-device) verwenden können. Die Flags `--verbose`, `--sandbox` und `--no-sandbox` sind mit diesem Befehl nicht verfügbar.

93 </Tab>

94 

95 <Tab title="VS Code">

96 In der [Claude Code VS Code-Erweiterung](/de/vs-code) geben Sie `/remote-control` oder `/rc` in das Eingabefeld ein, oder öffnen Sie das Befehlsmenü mit `/` und wählen Sie es aus. Erfordert Claude Code v2.1.79 oder später.

97 

98 ```text theme={null}

99 /remote-control

100 ```

101 

102 Ein Banner wird über dem Eingabefeld angezeigt und zeigt den Verbindungsstatus. Nach der Verbindung klicken Sie auf **Im Browser öffnen** im Banner, um direkt zur Sitzung zu gehen, oder finden Sie sie in der Sitzungsliste unter [claude.ai/code](https://claude.ai/code). Die Sitzungs-URL wird auch im Gespräch gepostet.

103 

104 Um die Verbindung zu trennen, klicken Sie auf das Schließsymbol im Banner oder führen Sie `/remote-control` erneut aus.

105 

106 Im Gegensatz zur CLI akzeptiert der VS Code-Befehl kein Namensargument und zeigt keinen QR-Code an. Der Sitzungstitel wird aus Ihrem Gesprächsverlauf oder der ersten Eingabeaufforderung abgeleitet.

107 </Tab>

108</Tabs>

109 

110### Verbinden Sie sich von einem anderen Gerät

111 

112Sobald eine Remote Control-Sitzung aktiv ist, haben Sie mehrere Möglichkeiten, sich von einem anderen Gerät aus zu verbinden:

113 

114* **Öffnen Sie die Sitzungs-URL** in einem beliebigen Browser, um direkt zur Sitzung auf [claude.ai/code](https://claude.ai/code) zu gehen.

115* **Scannen Sie den QR-Code**, der neben der Sitzungs-URL angezeigt wird, um ihn direkt in der Claude-App zu öffnen. Mit `claude remote-control` drücken Sie die Leertaste, um die QR-Code-Anzeige umzuschalten.

116* **Öffnen Sie [claude.ai/code](https://claude.ai/code) oder die Claude-App** und finden Sie die Sitzung nach Name in der Sitzungsliste. Remote Control-Sitzungen zeigen ein Computersymbol mit einem grünen Statusindikator an, wenn sie online sind.

117 

118Der Titel der Remote-Sitzung wird in dieser Reihenfolge gewählt:

119 

1201. Der Name, den Sie an `--name`, `--remote-control` oder `/remote-control` übergeben haben

1212. Der Titel, den Sie mit `/rename` festgelegt haben

1223. Die letzte aussagekräftige Nachricht im vorhandenen Gesprächsverlauf

1234. Ein automatisch generierter Name wie `myhost-graceful-unicorn`, wobei `myhost` der Hostname Ihres Computers oder das Präfix ist, das Sie mit `--remote-control-session-name-prefix` festgelegt haben

124 

125Wenn Sie keinen expliziten Namen festgelegt haben, wird der Titel aktualisiert, um Ihre Eingabeaufforderung widerzuspiegeln, sobald Sie eine senden.

126 

127Wenn die Umgebung bereits eine aktive Sitzung hat, werden Sie gefragt, ob Sie diese fortsetzen oder eine neue starten möchten.

128 

129Wenn Sie die Claude-App noch nicht haben, verwenden Sie den Befehl `/mobile` in Claude Code, um einen Download-QR-Code für [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) oder [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) anzuzeigen.

130 

131### Aktivieren Sie Remote Control für alle Sitzungen

132 

133Standardmäßig wird Remote Control nur aktiviert, wenn Sie explizit `claude remote-control`, `claude --remote-control` oder `/remote-control` ausführen. Um es automatisch für jede interaktive Sitzung zu aktivieren, führen Sie `/config` in Claude Code aus und setzen Sie **Enable Remote Control for all sessions** auf `true`. Setzen Sie es auf `false` zurück, um es zu deaktivieren.

134 

135Mit dieser Einstellung registriert jeder interaktive Claude Code-Prozess eine Remote-Sitzung. Wenn Sie mehrere Instanzen ausführen, erhält jede ihre eigene Umgebung und Sitzung. Um mehrere gleichzeitige Sitzungen aus einem einzelnen Prozess auszuführen, verwenden Sie stattdessen den [Server-Modus](#start-a-remote-control-session).

136 

137## Verbindung und Sicherheit

138 

139Ihre lokale Claude Code-Sitzung stellt nur ausgehende HTTPS-Anfragen und öffnet niemals eingehende Ports auf Ihrem Computer. Wenn Sie Remote Control starten, registriert es sich bei der Anthropic-API und fragt nach Arbeit ab. Wenn Sie sich von einem anderen Gerät aus verbinden, leitet der Server Nachrichten zwischen dem Web- oder Mobile-Client und Ihrer lokalen Sitzung über eine Streaming-Verbindung weiter.

140 

141Der gesamte Datenverkehr verläuft über die Anthropic-API über TLS, die gleiche Transportsicherheit wie jede Claude Code-Sitzung. Die Verbindung verwendet mehrere kurzlebige Anmeldeinformationen, die jeweils auf einen einzelnen Zweck beschränkt sind und unabhängig ablaufen.

142 

143## Remote Control vs. Claude Code im Web

144 

145Remote Control und [Claude Code im Web](/de/claude-code-on-the-web) verwenden beide die Schnittstelle claude.ai/code. Der Hauptunterschied liegt darin, wo die Sitzung ausgeführt wird: Remote Control wird auf Ihrem Computer ausgeführt, sodass Ihre lokalen MCP servers, Tools und Projektkonfiguration verfügbar bleiben. Claude Code im Web wird in von Anthropic verwalteter Cloud-Infrastruktur ausgeführt.

146 

147Verwenden Sie Remote Control, wenn Sie sich mitten in lokaler Arbeit befinden und von einem anderen Gerät aus weitermachen möchten. Verwenden Sie Claude Code im Web, wenn Sie eine Aufgabe ohne lokale Einrichtung starten möchten, an einem Repository arbeiten, das Sie nicht geklont haben, oder mehrere Aufgaben parallel ausführen möchten.

148 

149## Mobile Push-Benachrichtigungen

150 

151Wenn Remote Control aktiv ist, kann Claude Push-Benachrichtigungen an Ihr Telefon senden.

152 

153Claude entscheidet, wann eine Push-Benachrichtigung gesendet wird. Sie wird normalerweise gesendet, wenn eine lange laufende Aufgabe abgeschlossen ist oder wenn Claude eine Entscheidung von Ihnen benötigt, um fortzufahren. Sie können auch eine Push-Benachrichtigung in Ihrer Eingabeaufforderung anfordern, zum Beispiel `notify me when the tests finish`. Über den Ein-/Aus-Schalter unten gibt es keine Pro-Event-Konfiguration.

154 

155<Note>

156 Mobile Push-Benachrichtigungen erfordern Claude Code v2.1.110 oder später.

157</Note>

158 

159So richten Sie Mobile Push-Benachrichtigungen ein:

160 

161<Steps>

162 <Step title="Installieren Sie die Claude-Mobile-App">

163 Laden Sie die Claude-App für [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) oder [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) herunter.

164 </Step>

165 

166 <Step title="Melden Sie sich mit Ihrem Claude Code-Konto an">

167 Verwenden Sie dasselbe Konto und die gleiche Organisation, die Sie für Claude Code im Terminal verwenden.

168 </Step>

169 

170 <Step title="Benachrichtigungen zulassen">

171 Akzeptieren Sie die Benachrichtigungsberechtigungsaufforderung des Betriebssystems.

172 </Step>

173 

174 <Step title="Aktivieren Sie Push in Claude Code">

175 Führen Sie in Ihrem Terminal `/config` aus und aktivieren Sie **Push when Claude decides**.

176 </Step>

177</Steps>

178 

179Wenn Benachrichtigungen nicht ankommen:

180 

181* Wenn `/config` **No mobile registered** anzeigt, öffnen Sie die Claude-App auf Ihrem Telefon, damit sie ihr Push-Token aktualisieren kann. Die Warnung wird beim nächsten Verbinden von Remote Control gelöscht.

182* Auf iOS können Focus-Modi und Benachrichtigungszusammenfassungen Push-Benachrichtigungen unterdrücken oder verzögern. Überprüfen Sie Einstellungen → Benachrichtigungen → Claude.

183* Auf Android kann aggressive Batterieoptimierung die Zustellung verzögern. Befreien Sie die Claude-App von der Batterieoptimierung in den Systemeinstellungen.

184 

185## Einschränkungen

186 

187* **Eine Remote-Sitzung pro interaktivem Prozess**: Außerhalb des Server-Modus unterstützt jede Claude Code-Instanz jeweils eine Remote-Sitzung. Verwenden Sie den [Server-Modus](#start-a-remote-control-session), um mehrere gleichzeitige Sitzungen aus einem einzelnen Prozess auszuführen.

188* **Lokaler Prozess muss weiterhin ausgeführt werden**: Remote Control wird als lokaler Prozess ausgeführt. Wenn Sie das Terminal schließen, VS Code beenden oder den `claude`-Prozess anderweitig beenden, endet die Sitzung.

189* **Längerer Netzwerkausfall**: Wenn Ihr Computer aktiv ist, aber länger als etwa 10 Minuten das Netzwerk nicht erreichen kann, läuft die Sitzung ab und der Prozess wird beendet. Führen Sie `claude remote-control` erneut aus, um eine neue Sitzung zu starten.

190* **Ultraplan trennt Remote Control**: Das Starten einer [ultraplan](/de/ultraplan)-Sitzung trennt jede aktive Remote Control-Sitzung, da beide Funktionen die Schnittstelle claude.ai/code belegen und nur eine gleichzeitig verbunden sein kann.

191* **Einige Befehle sind nur lokal verfügbar**: Befehle, die eine interaktive Auswahl im Terminal öffnen, wie `/mcp`, `/plugin` oder `/resume`, funktionieren nur über die lokale CLI. Befehle, die Textausgabe erzeugen, einschließlich `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/extra-usage`, `/recap` und `/reload-plugins`, funktionieren von mobil und Web aus.

192 

193## Fehlerbehebung

194 

195### „Remote Control erfordert ein claude.ai-Abonnement"

196 

197Sie sind nicht mit einem claude.ai-Konto authentifiziert. Führen Sie `claude auth login` aus und wählen Sie die claude.ai-Option. Wenn `ANTHROPIC_API_KEY` in Ihrer Umgebung festgelegt ist, heben Sie die Festlegung zuerst auf.

198 

199### „Remote Control erfordert ein Token mit vollständigem Umfang"

200 

201Sie sind mit einem langlebigen Token von `claude setup-token` oder der Umgebungsvariable `CLAUDE_CODE_OAUTH_TOKEN` authentifiziert. Diese Token sind auf Inferenz-only beschränkt und können keine Remote Control-Sitzungen einrichten. Führen Sie `claude auth login` aus, um sich stattdessen mit einem Token mit vollständigem Umfang zu authentifizieren.

202 

203### „Ihre Organisation für die Remote Control-Berechtigung konnte nicht bestimmt werden"

204 

205Ihre zwischengespeicherten Kontoinformationen sind veraltet oder unvollständig. Führen Sie `claude auth login` aus, um sie zu aktualisieren.

206 

207### „Remote Control ist für Ihr Konto noch nicht aktiviert"

208 

209Die Berechtigungsprüfung kann mit bestimmten Umgebungsvariablen fehlschlagen:

210 

211* `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` oder `DISABLE_TELEMETRY`: Heben Sie die Festlegung auf und versuchen Sie es erneut.

212* `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX` oder `CLAUDE_CODE_USE_FOUNDRY`: Remote Control erfordert claude.ai-Authentifizierung und funktioniert nicht mit Drittanbieter-Providern.

213 

214Wenn keine dieser Variablen festgelegt sind, führen Sie `/logout` und dann `/login` aus, um zu aktualisieren.

215 

216### „Remote Control ist durch die Richtlinie Ihrer Organisation deaktiviert"

217 

218Dieser Fehler hat drei unterschiedliche Ursachen. Führen Sie zunächst `/status` aus, um zu sehen, welche Anmeldemethode und welches Abonnement Sie verwenden.

219 

220* **Sie sind mit einem API-Schlüssel oder Console-Konto authentifiziert**: Remote Control erfordert claude.ai OAuth. Führen Sie `/login` aus und wählen Sie die claude.ai-Option. Wenn `ANTHROPIC_API_KEY` in Ihrer Umgebung festgelegt ist, heben Sie die Festlegung auf.

221* **Ihr Team- oder Enterprise-Administrator hat es nicht aktiviert**: Remote Control ist standardmäßig in diesen Plänen deaktiviert. Ein Administrator kann es unter [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) aktivieren, indem er den Schalter **Remote Control** einschaltet. Dies ist eine serverseitige Organisationseinstellung, keine [verwaltete Einstellung](/de/permissions#managed-only-settings).

222* **Der Admin-Schalter ist ausgegraut**: Ihre Organisation hat eine Datenspeicherungs- oder Compliance-Konfiguration, die mit Remote Control nicht kompatibel ist. Dies kann nicht über das Admin-Panel geändert werden. Kontaktieren Sie den Anthropic-Support, um Optionen zu besprechen.

223 

224### „Remote credentials fetch failed"

225 

226Claude Code konnte keine kurzlebige Anmeldeinformation von der Anthropic-API abrufen, um die Verbindung herzustellen. Führen Sie erneut mit `--verbose` aus, um den vollständigen Fehler zu sehen:

227 

228```bash theme={null}

229claude remote-control --verbose

230```

231 

232Häufige Ursachen:

233 

234* Nicht angemeldet: Führen Sie `claude` aus und verwenden Sie `/login`, um sich mit Ihrem claude.ai-Konto zu authentifizieren. API-Schlüssel-Authentifizierung wird für Remote Control nicht unterstützt.

235* Netzwerk- oder Proxy-Problem: Eine Firewall oder ein Proxy blockiert möglicherweise die ausgehende HTTPS-Anfrage. Remote Control erfordert Zugriff auf die Anthropic-API auf Port 443.

236* Sitzungserstellung fehlgeschlagen: Wenn Sie auch „Session creation failed — see debug log" sehen, ist der Fehler früher in der Einrichtung aufgetreten. Überprüfen Sie, dass Ihr Abonnement aktiv ist.

237 

238## Wählen Sie den richtigen Ansatz

239 

240Claude Code offers several ways to work when you're not at your terminal. They differ in what triggers the work, where Claude runs, and how much you need to set up.

241 

242| | Trigger | Claude runs on | Setup | Best for |

243| :--------------------------------------------- | :--------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------ |

244| [Dispatch](/en/desktop#sessions-from-dispatch) | Message a task from the Claude mobile app | Your machine (Desktop) | [Pair the mobile app with Desktop](https://support.claude.com/en/articles/13947068) | Delegating work while you're away, minimal setup |

245| [Remote Control](/en/remote-control) | Drive a running session from [claude.ai/code](https://claude.ai/code) or the Claude mobile app | Your machine (CLI or VS Code) | Run `claude remote-control` | Steering in-progress work from another device |

246| [Channels](/en/channels) | Push events from a chat app like Telegram or Discord, or your own server | Your machine (CLI) | [Install a channel plugin](/en/channels#quickstart) or [build your own](/en/channels-reference) | Reacting to external events like CI failures or chat messages |

247| [Slack](/en/slack) | Mention `@Claude` in a team channel | Anthropic cloud | [Install the Slack app](/en/slack#setting-up-claude-code-in-slack) with [Claude Code on the web](/en/claude-code-on-the-web) enabled | PRs and reviews from team chat |

248| [Scheduled tasks](/en/scheduled-tasks) | Set a schedule | [CLI](/en/scheduled-tasks), [Desktop](/en/desktop-scheduled-tasks), or [cloud](/en/routines) | Pick a frequency | Recurring automation like daily reviews |

249 

250## Verwandte Ressourcen

251 

252* [Claude Code im Web](/de/claude-code-on-the-web): Führen Sie Sitzungen in von Anthropic verwalteten Cloud-Umgebungen aus, anstatt auf Ihrem Computer

253* [Ultraplan](/de/ultraplan): Starten Sie eine Cloud-Planungssitzung von Ihrem Terminal aus und überprüfen Sie den Plan in Ihrem Browser

254* [Kanäle](/de/channels): Leiten Sie Telegram, Discord oder iMessage in eine Sitzung weiter, damit Claude auf Nachrichten reagiert, während Sie weg sind

255* [Dispatch](/de/desktop#sessions-from-dispatch): Senden Sie eine Aufgabe von Ihrem Telefon aus, und sie kann eine Desktop-Sitzung spawnen, um sie zu bearbeiten

256* [Authentifizierung](/de/authentication): Richten Sie `/login` ein und verwalten Sie Anmeldeinformationen für claude.ai

257* [CLI-Referenz](/de/cli-reference): Vollständige Liste von Flags und Befehlen einschließlich `claude remote-control`

258* [Sicherheit](/de/security): Wie Remote Control-Sitzungen in das Claude Code-Sicherheitsmodell passen

259* [Datennutzung](/de/data-usage): Welche Daten während lokaler und Remote-Sitzungen durch die Anthropic-API fließen

routines.md +317 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Automatisieren Sie Arbeitsabläufe mit Routinen

6 

7> Setzen Sie Claude Code auf Autopilot. Definieren Sie Routinen, die nach einem Zeitplan ausgeführt werden, durch API-Aufrufe ausgelöst werden oder auf GitHub-Ereignisse von der von Anthropic verwalteten Cloud-Infrastruktur reagieren.

8 

9<Note>

10 Routinen befinden sich in der Forschungsvorschau. Verhalten, Limits und die API-Oberfläche können sich ändern.

11</Note>

12 

13Eine Routine ist eine gespeicherte Claude Code-Konfiguration: ein Prompt, ein oder mehrere Repositories und eine Reihe von [Konnektoren](/de/mcp), die einmal verpackt und automatisch ausgeführt werden. Routinen werden auf der von Anthropic verwalteten Cloud-Infrastruktur ausgeführt, sodass sie weiterhin funktionieren, wenn Ihr Laptop geschlossen ist.

14 

15Jede Routine kann einen oder mehrere Trigger haben:

16 

17* **Geplant**: Ausführung nach einem wiederkehrenden Zeitplan wie stündlich, nächtlich oder wöchentlich

18* **API**: Auslösung auf Anforderung durch Senden eines HTTP POST an einen Routine-spezifischen Endpunkt mit einem Bearer-Token

19* **GitHub**: Automatische Ausführung als Reaktion auf Repository-Ereignisse wie Pull Requests oder Releases

20 

21Eine einzelne Routine kann Trigger kombinieren. Beispielsweise kann eine PR-Review-Routine nachts ausgeführt werden, von einem Deploy-Skript ausgelöst werden und auch auf jeden neuen PR reagieren.

22 

23Routinen sind auf Pro-, Max-, Team- und Enterprise-Plänen mit aktiviertem [Claude Code im Web](/de/claude-code-on-the-web) verfügbar. Erstellen und verwalten Sie sie unter [claude.ai/code/routines](https://claude.ai/code/routines) oder über die CLI mit `/schedule`.

24 

25Diese Seite behandelt das Erstellen einer Routine, das Konfigurieren jedes Trigger-Typs, das Verwalten von Ausführungen und wie Nutzungslimits angewendet werden.

26 

27## Beispiel-Anwendungsfälle

28 

29Jedes Beispiel kombiniert einen Trigger-Typ mit der Art von Arbeit, für die Routinen geeignet sind: unbeaufsichtigt, wiederholbar und an ein klares Ergebnis gebunden.

30 

31**Backlog-Wartung.** Ein Schedule-Trigger wird jede Wochnacht gegen Ihren Issue-Tracker über einen Konnektor ausgeführt. Die Routine liest seit der letzten Ausführung geöffnete Issues, wendet Labels an, weist Besitzer basierend auf dem referenzierten Code-Bereich zu und postet eine Zusammenfassung an Slack, damit das Team den Tag mit einer gepflegten Warteschlange beginnt.

32 

33**Alert-Triage.** Ihr Monitoring-Tool ruft den API-Endpunkt der Routine auf, wenn ein Error-Schwellenwert überschritten wird, und übergibt den Alert-Body als `text`. Die Routine zieht den Stack Trace, korreliert ihn mit kürzlichen Commits im Repository und öffnet einen Draft-Pull-Request mit einem vorgeschlagenen Fix und einem Link zurück zum Alert. Der On-Call-Mitarbeiter überprüft den PR, anstatt von einem leeren Terminal zu beginnen.

34 

35**Benutzerdefinierte Code-Review.** Ein GitHub-Trigger wird auf `pull_request.opened` ausgeführt. Die Routine wendet die eigene Review-Checkliste Ihres Teams an, hinterlässt Inline-Kommentare zu Sicherheits-, Performance- und Style-Problemen und fügt einen Zusammenfassungskommentar hinzu, damit sich menschliche Reviewer auf Design statt auf mechanische Überprüfungen konzentrieren können.

36 

37**Deploy-Verifizierung.** Ihre CD-Pipeline ruft den API-Endpunkt der Routine nach jedem Production-Deploy auf. Die Routine führt Smoke-Tests gegen den neuen Build durch, scannt Error-Logs auf Regressionen und postet ein Go oder No-Go zum Release-Channel, bevor das Deploy-Fenster schließt.

38 

39**Dokumentations-Drift.** Ein Schedule-Trigger wird wöchentlich ausgeführt. Die Routine scannt seit der letzten Ausführung zusammengeführte PRs, kennzeichnet Dokumentation, die auf geänderte APIs verweist, und öffnet Update-PRs gegen das Dokumentations-Repository zur Überprüfung durch einen Editor.

40 

41**Library-Port.** Ein GitHub-Trigger wird auf `pull_request.closed` ausgeführt, gefiltert auf zusammengeführte PRs in einem SDK-Repository. Die Routine portiert die Änderung zu einem parallelen SDK in einer anderen Sprache und öffnet einen entsprechenden PR, um die beiden Bibliotheken synchron zu halten, ohne dass ein Mensch jede Änderung neu implementiert.

42 

43Die folgenden Abschnitte führen Sie durch das Erstellen einer Routine und das Konfigurieren jedes dieser Trigger-Typen.

44 

45## Erstellen Sie eine Routine

46 

47Erstellen Sie eine Routine aus dem Web, der Desktop-App oder der CLI. Alle drei Oberflächen schreiben auf dasselbe Cloud-Konto, sodass eine Routine, die Sie in der CLI erstellen, sofort unter claude.ai/code/routines angezeigt wird. Klicken Sie in der Desktop-App auf **Neue Aufgabe** und wählen Sie **Neue Remote-Aufgabe**; wenn Sie stattdessen **Neue lokale Aufgabe** wählen, wird eine [lokale Desktop-geplante Aufgabe](/de/desktop-scheduled-tasks) erstellt, die auf Ihrem Computer ausgeführt wird und keine Routine ist.

48 

49Das Erstellungsformular richtet den Prompt der Routine, Repositories, Umgebung, Konnektoren und Trigger ein.

50 

51Routinen werden autonom als vollständige Claude Code-Cloud-Sitzungen ausgeführt: Es gibt keinen Berechtigungsmodus-Picker und keine Genehmigungsaufforderungen während einer Ausführung. Die Sitzung kann Shell-Befehle ausführen, [Skills](/de/skills) verwenden, die im geklonten Repository committed sind, und alle Konnektoren aufrufen, die Sie einbeziehen. Was eine Routine erreichen kann, wird durch die Repositories bestimmt, die Sie auswählen, und deren Branch-Push-Einstellung, den [Netzwerkzugriff und die Variablen der Umgebung](/de/claude-code-on-the-web#the-cloud-environment) und die Konnektoren, die Sie einbeziehen. Beschränken Sie jeden dieser Punkte auf das, was die Routine tatsächlich benötigt.

52 

53Routinen gehören zu Ihrem individuellen claude.ai-Konto. Sie werden nicht mit Teamkollegen geteilt und zählen gegen die tägliche Ausführungszulage Ihres Kontos. Alles, was eine Routine durch Ihre verbundene GitHub-Identität oder Konnektoren tut, erscheint als Sie: Commits und Pull Requests tragen Ihren GitHub-Benutzer, und Slack-Nachrichten, Linear-Tickets oder andere Konnektor-Aktionen verwenden Ihre verknüpften Konten für diese Dienste.

54 

55### Erstellen aus dem Web

56 

57<Steps>

58 <Step title="Öffnen Sie das Erstellungsformular">

59 Besuchen Sie [claude.ai/code/routines](https://claude.ai/code/routines) und klicken Sie auf **Neue Routine**.

60 </Step>

61 

62 <Step title="Benennen Sie die Routine und schreiben Sie den Prompt">

63 Geben Sie der Routine einen aussagekräftigen Namen und schreiben Sie den Prompt, den Claude jedes Mal ausführt. Der Prompt ist der wichtigste Teil: Die Routine wird autonom ausgeführt, daher muss der Prompt in sich geschlossen und explizit darüber sein, was zu tun ist und wie Erfolg aussieht.

64 

65 Die Prompt-Eingabe enthält einen Modell-Selector. Claude verwendet das ausgewählte Modell bei jeder Ausführung.

66 </Step>

67 

68 <Step title="Wählen Sie Repositories aus">

69 Fügen Sie ein oder mehrere GitHub-Repositories hinzu, in denen Claude arbeiten kann. Jedes Repository wird zu Beginn einer Ausführung geklont, beginnend mit dem Standard-Branch. Claude erstellt `claude/`-prefixierte Branches für seine Änderungen. Um Pushes zu jedem Branch zu ermöglichen, aktivieren Sie **Uneingeschränkte Branch-Pushes zulassen** für dieses Repository.

70 </Step>

71 

72 <Step title="Wählen Sie eine Umgebung aus">

73 Wählen Sie eine [Cloud-Umgebung](/de/claude-code-on-the-web#the-cloud-environment) für die Routine. Umgebungen steuern, worauf die Cloud-Sitzung Zugriff hat:

74 

75 * **Netzwerkzugriff**: Legen Sie die Stufe des Internet-Zugriffs fest, der während jeder Ausführung verfügbar ist

76 * **Umgebungsvariablen**: Stellen Sie API-Schlüssel, Tokens oder andere Geheimnisse bereit, die Claude verwenden kann

77 * **Setup-Skript**: Installieren Sie Abhängigkeiten und Tools, die die Routine benötigt. Das Ergebnis wird [zwischengespeichert](/de/claude-code-on-the-web#environment-caching), sodass das Skript nicht bei jeder Sitzung erneut ausgeführt wird

78 

79 Eine **Standard**-Umgebung wird bereitgestellt. Um eine benutzerdefinierte Umgebung zu verwenden, [erstellen Sie eine](/de/claude-code-on-the-web#the-cloud-environment), bevor Sie die Routine erstellen.

80 </Step>

81 

82 <Step title="Wählen Sie einen Trigger aus">

83 Wählen Sie unter **Trigger auswählen**, wie die Routine startet. Sie können einen Trigger-Typ auswählen oder mehrere kombinieren.

84 

85 <Tabs>

86 <Tab title="Zeitplan">

87 Wählen Sie eine voreingestellte Häufigkeit: stündlich, täglich, Wochentage oder wöchentlich. Siehe [Zeitplan-Trigger hinzufügen](#add-a-schedule-trigger) für Zeitzonenbehandlung, Staffelung und benutzerdefinierte Cron-Intervalle.

88 </Tab>

89 

90 <Tab title="GitHub-Ereignis">

91 Wählen Sie das Repository, das Ereignis, auf das reagiert werden soll, und optionale Filter aus. Siehe [GitHub-Trigger hinzufügen](#add-a-github-trigger) für die vollständige Liste der unterstützten Ereignisse und Filterfelder.

92 </Tab>

93 

94 <Tab title="API">

95 Wählen Sie hier **API** aus und speichern Sie dann die Routine. Die URL und der Token werden nach dem Speichern der Routine generiert, da sie von der Routine-ID abhängen. Siehe [API-Trigger hinzufügen](#add-an-api-trigger), um die URL zu kopieren und einen Token zu generieren.

96 </Tab>

97 </Tabs>

98 </Step>

99 

100 <Step title="Überprüfen Sie Konnektoren">

101 Alle Ihre verbundenen [MCP-Konnektoren](/de/mcp) sind standardmäßig enthalten. Entfernen Sie alle, die die Routine nicht benötigt. Konnektoren geben Claude während jeder Ausführung Zugriff auf externe Dienste wie Slack, Linear oder Google Drive.

102 </Step>

103 

104 <Step title="Erstellen Sie die Routine">

105 Klicken Sie auf **Erstellen**. Die Routine wird in der Liste angezeigt und wird das nächste Mal ausgeführt, wenn einer ihrer Trigger passt. Um eine Ausführung sofort zu starten, klicken Sie auf **Jetzt ausführen** auf der Detail-Seite der Routine.

106 

107 Jede Ausführung erstellt eine neue Sitzung neben Ihren anderen Sitzungen, in der Sie sehen können, was Claude getan hat, Änderungen überprüfen und einen Pull Request erstellen können.

108 </Step>

109</Steps>

110 

111### Erstellen aus der CLI

112 

113Führen Sie `/schedule` in einer beliebigen Sitzung aus, um eine geplante Routine im Gespräch zu erstellen. Sie können auch eine Beschreibung direkt übergeben, wie in `/schedule daily PR review at 9am`. Claude führt Sie durch die gleichen Informationen, die das Web-Formular sammelt, und speichert dann die Routine in Ihrem Konto.

114 

115`/schedule` in der CLI erstellt nur geplante Routinen. Um einen API- oder GitHub-Trigger hinzuzufügen, bearbeiten Sie die Routine im Web unter [claude.ai/code/routines](https://claude.ai/code/routines).

116 

117Die CLI unterstützt auch die Verwaltung vorhandener Routinen. Führen Sie `/schedule list` aus, um alle Routinen anzuzeigen, `/schedule update`, um eine zu ändern, oder `/schedule run`, um sie sofort auszulösen.

118 

119### Erstellen aus der Desktop-App

120 

121Öffnen Sie die **Schedule**-Seite in der Desktop-App, klicken Sie auf **Neue Aufgabe** und wählen Sie **Neue Remote-Aufgabe**. Die Desktop-App zeigt sowohl lokale geplante Aufgaben als auch Routinen im gleichen Raster an. Siehe [Desktop-geplante Aufgaben](/de/desktop-scheduled-tasks) für Details zur lokalen Option.

122 

123## Konfigurieren Sie Trigger

124 

125Eine Routine startet, wenn einer ihrer Trigger passt. Sie können jede Kombination von Schedule-, API- und GitHub-Triggern an die gleiche Routine anhängen und sie jederzeit aus dem Abschnitt **Trigger auswählen** des Bearbeitungsformulars der Routine hinzufügen oder entfernen.

126 

127### Zeitplan-Trigger hinzufügen

128 

129Ein Schedule-Trigger führt die Routine nach einem wiederkehrenden Zeitplan aus. Wählen Sie eine voreingestellte Häufigkeit im Abschnitt **Trigger auswählen**: stündlich, täglich, Wochentage oder wöchentlich. Zeiten werden in Ihrer lokalen Zone eingegeben und automatisch konvertiert, sodass die Routine zu dieser Wanduhr-Zeit unabhängig davon ausgeführt wird, wo sich die Cloud-Infrastruktur befindet.

130 

131Ausführungen können aufgrund von Staffelung einige Minuten nach der geplanten Zeit beginnen. Der Offset ist für jede Routine konsistent.

132 

133Für ein benutzerdefiniertes Intervall wie alle zwei Stunden oder den ersten jedes Monats wählen Sie die nächste Voreinstellung im Formular aus und führen dann `/schedule update` in der CLI aus, um einen spezifischen Cron-Ausdruck festzulegen. Das Mindestintervall beträgt eine Stunde; Ausdrücke, die häufiger ausgeführt werden, werden abgelehnt.

134 

135### API-Trigger hinzufügen

136 

137Ein API-Trigger gibt einer Routine einen dedizierten HTTP-Endpunkt. Das Posten zum Endpunkt mit dem Bearer-Token der Routine startet eine neue Sitzung und gibt eine Sitzungs-URL zurück. Verwenden Sie dies, um Claude Code in Alerting-Systeme, Deploy-Pipelines, interne Tools oder überall dort zu integrieren, wo Sie eine authentifizierte HTTP-Anfrage stellen können.

138 

139API-Trigger werden einer vorhandenen Routine aus dem Web hinzugefügt. Die CLI kann derzeit keine Tokens erstellen oder widerrufen.

140 

141<Steps>

142 <Step title="Öffnen Sie die Routine zur Bearbeitung">

143 Gehen Sie zu [claude.ai/code/routines](https://claude.ai/code/routines), klicken Sie auf die Routine, die Sie über API auslösen möchten, und klicken Sie dann auf das Stiftsymbol, um **Routine bearbeiten** zu öffnen.

144 </Step>

145 

146 <Step title="Fügen Sie einen API-Trigger hinzu">

147 Scrollen Sie zum Abschnitt **Trigger auswählen** unter dem Prompt, klicken Sie auf **Weiteren Trigger hinzufügen** und wählen Sie **API**.

148 </Step>

149 

150 <Step title="Kopieren Sie die URL und generieren Sie einen Token">

151 Das Modal zeigt die URL für diese Routine zusammen mit einem Beispiel-curl-Befehl. Kopieren Sie die URL, klicken Sie dann auf **Token generieren** und kopieren Sie den Token sofort. Der Token wird einmal angezeigt und kann später nicht abgerufen werden, daher speichern Sie ihn an einem sicheren Ort wie dem Secret Store Ihres Alerting-Tools.

152 </Step>

153 

154 <Step title="Rufen Sie den Endpunkt auf">

155 Senden Sie den Token im `Authorization: Bearer`-Header, wenn Sie zur URL posten. Der Abschnitt [Routine auslösen](#trigger-a-routine) unten zeigt ein vollständiges Beispiel.

156 </Step>

157</Steps>

158 

159Jede Routine hat ihren eigenen Token, der nur zum Auslösen dieser Routine begrenzt ist. Um ihn zu rotieren oder zu widerrufen, kehren Sie zum gleichen Modal zurück und klicken Sie auf **Neu generieren** oder **Widerrufen**.

160 

161#### Routine auslösen

162 

163Senden Sie eine POST-Anfrage an den `/fire`-Endpunkt mit dem Bearer-Token im `Authorization`-Header. Der Request-Body akzeptiert ein optionales `text`-Feld für Ausführungs-spezifischen Kontext wie einen Alert-Body oder ein fehlgeschlagenes Log, das der Routine zusammen mit ihrem gespeicherten Prompt übergeben wird. Der Wert ist freier Text und wird nicht geparst: Wenn Sie JSON oder eine andere strukturierte Payload senden, erhält die Routine sie als wörtliche Zeichenkette.

164 

165Das Beispiel unten löst eine Routine aus einer Shell aus:

166 

167```bash theme={null}

168curl -X POST https://api.anthropic.com/v1/claude_code/routines/trig_01ABCDEFGHJKLMNOPQRSTUVW/fire \

169 -H "Authorization: Bearer sk-ant-oat01-xxxxx" \

170 -H "anthropic-beta: experimental-cc-routine-2026-04-01" \

171 -H "anthropic-version: 2023-06-01" \

172 -H "Content-Type: application/json" \

173 -d '{"text": "Sentry alert SEN-4521 fired in prod. Stack trace attached."}'

174```

175 

176Eine erfolgreiche Anfrage gibt einen JSON-Body mit der neuen Sitzungs-ID und URL zurück:

177 

178```json theme={null}

179{

180 "type": "routine_fire",

181 "claude_code_session_id": "session_01HJKLMNOPQRSTUVWXYZ",

182 "claude_code_session_url": "https://claude.ai/code/session_01HJKLMNOPQRSTUVWXYZ"

183}

184```

185 

186Öffnen Sie die Sitzungs-URL in einem Browser, um die Ausführung in Echtzeit zu beobachten, Änderungen zu überprüfen oder das Gespräch manuell fortzusetzen.

187 

188<Warning>

189 Der `/fire`-Endpunkt wird unter dem `experimental-cc-routine-2026-04-01`-Beta-Header ausgeliefert. Request- und Response-Formen, Rate Limits und Token-Semantik können sich ändern, während sich die Funktion in der Forschungsvorschau befindet. Breaking Changes werden hinter neuen datierten Beta-Header-Versionen ausgeliefert, und die zwei neuesten vorherigen Header-Versionen funktionieren weiterhin, damit Aufrufer Zeit zur Migration haben.

190</Warning>

191 

192#### API-Referenz

193 

194Für die vollständige API-Referenz, einschließlich aller Error-Responses, Validierungsregeln und Feldlimits, siehe [Routine über API auslösen](https://platform.claude.com/docs/de/api/claude-code/routines-fire) in der Claude Platform-Dokumentation.

195 

196Der `/fire`-Endpunkt ist nur für claude.ai-Benutzer verfügbar und ist nicht Teil der Claude Platform API-Oberfläche.

197 

198### GitHub-Trigger hinzufügen

199 

200Ein GitHub-Trigger startet automatisch eine neue Sitzung, wenn ein passendes Ereignis in einem verbundenen Repository auftritt. Jedes passende Ereignis startet seine eigene Sitzung.

201 

202<Note>

203 Während der Forschungsvorschau unterliegen GitHub-Webhook-Ereignisse pro-Routine und pro-Konto stündlichen Limits. Ereignisse über dem Limit werden gelöscht, bis sich das Fenster zurückgesetzt hat. Sehen Sie Ihre aktuellen Limits unter [claude.ai/code/routines](https://claude.ai/code/routines).

204</Note>

205 

206GitHub-Trigger werden nur über die Web-UI konfiguriert.

207 

208<Steps>

209 <Step title="Öffnen Sie die Routine zur Bearbeitung">

210 Gehen Sie zu [claude.ai/code/routines](https://claude.ai/code/routines), klicken Sie auf die Routine und klicken Sie dann auf das Stiftsymbol, um **Routine bearbeiten** zu öffnen.

211 </Step>

212 

213 <Step title="Fügen Sie einen GitHub-Ereignis-Trigger hinzu">

214 Scrollen Sie zum Abschnitt **Trigger auswählen**, klicken Sie auf **Weiteren Trigger hinzufügen** und wählen Sie **GitHub-Ereignis**.

215 </Step>

216 

217 <Step title="Installieren Sie die Claude GitHub App">

218 Die Claude GitHub App muss auf dem Repository installiert sein, das Sie abonnieren möchten. Das Trigger-Setup fordert Sie auf, es zu installieren, falls es nicht bereits installiert ist.

219 

220 <Note>

221 Das Ausführen von `/web-setup` in der CLI gewährt Repository-Zugriff zum Klonen, installiert aber nicht die Claude GitHub App und aktiviert nicht die Webhook-Bereitstellung. GitHub-Trigger erfordern die Installation der Claude GitHub App, die das Trigger-Setup Sie auffordert zu tun.

222 </Note>

223 </Step>

224 

225 <Step title="Konfigurieren Sie den Trigger">

226 Wählen Sie das Repository, wählen Sie ein Ereignis aus der Liste [Unterstützte Ereignisse](#supported-events) und fügen Sie optional Filter hinzu. Speichern Sie den Trigger.

227 </Step>

228</Steps>

229 

230#### Unterstützte Ereignisse

231 

232GitHub-Trigger können sich auf eine der folgenden Ereigniskategorien abonnieren. Innerhalb jeder Kategorie können Sie eine spezifische Aktion wie `pull_request.opened` auswählen oder auf alle Aktionen in der Kategorie reagieren.

233 

234| Ereignis | Wird ausgelöst, wenn |

235| :----------- | :---------------------------------------------------------------------------------------------------------- |

236| Pull Request | Ein PR wird geöffnet, geschlossen, zugewiesen, gekennzeichnet, synchronisiert oder anderweitig aktualisiert |

237| Release | Ein Release wird erstellt, veröffentlicht, bearbeitet oder gelöscht |

238 

239#### Pull Requests filtern

240 

241Verwenden Sie Filter, um einzugrenzen, welche Pull Requests eine neue Sitzung starten. Alle Filterbedingungen müssen übereinstimmen, damit die Routine ausgelöst wird. Die verfügbaren Filterfelder sind:

242 

243| Filter | Passt auf |

244| :------------------ | :-------------------------------- |

245| Autor | GitHub-Benutzername des PR-Autors |

246| Titel | PR-Titeltext |

247| Body | PR-Beschreibungstext |

248| Base-Branch | Branch, auf den der PR abzielt |

249| Head-Branch | Branch, von dem der PR kommt |

250| Labels | Auf den PR angewendete Labels |

251| Ist Entwurf | Ob der PR im Entwurfszustand ist |

252| Ist zusammengeführt | Ob der PR zusammengeführt wurde |

253 

254Jeder Filter kombiniert ein Feld mit einem Operator: gleich, enthält, beginnt mit, ist einer von, ist nicht einer von oder passt Regex.

255 

256Der Operator `matches regex` testet den gesamten Feldwert, nicht eine Teilzeichenkette darin. Um einen Titel zu finden, der `hotfix` enthält, schreiben Sie `.*hotfix.*`. Ohne die umgebenden `.*` passt der Filter nur auf einen Titel, der genau `hotfix` ist, ohne etwas davor oder danach. Für wörtliches Substring-Matching ohne Regex-Syntax verwenden Sie stattdessen den Operator `contains`.

257 

258Ein paar Beispiel-Filterkombinationen:

259 

260* **Auth-Modul-Review**: Base-Branch `main`, Head-Branch enthält `auth-provider`. Sendet jeden PR, der Authentifizierung berührt, an einen fokussierten Reviewer.

261* **Nur bereit zur Überprüfung**: Ist Entwurf ist `false`. Überspringt Entwürfe, sodass die Routine nur ausgeführt wird, wenn der PR zur Überprüfung bereit ist.

262* **Label-gesteuerter Backport**: Labels enthalten `needs-backport`. Löst eine Port-zu-anderem-Branch-Routine nur aus, wenn ein Maintainer den PR kennzeichnet.

263 

264#### Wie Sitzungen zu Ereignissen zugeordnet werden

265 

266Jedes passende GitHub-Ereignis startet eine neue Sitzung. Sitzungswiederverwendung über Ereignisse hinweg ist nicht für GitHub-ausgelöste Routinen verfügbar, daher produzieren zwei PR-Updates zwei unabhängige Sitzungen.

267 

268## Verwalten Sie Routinen

269 

270Klicken Sie auf eine Routine in der Liste, um ihre Detail-Seite zu öffnen. Die Detail-Seite zeigt die Repositories der Routine, Konnektoren, Prompt, Schedule, API-Tokens, GitHub-Trigger und eine Liste vergangener Ausführungen.

271 

272### Zeigen Sie Ausführungen an und interagieren Sie mit ihnen

273 

274Klicken Sie auf eine beliebige Ausführung, um sie als vollständige Sitzung zu öffnen. Von dort aus können Sie sehen, was Claude getan hat, Änderungen überprüfen, einen Pull Request erstellen oder das Gespräch fortsetzen. Jede Ausführungs-Sitzung funktioniert wie jede andere Sitzung: Verwenden Sie das Dropdown-Menü neben dem Sitzungstitel, um sie umzubenennen, zu archivieren oder zu löschen.

275 

276### Bearbeiten und steuern Sie Routinen

277 

278Von der Routine-Detail-Seite können Sie:

279 

280* Auf **Jetzt ausführen** klicken, um eine Ausführung sofort zu starten, ohne auf die nächste geplante Zeit zu warten.

281* Den Toggle im Abschnitt **Wiederholt** verwenden, um den Schedule zu pausieren oder fortzusetzen. Pausierte Routinen behalten ihre Konfiguration, werden aber nicht ausgeführt, bis Sie sie erneut aktivieren.

282* Auf das Stiftsymbol klicken, um **Routine bearbeiten** zu öffnen und den Namen, Prompt, Repositories, Umgebung, Konnektoren oder einen der Trigger der Routine zu ändern. Der Abschnitt **Trigger auswählen** ist der Ort, an dem Sie Schedules, API-Tokens und GitHub-Ereignis-Trigger hinzufügen oder entfernen.

283* Auf das Löschsymbol klicken, um die Routine zu entfernen. Vergangene Sitzungen, die von der Routine erstellt wurden, bleiben in Ihrer Sitzungsliste.

284 

285### Repositories und Branch-Berechtigungen

286 

287Routinen benötigen GitHub-Zugriff zum Klonen von Repositories. Wenn Sie eine Routine aus der CLI mit `/schedule` erstellen, überprüft Claude, ob Ihr Konto GitHub verbunden hat, und fordert Sie auf, `/web-setup` auszuführen, falls nicht. Siehe [GitHub-Authentifizierungsoptionen](/de/claude-code-on-the-web#github-authentication-options) für die zwei Möglichkeiten, Zugriff zu gewähren.

288 

289Jedes Repository, das Sie hinzufügen, wird bei jeder Ausführung geklont. Claude startet vom Standard-Branch des Repositories, es sei denn, Ihr Prompt gibt etwas anderes an.

290 

291Standardmäßig kann Claude nur zu Branches mit dem Präfix `claude/` pushen. Dies verhindert, dass Routinen versehentlich geschützte oder langlebige Branches ändern. Um diese Einschränkung für ein bestimmtes Repository zu entfernen, aktivieren Sie **Uneingeschränkte Branch-Pushes zulassen** für dieses Repository beim Erstellen oder Bearbeiten der Routine.

292 

293### Konnektoren

294 

295Routinen können Ihre verbundenen MCP-Konnektoren verwenden, um während jeder Ausführung von externen Diensten zu lesen und zu schreiben. Beispielsweise könnte eine Routine, die Support-Anfragen triagiert, aus einem Slack-Channel lesen und Issues in Linear erstellen.

296 

297Wenn Sie eine Routine erstellen, sind alle Ihre derzeit verbundenen Konnektoren standardmäßig enthalten. Entfernen Sie alle, die nicht benötigt werden, um zu begrenzen, auf welche Tools Claude während der Ausführung Zugriff hat. Sie können auch Konnektoren direkt aus dem Routine-Formular hinzufügen.

298 

299Um Konnektoren außerhalb des Routine-Formulars zu verwalten oder hinzuzufügen, besuchen Sie **Einstellungen > Konnektoren** auf claude.ai oder verwenden Sie `/schedule update` in der CLI.

300 

301### Umgebungen

302 

303Jede Routine wird in einer [Cloud-Umgebung](/de/claude-code-on-the-web#the-cloud-environment) ausgeführt, die Netzwerkzugriff, Umgebungsvariablen und Setup-Skripte steuert. Konfigurieren Sie Umgebungen vor dem Erstellen einer Routine, um Claude Zugriff auf APIs zu geben, Abhängigkeiten zu installieren oder den Netzwerk-Umfang zu beschränken. Siehe [Cloud-Umgebung](/de/claude-code-on-the-web#the-cloud-environment) für das vollständige Setup-Handbuch.

304 

305## Nutzung und Limits

306 

307Routinen verbrauchen Abonnement-Nutzung auf die gleiche Weise wie interaktive Sitzungen. Zusätzlich zu den Standard-Abonnement-Limits haben Routinen eine tägliche Obergrenze für die Anzahl der Ausführungen, die pro Konto starten können. Sehen Sie Ihren aktuellen Verbrauch und verbleibende tägliche Routine-Ausführungen unter [claude.ai/code/routines](https://claude.ai/code/routines) oder [claude.ai/settings/usage](https://claude.ai/settings/usage).

308 

309Wenn eine Routine das tägliche Limit oder Ihr Abonnement-Nutzungslimit erreicht, können Organisationen mit aktivierter zusätzlicher Nutzung Routinen weiterhin auf gemessener Überschreitung ausführen. Ohne zusätzliche Nutzung werden weitere Ausführungen abgelehnt, bis sich das Fenster zurückgesetzt hat. Aktivieren Sie zusätzliche Nutzung unter **Einstellungen > Abrechnung** auf claude.ai.

310 

311## Verwandte Ressourcen

312 

313* [`/loop` und In-Session-Planung](/de/scheduled-tasks): Planen Sie lokale Aufgaben innerhalb einer offenen CLI-Sitzung

314* [Desktop-geplante Aufgaben](/de/desktop-scheduled-tasks): Lokale geplante Aufgaben, die auf Ihrem Computer mit Zugriff auf lokale Dateien ausgeführt werden

315* [Cloud-Umgebung](/de/claude-code-on-the-web#the-cloud-environment): Konfigurieren Sie die Laufzeitumgebung für Cloud-Sitzungen

316* [MCP-Konnektoren](/de/mcp): Verbinden Sie externe Dienste wie Slack, Linear und Google Drive

317* [GitHub Actions](/de/github-actions): Führen Sie Claude in Ihrer CI-Pipeline bei Repository-Ereignissen aus

sandboxing.md +329 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Sandboxing

6 

7> Erfahren Sie, wie das Sandboxing-Tool von Claude Code Dateisystem- und Netzwerkisolation für sicherere und autonomere Agent-Ausführung bietet.

8 

9## Übersicht

10 

11Claude Code verfügt über natives Sandboxing, um eine sicherere Umgebung für die Agent-Ausführung bereitzustellen und die Notwendigkeit ständiger Genehmigungseingaben zu reduzieren. Anstatt für jeden Bash-Befehl eine Genehmigung zu erbitten, erstellt Sandboxing vordefinierte Grenzen, in denen Claude Code mit reduziertem Risiko freier arbeiten kann.

12 

13Das Sandboxing-Bash-Tool verwendet Betriebssystem-Primitive, um sowohl Dateisystem- als auch Netzwerkisolation durchzusetzen.

14 

15## Warum Sandboxing wichtig ist

16 

17Die traditionelle genehmigungsbasierte Sicherheit erfordert ständige Benutzerbestätigung für Bash-Befehle. Während dies Kontrolle bietet, kann es zu Folgendem führen:

18 

19* **Genehmigungsmüdigkeit**: Wiederholtes Klicken auf „Genehmigen" kann dazu führen, dass Benutzer weniger Aufmerksamkeit auf das legen, was sie genehmigen

20* **Reduzierte Produktivität**: Ständige Unterbrechungen verlangsamen Entwicklungs-Workflows

21* **Begrenzte Autonomie**: Claude Code kann nicht effizient arbeiten, wenn es auf Genehmigungen wartet

22 

23Sandboxing adressiert diese Herausforderungen durch:

24 

251. **Klare Grenzen definieren**: Geben Sie genau an, auf welche Verzeichnisse und Netzwerk-Hosts Claude Code zugreifen kann

262. **Genehmigungseingaben reduzieren**: Sichere Befehle innerhalb der Sandbox erfordern keine Genehmigung

273. **Sicherheit beibehalten**: Versuche, auf Ressourcen außerhalb der Sandbox zuzugreifen, lösen sofortige Benachrichtigungen aus

284. **Autonomie ermöglichen**: Claude Code kann unabhängiger innerhalb definierter Grenzen arbeiten

29 

30<Warning>

31 Effektives Sandboxing erfordert **sowohl** Dateisystem- als auch Netzwerkisolation. Ohne Netzwerkisolation könnte ein kompromittierter Agent sensible Dateien wie SSH-Schlüssel exfiltrieren. Ohne Dateisystem-Isolation könnte ein kompromittierter Agent System-Ressourcen manipulieren, um Netzwerkzugriff zu erlangen. Bei der Konfiguration von Sandboxing ist es wichtig sicherzustellen, dass Ihre konfigurierten Einstellungen keine Umgehungen in diesen Systemen schaffen.

32</Warning>

33 

34## Wie es funktioniert

35 

36### Dateisystem-Isolation

37 

38Das Sandboxing-Bash-Tool beschränkt den Dateisystem-Zugriff auf spezifische Verzeichnisse:

39 

40* **Standard-Schreibverhalten**: Lese- und Schreibzugriff auf das aktuelle Arbeitsverzeichnis und seine Unterverzeichnisse

41* **Standard-Leseverhalten**: Lesezugriff auf den gesamten Computer, außer bestimmten blockierten Verzeichnissen

42* **Blockierter Zugriff**: Kann Dateien außerhalb des aktuellen Arbeitsverzeichnisses nicht ohne explizite Genehmigung ändern

43* **Konfigurierbar**: Definieren Sie benutzerdefinierte zulässige und blockierte Pfade durch Einstellungen

44 

45Sie können Schreibzugriff auf zusätzliche Pfade mit `sandbox.filesystem.allowWrite` in Ihren Einstellungen gewähren. Diese Einschränkungen werden auf OS-Ebene durchgesetzt (Seatbelt auf macOS, bubblewrap auf Linux), daher gelten sie für alle Subprozess-Befehle, einschließlich Tools wie `kubectl`, `terraform` und `npm`, nicht nur für Claudes Datei-Tools.

46 

47### Netzwerk-Isolation

48 

49Der Netzwerkzugriff wird durch einen Proxy-Server gesteuert, der außerhalb der Sandbox läuft:

50 

51* **Domain-Einschränkungen**: Nur genehmigte Domains können zugegriffen werden

52* **Benutzerbestätigung**: Neue Domain-Anfragen lösen Genehmigungseingaben aus (es sei denn, [`allowManagedDomainsOnly`](/de/settings#sandbox-settings) ist aktiviert, was nicht zulässige Domains automatisch blockiert)

53* **Benutzerdefinierte Proxy-Unterstützung**: Fortgeschrittene Benutzer können benutzerdefinierte Regeln für ausgehenden Datenverkehr implementieren

54* **Umfassende Abdeckung**: Einschränkungen gelten für alle Skripte, Programme und Subprozesse, die durch Befehle erzeugt werden

55 

56### OS-Level-Durchsetzung

57 

58Das Sandboxing-Bash-Tool nutzt Betriebssystem-Sicherheits-Primitive:

59 

60* **macOS**: Verwendet Seatbelt für Sandbox-Durchsetzung

61* **Linux**: Verwendet [bubblewrap](https://github.com/containers/bubblewrap) für Isolation

62* **WSL2**: Verwendet bubblewrap, wie Linux

63 

64WSL1 wird nicht unterstützt, da bubblewrap Kernel-Features erfordert, die nur in WSL2 verfügbar sind.

65 

66Diese OS-Level-Einschränkungen stellen sicher, dass alle Kindprozesse, die durch Claudes Befehle erzeugt werden, die gleichen Sicherheitsgrenzen erben.

67 

68## Erste Schritte

69 

70### Voraussetzungen

71 

72Auf **macOS** funktioniert Sandboxing sofort mit dem integrierten Seatbelt-Framework.

73 

74Auf **Linux und WSL2** installieren Sie zuerst die erforderlichen Pakete:

75 

76<Tabs>

77 <Tab title="Ubuntu/Debian">

78 ```bash theme={null}

79 sudo apt-get install bubblewrap socat

80 ```

81 </Tab>

82 

83 <Tab title="Fedora">

84 ```bash theme={null}

85 sudo dnf install bubblewrap socat

86 ```

87 </Tab>

88</Tabs>

89 

90WSL1 unterstützt Sandboxing nicht, da es die erforderlichen Linux-Namespace-Primitive fehlen. Wenn Sie `Sandboxing requires WSL2` sehen, aktualisieren Sie Ihre Distribution auf WSL2 oder führen Sie Claude Code ohne Sandboxing aus.

91 

92Auf WSL2 können Sandbox-Befehle keine Windows-Binärdateien wie `cmd.exe`, `powershell.exe` oder etwas unter `/mnt/c/` starten. WSL übergibt diese über einen Unix-Socket an den Windows-Host, den die Sandbox blockiert. Wenn ein Befehl eine Windows-Binärdatei aufrufen muss, fügen Sie ihn zu [`excludedCommands`](/de/settings#sandbox-settings) hinzu, damit er außerhalb der Sandbox ausgeführt wird.

93 

94### Sandboxing aktivieren

95 

96Sie können Sandboxing durch Ausführung des `/sandbox`-Befehls aktivieren:

97 

98```text theme={null}

99/sandbox

100```

101 

102Dies öffnet ein Menü, in dem Sie zwischen Sandbox-Modi wählen können. Wenn erforderliche Abhängigkeiten fehlen (wie `bubblewrap` oder `socat` auf Linux), zeigt das Menü Installationsanweisungen für Ihre Plattform an.

103 

104Standardmäßig zeigt Claude Code eine Warnung an und führt Befehle ohne Sandboxing aus, wenn die Sandbox nicht gestartet werden kann (fehlende Abhängigkeiten oder nicht unterstützte Plattform). Um dies stattdessen zu einem Hard Failure zu machen, setzen Sie [`sandbox.failIfUnavailable`](/de/settings#sandbox-settings) auf `true`. Dies ist für verwaltete Bereitstellungen vorgesehen, die Sandboxing als Sicherheits-Gate erfordern.

105 

106### Sandbox-Modi

107 

108Claude Code bietet zwei Sandbox-Modi:

109 

110**Auto-Allow-Modus**: Bash-Befehle werden versuchen, innerhalb der Sandbox ausgeführt zu werden und sind automatisch zulässig, ohne dass eine Genehmigung erforderlich ist. Befehle, die nicht in der Sandbox ausgeführt werden können (wie solche, die Netzwerkzugriff auf nicht zulässige Hosts benötigen), fallen auf den regulären Genehmigungsfluss zurück. Explizite Deny-Regeln werden immer respektiert, und `rm`- oder `rmdir`-Befehle, die auf `/`, Ihr Home-Verzeichnis oder andere kritische Systempfade abzielen, lösen immer noch eine Genehmigungsaufforderung aus. Ask-Regeln gelten nur für Befehle, die auf den regulären Genehmigungsfluss zurückfallen.

111 

112**Regulärer Genehmigungsmodus**: Alle Bash-Befehle durchlaufen den Standard-Genehmigungsfluss, auch wenn sie in der Sandbox ausgeführt werden. Dies bietet mehr Kontrolle, erfordert aber mehr Genehmigungen.

113 

114In beiden Modi erzwingt die Sandbox die gleichen Dateisystem- und Netzwerk-Einschränkungen. Der Unterschied liegt nur darin, ob Sandbox-Befehle automatisch genehmigt oder explizit genehmigt werden müssen.

115 

116<Info>

117 Der Auto-Allow-Modus funktioniert unabhängig von Ihrer Genehmigungsmodus-Einstellung. Selbst wenn Sie sich nicht im „Bearbeitungen akzeptieren"-Modus befinden, werden Sandbox-Bash-Befehle automatisch ausgeführt, wenn Auto-Allow aktiviert ist. Dies bedeutet, dass Bash-Befehle, die Dateien innerhalb der Sandbox-Grenzen ändern, ohne Eingabeaufforderung ausgeführt werden, auch wenn Datei-Bearbeitungs-Tools normalerweise eine Genehmigung erfordern würden.

118</Info>

119 

120### Sandboxing konfigurieren

121 

122Passen Sie das Sandbox-Verhalten durch Ihre `settings.json`-Datei an. Siehe [Einstellungen](/de/settings#sandbox-settings) für eine vollständige Konfigurationsreferenz.

123 

124#### Schreibzugriff für Subprozesse auf spezifische Pfade gewähren

125 

126Standardmäßig können Sandbox-Befehle nur in das aktuelle Arbeitsverzeichnis schreiben. Wenn Subprozess-Befehle wie `kubectl`, `terraform` oder `npm` außerhalb des Projektverzeichnisses schreiben müssen, verwenden Sie `sandbox.filesystem.allowWrite`, um Zugriff auf spezifische Pfade zu gewähren:

127 

128```json theme={null}

129{

130 "sandbox": {

131 "enabled": true,

132 "filesystem": {

133 "allowWrite": ["~/.kube", "/tmp/build"]

134 }

135 }

136}

137```

138 

139Diese Pfade werden auf OS-Ebene durchgesetzt, daher respektieren alle Befehle, die innerhalb der Sandbox ausgeführt werden, einschließlich ihrer Kindprozesse, diese. Dies ist der empfohlene Ansatz, wenn ein Tool Schreibzugriff auf einen bestimmten Ort benötigt, anstatt das Tool mit `excludedCommands` vollständig aus der Sandbox auszuschließen.

140 

141Wenn `allowWrite` (oder `denyWrite`/`denyRead`/`allowRead`) in mehreren [Einstellungs-Scopes](/de/settings#settings-precedence) definiert ist, werden die Arrays **zusammengeführt**, was bedeutet, dass Pfade aus jedem Scope kombiniert werden, nicht ersetzt. Wenn beispielsweise verwaltete Einstellungen Schreibvorgänge zu `/opt/company-tools` zulassen und ein Benutzer `~/.kube` in seinen persönlichen Einstellungen hinzufügt, sind beide Pfade in der endgültigen Sandbox-Konfiguration enthalten. Dies bedeutet, dass Benutzer und Projekte die Liste erweitern können, ohne Pfade zu duplizieren oder zu überschreiben, die durch höher priorisierte Scopes gesetzt sind.

142 

143Pfad-Präfixe steuern, wie Pfade aufgelöst werden:

144 

145| Präfix | Bedeutung | Beispiel |

146| :-------------------- | :------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------- |

147| `/` | Absoluter Pfad vom Dateisystem-Root | `/tmp/build` bleibt `/tmp/build` |

148| `~/` | Relativ zum Home-Verzeichnis | `~/.kube` wird zu `$HOME/.kube` |

149| `./` oder kein Präfix | Relativ zum Projekt-Root für Projekt-Einstellungen oder zu `~/.claude` für Benutzer-Einstellungen | `./output` in `.claude/settings.json` wird zu `<project-root>/output` |

150 

151Das ältere `//path`-Präfix für absolute Pfade funktioniert immer noch. Wenn Sie zuvor `/path` erwartet haben, um projekt-relativ aufgelöst zu werden, wechseln Sie zu `./path`. Diese Syntax unterscheidet sich von [Read- und Edit-Genehmigungsregeln](/de/permissions#read-and-edit), die `//path` für absolut und `/path` für projekt-relativ verwenden. Sandbox-Dateisystem-Pfade verwenden Standard-Konventionen: `/tmp/build` ist ein absoluter Pfad.

152 

153Sie können auch Schreib- oder Lesezugriff mit `sandbox.filesystem.denyWrite` und `sandbox.filesystem.denyRead` blockieren. Diese werden mit allen Pfaden aus `Edit(...)` und `Read(...)` Genehmigungsregeln zusammengeführt. Um Lesezugriff auf spezifische Pfade innerhalb einer blockierten Region erneut zuzulassen, verwenden Sie `sandbox.filesystem.allowRead`, das Vorrang vor `denyRead` hat. Wenn `allowManagedReadPathsOnly` in verwalteten Einstellungen aktiviert ist, werden nur verwaltete `allowRead`-Einträge respektiert; Benutzer-, Projekt- und lokale `allowRead`-Einträge werden ignoriert. `denyRead` wird immer noch aus allen Quellen zusammengeführt.

154 

155Um beispielsweise das Lesen aus dem gesamten Home-Verzeichnis zu blockieren und gleichzeitig Lesevorgänge aus dem aktuellen Projekt zuzulassen, fügen Sie dies zu Ihrer Projekt-Datei `.claude/settings.json` hinzu:

156 

157```json theme={null}

158{

159 "sandbox": {

160 "enabled": true,

161 "filesystem": {

162 "denyRead": ["~/"],

163 "allowRead": ["."]

164 }

165 }

166}

167```

168 

169Das `.` in `allowRead` wird zum Projekt-Root aufgelöst, da diese Konfiguration in Projekt-Einstellungen lebt. Wenn Sie die gleiche Konfiguration in `~/.claude/settings.json` platzieren würden, würde `.` stattdessen zu `~/.claude` aufgelöst, und Projektdateien würden durch die `denyRead`-Regel blockiert bleiben.

170 

171<Tip>

172 Nicht alle Befehle sind sofort mit Sandboxing kompatibel. Einige Hinweise, die Ihnen helfen können, das Beste aus der Sandbox herauszuholen:

173 

174 * Viele CLI-Tools erfordern Zugriff auf bestimmte Hosts. Wenn Sie diese Tools verwenden, werden sie um Genehmigung bitten, auf bestimmte Hosts zuzugreifen. Die Gewährung der Genehmigung ermöglicht ihnen, jetzt und in Zukunft auf diese Hosts zuzugreifen, was ihnen ermöglicht, sicher innerhalb der Sandbox ausgeführt zu werden.

175 * `watchman` ist nicht kompatibel mit der Ausführung in der Sandbox. Wenn Sie `jest` ausführen, erwägen Sie die Verwendung von `jest --no-watchman`

176 * `docker` ist nicht kompatibel mit der Ausführung in der Sandbox. Erwägen Sie, `docker *` in `excludedCommands` anzugeben, um zu erzwingen, dass es außerhalb der Sandbox ausgeführt wird.

177</Tip>

178 

179<Note>

180 Claude Code enthält einen absichtlichen Escape-Hatch-Mechanismus, der es Befehlen ermöglicht, außerhalb der Sandbox ausgeführt zu werden, wenn nötig. Wenn ein Befehl aufgrund von Sandbox-Einschränkungen fehlschlägt (wie Netzwerkverbindungsprobleme oder inkompatible Tools), wird Claude aufgefordert, den Fehler zu analysieren und kann den Befehl mit dem `dangerouslyDisableSandbox`-Parameter erneut versuchen. Befehle, die diesen Parameter verwenden, durchlaufen den normalen Claude Code-Genehmigungsfluss, der Benutzererlaubnis zur Ausführung erfordert. Dies ermöglicht Claude Code, Grenzfälle zu handhaben, in denen bestimmte Tools oder Netzwerkoperationen nicht innerhalb von Sandbox-Einschränkungen funktionieren können.

181 

182 Sie können diesen Escape-Hatch deaktivieren, indem Sie `"allowUnsandboxedCommands": false` in Ihren [Sandbox-Einstellungen](/de/settings#sandbox-settings) setzen. Wenn deaktiviert, wird der `dangerouslyDisableSandbox`-Parameter vollständig ignoriert und alle Befehle müssen in der Sandbox ausgeführt oder explizit in `excludedCommands` aufgelistet werden.

183</Note>

184 

185## Sicherheitsvorteile

186 

187### Schutz vor Prompt-Injection

188 

189Selbst wenn ein Angreifer Claude Code's Verhalten erfolgreich durch Prompt-Injection manipuliert, stellt die Sandbox sicher, dass Ihr System sicher bleibt:

190 

191**Dateisystem-Schutz:**

192 

193* Kann kritische Konfigurationsdateien wie `~/.bashrc` nicht ändern

194* Kann System-Level-Dateien in `/bin/` nicht ändern

195* Kann Dateien nicht lesen, die in Ihren [Claude-Genehmigungseinstellungen](/de/permissions#manage-permissions) blockiert sind

196 

197**Netzwerk-Schutz:**

198 

199* Kann Daten nicht zu von Angreifern kontrollierten Servern exfiltrieren

200* Kann bösartige Skripte nicht von nicht autorisierten Domains herunterladen

201* Kann keine unerwarteten API-Aufrufe an nicht genehmigten Diensten tätigen

202* Kann keine Domains kontaktieren, die nicht explizit zulässig sind

203 

204**Überwachung und Kontrolle:**

205 

206* Alle Zugriffversuche außerhalb der Sandbox werden auf OS-Ebene blockiert

207* Sie erhalten sofortige Benachrichtigungen, wenn Grenzen getestet werden

208* Sie können wählen, zu verweigern, einmal zuzulassen oder Ihre Konfiguration dauerhaft zu aktualisieren

209 

210### Reduzierte Angriffsfläche

211 

212Sandboxing begrenzt den potenziellen Schaden durch:

213 

214* **Bösartige Abhängigkeiten**: NPM-Pakete oder andere Abhängigkeiten mit schädlichem Code

215* **Kompromittierte Skripte**: Build-Skripte oder Tools mit Sicherheitslücken

216* **Social Engineering**: Angriffe, die Benutzer dazu verleiten, gefährliche Befehle auszuführen

217* **Prompt-Injection**: Angriffe, die Claude dazu verleiten, gefährliche Befehle auszuführen

218 

219### Transparente Bedienung

220 

221Wenn Claude Code versucht, auf Netzwerk-Ressourcen außerhalb der Sandbox zuzugreifen:

222 

2231. Der Vorgang wird auf OS-Ebene blockiert

2242. Sie erhalten eine sofortige Benachrichtigung

2253. Sie können wählen zu:

226 * Die Anfrage verweigern

227 * Sie einmal zuzulassen

228 * Ihre Sandbox-Konfiguration aktualisieren, um sie dauerhaft zuzulassen

229 

230## Sicherheitsbeschränkungen

231 

232* Netzwerk-Sandboxing-Einschränkungen: Das Netzwerk-Filtersystem funktioniert durch Einschränkung der Domains, mit denen Prozesse verbunden werden dürfen. Es inspiziert den Datenverkehr, der durch den Proxy fließt, nicht anderweitig, und Benutzer sind verantwortlich dafür, dass sie nur vertrauenswürdige Domains in ihrer Richtlinie zulassen.

233 

234<Warning>

235 Benutzer sollten sich der potenziellen Risiken bewusst sein, die sich aus der Zulassung breiter Domains wie `github.com` ergeben, die Datenexfiltration ermöglichen können. Auch kann es in einigen Fällen möglich sein, das Netzwerk-Filtern durch [Domain Fronting](https://en.wikipedia.org/wiki/Domain_fronting) zu umgehen.

236</Warning>

237 

238* Privilege Escalation über Unix-Sockets: Die `allowUnixSockets`-Konfiguration kann versehentlich Zugriff auf leistungsstarke System-Services gewähren, die zu Sandbox-Umgehungen führen könnten. Wenn sie beispielsweise verwendet wird, um Zugriff auf `/var/run/docker.sock` zu zulassen, würde dies effektiv Zugriff auf das Host-System durch Ausnutzung des Docker-Sockets gewähren. Benutzer werden ermutigt, sorgfältig zu überlegen, welche Unix-Sockets sie durch die Sandbox zulassen.

239* Dateisystem-Genehmigungseskalation: Übermäßig breite Dateisystem-Schreibgenehmigungen können Privilege-Escalation-Angriffe ermöglichen. Das Zulassen von Schreibvorgängen zu Verzeichnissen, die ausführbare Dateien in `$PATH`, System-Konfigurationsverzeichnisse oder Benutzer-Shell-Konfigurationsdateien (`.bashrc`, `.zshrc`) enthalten, kann zu Code-Ausführung in verschiedenen Sicherheitskontexten führen, wenn andere Benutzer oder System-Prozesse auf diese Dateien zugreifen.

240* Linux-Sandbox-Stärke: Die Linux-Implementierung bietet starke Dateisystem- und Netzwerk-Isolation, enthält aber einen `enableWeakerNestedSandbox`-Modus, der es ermöglicht, in Docker-Umgebungen ohne privilegierte Namespaces zu funktionieren. Diese Option schwächt die Sicherheit erheblich ab und sollte nur in Fällen verwendet werden, in denen zusätzliche Isolation anderweitig durchgesetzt wird.

241 

242## Wie Sandboxing sich auf Genehmigungen bezieht

243 

244Sandboxing und [Genehmigungen](/de/permissions) sind komplementäre Sicherheitsebenen, die zusammenarbeiten:

245 

246* **Genehmigungen** steuern, welche Tools Claude Code verwenden kann, und werden evaluiert, bevor ein Tool ausgeführt wird. Sie gelten für alle Tools: Bash, Read, Edit, WebFetch, MCP und andere.

247* **Sandboxing** bietet OS-Level-Durchsetzung, die einschränkt, worauf Bash-Befehle auf Dateisystem- und Netzwerk-Ebene zugreifen können. Es gilt nur für Bash-Befehle und ihre Kindprozesse.

248 

249Dateisystem- und Netzwerk-Einschränkungen werden sowohl durch Sandbox-Einstellungen als auch durch Genehmigungsregeln konfiguriert:

250 

251* Verwenden Sie `sandbox.filesystem.allowWrite`, um Subprozess-Schreibzugriff auf Pfade außerhalb des Arbeitsverzeichnisses zu gewähren

252* Verwenden Sie `sandbox.filesystem.denyWrite` und `sandbox.filesystem.denyRead`, um Subprozess-Zugriff auf spezifische Pfade zu blockieren

253* Verwenden Sie `sandbox.filesystem.allowRead`, um Lesezugriff auf spezifische Pfade innerhalb einer `denyRead`-Region erneut zuzulassen

254* Verwenden Sie `Read` und `Edit` Deny-Regeln, um Zugriff auf spezifische Dateien oder Verzeichnisse zu blockieren

255* Verwenden Sie `WebFetch` Allow/Deny-Regeln, um Domain-Zugriff zu steuern

256* Verwenden Sie Sandbox `allowedDomains`, um zu steuern, auf welche Domains Bash-Befehle zugreifen können

257* Verwenden Sie Sandbox `deniedDomains`, um spezifische Domains zu blockieren, auch wenn ein breiteres `allowedDomains`-Wildcard sie sonst zulassen würde

258 

259Pfade aus beiden `sandbox.filesystem`-Einstellungen und Genehmigungsregeln werden zusammengeführt in die endgültige Sandbox-Konfiguration.

260 

261Dieses [Repository](https://github.com/anthropics/claude-code/tree/main/examples/settings) enthält Starter-Einstellungskonfigurationen für häufige Bereitstellungsszenarien, einschließlich Sandbox-spezifischer Beispiele. Verwenden Sie diese als Ausgangspunkte und passen Sie sie an Ihre Anforderungen an.

262 

263## Erweiterte Verwendung

264 

265### Benutzerdefinierte Proxy-Konfiguration

266 

267Für Organisationen, die erweiterte Netzwerk-Sicherheit benötigen, können Sie einen benutzerdefinierten Proxy implementieren, um:

268 

269* HTTPS-Datenverkehr zu entschlüsseln und zu inspizieren

270* Benutzerdefinierte Filterregeln anzuwenden

271* Alle Netzwerk-Anfragen zu protokollieren

272* Mit bestehender Sicherheitsinfrastruktur zu integrieren

273 

274```json theme={null}

275{

276 "sandbox": {

277 "network": {

278 "httpProxyPort": 8080,

279 "socksProxyPort": 8081

280 }

281 }

282}

283```

284 

285### Integration mit bestehenden Sicherheits-Tools

286 

287Das Sandboxing-Bash-Tool funktioniert zusammen mit:

288 

289* **Genehmigungsregeln**: Kombinieren Sie mit [Genehmigungseinstellungen](/de/permissions) für Defense-in-Depth

290* **Entwicklungs-Container**: Verwenden Sie mit [devcontainers](/de/devcontainer) für zusätzliche Isolation

291* **Enterprise-Richtlinien**: Erzwingen Sie Sandbox-Konfigurationen durch [verwaltete Einstellungen](/de/settings#settings-precedence)

292 

293## Best Practices

294 

2951. **Beginnen Sie restriktiv**: Beginnen Sie mit minimalen Genehmigungen und erweitern Sie nach Bedarf

2962. **Überwachen Sie Protokolle**: Überprüfen Sie Sandbox-Verletzungsversuche, um Claude Code's Anforderungen zu verstehen

2973. **Verwenden Sie umgebungsspezifische Konfigurationen**: Unterschiedliche Sandbox-Regeln für Entwicklungs- vs. Produktionsumgebungen

2984. **Kombinieren Sie mit Genehmigungen**: Verwenden Sie Sandboxing zusammen mit IAM-Richtlinien für umfassende Sicherheit

2995. **Testen Sie Konfigurationen**: Überprüfen Sie, dass Ihre Sandbox-Einstellungen legitime Workflows nicht blockieren

300 

301## Open Source

302 

303Die Sandbox-Runtime ist als Open-Source-npm-Paket für die Verwendung in Ihren eigenen Agent-Projekten verfügbar. Dies ermöglicht der breiteren AI-Agent-Community, sicherere und autonomere Systeme zu bauen. Dies kann auch verwendet werden, um andere Programme zu sandboxen, die Sie ausführen möchten. Um beispielsweise einen MCP-Server zu sandboxen, könnten Sie ausführen:

304 

305```bash theme={null}

306npx @anthropic-ai/sandbox-runtime <command-to-sandbox>

307```

308 

309Für Implementierungsdetails und Quellcode besuchen Sie das [GitHub-Repository](https://github.com/anthropic-experimental/sandbox-runtime).

310 

311## Einschränkungen

312 

313* **Performance-Overhead**: Minimal, aber einige Dateisystem-Operationen können leicht langsamer sein

314* **Kompatibilität**: Einige Tools, die spezifische System-Zugriffsmuster erfordern, benötigen möglicherweise Konfigurationsanpassungen oder müssen sogar außerhalb der Sandbox ausgeführt werden

315* **Plattform-Unterstützung**: Unterstützt macOS, Linux und WSL2. WSL1 wird nicht unterstützt. Native Windows-Unterstützung ist geplant.

316 

317## Was Sandboxing nicht abdeckt

318 

319Die Sandbox isoliert Bash-Subprozesse. Andere Tools funktionieren unter verschiedenen Grenzen:

320 

321* **Integrierte Datei-Tools**: Read, Edit und Write verwenden das Genehmigungssystem direkt, anstatt durch die Sandbox zu laufen. Siehe [Genehmigungen](/de/permissions).

322* **Computer-Nutzung**: Wenn Claude Apps öffnet und Ihren Bildschirm steuert, läuft es auf Ihrem tatsächlichen Desktop, anstatt in einer isolierten Umgebung. Pro-App-Genehmigungseingaben kontrollieren jede Anwendung. Siehe [Computer-Nutzung in der CLI](/de/computer-use) oder [Computer-Nutzung auf Desktop](/de/desktop#let-claude-use-your-computer).

323 

324## Siehe auch

325 

326* [Sicherheit](/de/security) - Umfassende Sicherheitsfeatures und Best Practices

327* [Genehmigungen](/de/permissions) - Genehmigungskonfiguration und Zugriffskontrolle

328* [Einstellungen](/de/settings) - Vollständige Konfigurationsreferenz

329* [CLI-Referenz](/de/cli-reference) - Befehlszeilenoptionen

scheduled-tasks.md +213 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Prompts nach Zeitplan ausführen

6 

7> Verwenden Sie /loop und die Cron-Planungstools, um Prompts wiederholt auszuführen, den Status abzurufen oder einmalige Erinnerungen innerhalb einer Claude Code-Sitzung zu setzen.

8 

9<Note>

10 Geplante Aufgaben erfordern Claude Code v2.1.72 oder später. Überprüfen Sie Ihre Version mit `claude --version`.

11</Note>

12 

13Geplante Aufgaben ermöglichen es Claude, einen Prompt automatisch in regelmäßigen Abständen erneut auszuführen. Verwenden Sie sie, um eine Bereitstellung abzurufen, einen PR zu überwachen, einen langwierigen Build zu überprüfen oder sich später in der Sitzung an etwas zu erinnern. Um auf Ereignisse zu reagieren, während sie geschehen, anstatt abzurufen, siehe [Kanäle](/de/channels): Ihr CI kann den Fehler direkt in die Sitzung übertragen.

14 

15Aufgaben sind sitzungsbezogen: Sie existieren im aktuellen Gespräch und werden beendet, wenn Sie ein neues starten. Das Fortsetzen mit `--resume` oder `--continue` bringt alle Aufgaben zurück, die nicht [abgelaufen sind](#seven-day-expiry): eine wiederkehrende Aufgabe, die in den letzten 7 Tagen erstellt wurde, oder eine einmalige Aufgabe, deren geplante Zeit noch nicht vergangen ist. Für Planung, die unabhängig von einer Sitzung bestehen bleibt, verwenden Sie [Routinen](/de/routines), [Desktop-geplante Aufgaben](/de/desktop-scheduled-tasks) oder [GitHub Actions](/de/github-actions).

16 

17## Vergleichen Sie Planungsoptionen

18 

19Claude Code offers three ways to schedule recurring or one-off work:

20 

21| | [Cloud](/en/routines) | [Desktop](/en/desktop-scheduled-tasks) | [`/loop`](/en/scheduled-tasks) |

22| :------------------------- | :----------------------------- | :------------------------------------- | :---------------------------------- |

23| Runs on | Anthropic cloud | Your machine | Your machine |

24| Requires machine on | No | Yes | Yes |

25| Requires open session | No | No | Yes |

26| Persistent across restarts | Yes | Yes | Restored on `--resume` if unexpired |

27| Access to local files | No (fresh clone) | Yes | Yes |

28| MCP servers | Connectors configured per task | [Config files](/en/mcp) and connectors | Inherits from session |

29| Permission prompts | No (runs autonomously) | Configurable per task | Inherits from session |

30| Customizable schedule | Via `/schedule` in the CLI | Yes | Yes |

31| Minimum interval | 1 hour | 1 minute | 1 minute |

32 

33<Tip>

34 Use **cloud tasks** for work that should run reliably without your machine. Use **Desktop tasks** when you need access to local files and tools. Use **`/loop`** for quick polling during a session.

35</Tip>

36 

37## Führen Sie einen Prompt wiederholt mit /loop aus

38 

39Die `/loop` [bundled skill](/de/commands) ist der schnellste Weg, um einen Prompt wiederholt auszuführen, während die Sitzung offen bleibt. Sowohl das Intervall als auch der Prompt sind optional, und das, was Sie bereitstellen, bestimmt, wie sich die Schleife verhält.

40 

41| Was Sie bereitstellen | Beispiel | Was passiert |

42| :------------------------ | :-------------------------- | :----------------------------------------------------------------------------------------------------------------- |

43| Intervall und Prompt | `/loop 5m check the deploy` | Ihr Prompt läuft nach einem [festen Zeitplan](#run-on-a-fixed-interval) |

44| Nur Prompt | `/loop check the deploy` | Ihr Prompt läuft in einem [Intervall, das Claude wählt](#let-claude-choose-the-interval) bei jeder Iteration |

45| Nur Intervall oder nichts | `/loop` | Der [integrierte Wartungs-Prompt](#run-the-built-in-maintenance-prompt) läuft, oder Ihr `loop.md`, falls vorhanden |

46 

47Sie können auch einen anderen Befehl als Prompt übergeben, zum Beispiel `/loop 20m /review-pr 1234`, um einen verpackten Workflow bei jeder Iteration erneut auszuführen.

48 

49### Führen Sie nach einem festen Intervall aus

50 

51Wenn Sie ein Intervall angeben, konvertiert Claude es in einen Cron-Ausdruck, plant den Job und bestätigt die Häufigkeit und die Job-ID.

52 

53```text theme={null}

54/loop 5m check if the deployment finished and tell me what happened

55```

56 

57Das Intervall kann dem Prompt als einfaches Token wie `30m` vorangehen oder als Klausel wie `every 2 hours` folgen. Unterstützte Einheiten sind `s` für Sekunden, `m` für Minuten, `h` für Stunden und `d` für Tage.

58 

59Sekunden werden auf die nächste Minute aufgerundet, da Cron eine Granularität von einer Minute hat. Intervalle, die nicht gleichmäßig in einen sauberen Cron-Schritt abgebildet werden, wie `7m` oder `90m`, werden auf das nächste Intervall gerundet, das dies tut, und Claude teilt Ihnen mit, was es gewählt hat.

60 

61### Lassen Sie Claude das Intervall wählen

62 

63Wenn Sie das Intervall weglassen, wählt Claude stattdessen dynamisch eines, anstatt nach einem festen Cron-Zeitplan zu laufen. Nach jeder Iteration wählt es eine Verzögerung zwischen einer Minute und einer Stunde basierend auf dem, was es beobachtet hat: kurze Wartezeiten, während ein Build fertig wird oder ein PR aktiv ist, längere Wartezeiten, wenn nichts ansteht. Die gewählte Verzögerung und der Grund dafür werden am Ende jeder Iteration gedruckt.

64 

65Das folgende Beispiel überprüft CI und Überprüfungskommentare, wobei Claude länger zwischen Iterationen wartet, sobald der PR ruhig wird:

66 

67```text theme={null}

68/loop check whether CI passed and address any review comments

69```

70 

71Wenn Sie einen dynamischen `/loop`-Zeitplan anfordern, kann Claude das [Monitor-Tool](/de/tools-reference#monitor-tool) direkt verwenden. Monitor führt ein Hintergrundskript aus und streamt jede Ausgabezeile zurück, was das Abrufen ganz vermeidet und oft token-effizienter und reaktiver ist als das erneute Ausführen eines Prompts in einem Intervall.

72 

73Eine dynamisch geplante Schleife erscheint in Ihrer [geplanten Aufgabenliste](#manage-scheduled-tasks) wie jede andere Aufgabe, sodass Sie sie auf die gleiche Weise auflisten oder stornieren können. Die [Jitter-Regeln](#jitter) gelten nicht dafür, aber die [sieben-Tage-Ablauf](#seven-day-expiry) tut es: die Schleife endet automatisch sieben Tage nach dem Start.

74 

75<Note>

76 Bei Bedrock, Vertex AI und Microsoft Foundry läuft ein Prompt ohne Intervall stattdessen nach einem festen 10-Minuten-Zeitplan.

77</Note>

78 

79### Führen Sie den integrierten Wartungs-Prompt aus

80 

81Wenn Sie den Prompt weglassen, verwendet Claude stattdessen einen integrierten Wartungs-Prompt. Bei jeder Iteration arbeitet es folgende Punkte in dieser Reihenfolge durch:

82 

83* Fortsetzen unvollendeter Arbeiten aus dem Gespräch

84* Kümmern Sie sich um den Pull Request des aktuellen Branches: Überprüfungskommentare, fehlgeschlagene CI-Läufe, Merge-Konflikte

85* Führen Sie Bereinigungsdurchläufe durch, wie Fehlersuche oder Vereinfachung, wenn nichts anderes ansteht

86 

87Claude startet keine neuen Initiativen außerhalb dieses Umfangs, und irreversible Aktionen wie Pushing oder Löschen erfolgen nur, wenn sie etwas fortsetzen, das das Transkript bereits autorisiert hat.

88 

89```text theme={null}

90/loop

91```

92 

93Ein einfaches `/loop` führt diesen Prompt in einem [dynamisch gewählten Intervall](#let-claude-choose-the-interval) aus. Fügen Sie ein Intervall hinzu, zum Beispiel `/loop 15m`, um es stattdessen nach einem festen Zeitplan auszuführen. Um den integrierten Prompt durch Ihren eigenen Standard zu ersetzen, siehe [Passen Sie den Standard-Prompt mit loop.md an](#customize-the-default-prompt-with-loop-md).

94 

95<Note>

96 Bei Bedrock, Vertex AI und Microsoft Foundry druckt `/loop` ohne Prompt die Nutzungsmeldung aus, anstatt die Wartungsschleife zu starten.

97</Note>

98 

99### Passen Sie den Standard-Prompt mit loop.md an

100 

101Eine `loop.md`-Datei ersetzt den integrierten Wartungs-Prompt durch Ihre eigenen Anweisungen. Sie definiert einen einzelnen Standard-Prompt für einfaches `/loop`, nicht eine Liste separater geplanter Aufgaben, und wird ignoriert, wenn Sie einen Prompt in der Befehlszeile angeben. Um zusätzliche Prompts daneben zu planen, verwenden Sie `/loop <prompt>` oder [fragen Sie Claude direkt](#manage-scheduled-tasks).

102 

103Claude sucht die Datei an zwei Orten und verwendet die erste, die er findet.

104 

105| Pfad | Umfang |

106| :------------------ | :---------------------------------------------------------------------- |

107| `.claude/loop.md` | Projektebene. Hat Vorrang, wenn beide Dateien vorhanden sind. |

108| `~/.claude/loop.md` | Benutzerebene. Gilt in jedem Projekt, das sein eigenes nicht definiert. |

109 

110Die Datei ist einfaches Markdown ohne erforderliche Struktur. Schreiben Sie sie so, als würden Sie den `/loop`-Prompt direkt eingeben. Das folgende Beispiel hält einen Release-Branch gesund:

111 

112```markdown title=".claude/loop.md" theme={null}

113Check the `release/next` PR. If CI is red, pull the failing job log,

114diagnose, and push a minimal fix. If new review comments have arrived,

115address each one and resolve the thread. If everything is green and

116quiet, say so in one line.

117```

118 

119Änderungen an `loop.md` treten bei der nächsten Iteration in Kraft, sodass Sie die Anweisungen verfeinern können, während eine Schleife läuft. Wenn keine `loop.md` an einem der beiden Orte vorhanden ist, fällt die Schleife auf den integrierten Wartungs-Prompt zurück. Halten Sie die Datei prägnant: Inhalte über 25.000 Bytes werden gekürzt.

120 

121### Stoppen Sie eine Schleife

122 

123Um eine `/loop` zu stoppen, während sie auf die nächste Iteration wartet, drücken Sie `Esc`. Dies löscht den ausstehenden Wakeup, sodass die Schleife nicht erneut läuft. Aufgaben, die Sie durch [direktes Fragen an Claude](#manage-scheduled-tasks) geplant haben, sind nicht von `Esc` betroffen und bleiben bestehen, bis Sie sie löschen.

124 

125## Setzen Sie eine einmalige Erinnerung

126 

127Für einmalige Erinnerungen beschreiben Sie, was Sie möchten, in natürlicher Sprache, anstatt `/loop` zu verwenden. Claude plant eine einmalige Aufgabe, die sich nach der Ausführung selbst löscht.

128 

129```text theme={null}

130remind me at 3pm to push the release branch

131```

132 

133```text theme={null}

134in 45 minutes, check whether the integration tests passed

135```

136 

137Claude heftet die Ausführungszeit an eine bestimmte Minute und Stunde mit einem Cron-Ausdruck an und bestätigt, wann sie läuft.

138 

139## Verwalten Sie geplante Aufgaben

140 

141Bitten Sie Claude in natürlicher Sprache, Aufgaben aufzulisten oder zu stornieren, oder verweisen Sie direkt auf die zugrunde liegenden Tools.

142 

143```text theme={null}

144what scheduled tasks do I have?

145```

146 

147```text theme={null}

148cancel the deploy check job

149```

150 

151Unter der Haube verwendet Claude diese Tools:

152 

153| Tool | Zweck |

154| :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------- |

155| `CronCreate` | Planen Sie eine neue Aufgabe. Akzeptiert einen 5-Feld-Cron-Ausdruck, den auszuführenden Prompt und ob er wiederkehrend ist oder einmal läuft. |

156| `CronList` | Listet alle geplanten Aufgaben mit ihren IDs, Zeitplänen und Prompts auf. |

157| `CronDelete` | Stornieren Sie eine Aufgabe nach ID. |

158 

159Jede geplante Aufgabe hat eine 8-stellige ID, die Sie an `CronDelete` übergeben können. Eine Sitzung kann gleichzeitig bis zu 50 geplante Aufgaben enthalten.

160 

161## Wie geplante Aufgaben ausgeführt werden

162 

163Der Scheduler überprüft jede Sekunde auf fällige Aufgaben und reiht sie mit niedriger Priorität ein. Ein geplanter Prompt läuft zwischen Ihren Zügen, nicht während Claude mitten in einer Antwort ist. Wenn Claude beschäftigt ist, wenn eine Aufgabe fällig wird, wartet der Prompt, bis der aktuelle Zug endet.

164 

165Alle Zeiten werden in Ihrer lokalen Zeitzone interpretiert. Ein Cron-Ausdruck wie `0 9 * * *` bedeutet 9 Uhr, wo immer Sie Claude Code ausführen, nicht UTC.

166 

167### Jitter

168 

169Um zu vermeiden, dass jede Sitzung die API zum gleichen Wanduhrzeitpunkt trifft, fügt der Scheduler einen kleinen deterministischen Offset zu Ausführungszeiten hinzu:

170 

171* Wiederkehrende Aufgaben laufen bis zu 10% ihrer Periode zu spät, begrenzt auf 15 Minuten. Ein stündlicher Job könnte überall von `:00` bis `:06` laufen.

172* Einmalige Aufgaben, die für die Ober- oder Unterseite der Stunde geplant sind, laufen bis zu 90 Sekunden früh.

173 

174Der Offset wird von der Aufgaben-ID abgeleitet, daher erhält die gleiche Aufgabe immer den gleichen Offset. Wenn genaue Zeitangaben wichtig sind, wählen Sie eine Minute, die nicht `:00` oder `:30` ist, zum Beispiel `3 9 * * *` statt `0 9 * * *`, und der einmalige Jitter wird nicht angewendet.

175 

176### Ablauf nach sieben Tagen

177 

178Wiederkehrende Aufgaben verfallen automatisch 7 Tage nach der Erstellung. Die Aufgabe läuft ein letztes Mal, dann löscht sie sich selbst. Dies begrenzt, wie lange eine vergessene Schleife laufen kann. Wenn Sie benötigen, dass eine wiederkehrende Aufgabe länger dauert, stornieren und erstellen Sie sie neu, bevor sie abläuft, oder verwenden Sie [Routinen](/de/routines) oder [Desktop-geplante Aufgaben](/de/desktop-scheduled-tasks) für dauerhafte Planung.

179 

180## Cron-Ausdrucksreferenz

181 

182`CronCreate` akzeptiert Standard-5-Feld-Cron-Ausdrücke: `minute hour day-of-month month day-of-week`. Alle Felder unterstützen Wildcards (`*`), einzelne Werte (`5`), Schritte (`*/15`), Bereiche (`1-5`) und kommagetrennte Listen (`1,15,30`).

183 

184| Beispiel | Bedeutung |

185| :------------- | :---------------------------- |

186| `*/5 * * * *` | Alle 5 Minuten |

187| `0 * * * *` | Jede Stunde zur vollen Stunde |

188| `7 * * * *` | Jede Stunde um 7 Minuten nach |

189| `0 9 * * *` | Jeden Tag um 9 Uhr lokal |

190| `0 9 * * 1-5` | Wochentags um 9 Uhr lokal |

191| `30 14 15 3 *` | 15. März um 14:30 Uhr lokal |

192 

193Der Wochentag verwendet `0` oder `7` für Sonntag bis `6` für Samstag. Erweiterte Syntax wie `L`, `W`, `?` und Namensaliase wie `MON` oder `JAN` werden nicht unterstützt.

194 

195Wenn sowohl der Tag des Monats als auch der Wochentag eingeschränkt sind, stimmt ein Datum überein, wenn eines der Felder übereinstimmt. Dies folgt der Standard-Vixie-Cron-Semantik.

196 

197## Deaktivieren Sie geplante Aufgaben

198 

199Setzen Sie `CLAUDE_CODE_DISABLE_CRON=1` in Ihrer Umgebung, um den Scheduler vollständig zu deaktivieren. Die Cron-Tools und `/loop` werden nicht verfügbar, und alle bereits geplanten Aufgaben stoppen das Laufen. Siehe [Umgebungsvariablen](/de/env-vars) für die vollständige Liste der Deaktivierungsflags.

200 

201## Einschränkungen

202 

203Die sitzungsbezogene Planung hat inhärente Einschränkungen:

204 

205* Aufgaben laufen nur, während Claude Code läuft und untätig ist. Das Schließen des Terminals oder das Beenden der Sitzung stoppt sie.

206* Kein Aufholen für verpasste Läufe. Wenn die geplante Zeit einer Aufgabe verstreicht, während Claude mit einer langwierigen Anfrage beschäftigt ist, läuft sie einmal, wenn Claude untätig wird, nicht einmal pro verpasstem Intervall.

207* Neues Gespräch löscht alle sitzungsbezogenen Aufgaben. Das Fortsetzen mit `claude --resume` oder `claude --continue` stellt Aufgaben wieder her, die nicht abgelaufen sind: wiederkehrende Aufgaben innerhalb von sieben Tagen nach der Erstellung und einmalige Aufgaben, deren geplante Zeit noch nicht vergangen ist. Hintergrund-Bash- und Monitor-Aufgaben werden bei Fortsetzen nie wiederhergestellt.

208 

209Für Cron-gesteuerte Automatisierung, die unbeaufsichtigt laufen muss:

210 

211* [Routinen](/de/routines): Laufen auf von Anthropic verwalteter Infrastruktur nach Zeitplan, über API-Aufruf oder bei GitHub-Ereignissen

212* [GitHub Actions](/de/github-actions): Verwenden Sie einen `schedule`-Trigger in CI

213* [Desktop-geplante Aufgaben](/de/desktop-scheduled-tasks): Laufen lokal auf Ihrem Computer

security.md +143 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Sicherheit

6 

7> Erfahren Sie mehr über die Sicherheitsvorkehrungen von Claude Code und Best Practices für sichere Nutzung.

8 

9## Wie wir Sicherheit angehen

10 

11### Sicherheitsfundament

12 

13Die Sicherheit Ihres Codes ist von größter Bedeutung. Claude Code ist mit Sicherheit im Kern entwickelt worden, gemäß Anthropics umfassendem Sicherheitsprogramm. Erfahren Sie mehr und greifen Sie auf Ressourcen zu (SOC 2 Type 2 Bericht, ISO 27001 Zertifikat usw.) im [Anthropic Trust Center](https://trust.anthropic.com).

14 

15### Berechtigungsbasierte Architektur

16 

17Claude Code verwendet standardmäßig strikte Nur-Lesen-Berechtigungen. Wenn zusätzliche Aktionen erforderlich sind (Dateien bearbeiten, Tests ausführen, Befehle ausführen), fordert Claude Code explizite Genehmigung an. Benutzer kontrollieren, ob sie Aktionen einmalig genehmigen oder automatisch zulassen möchten.

18 

19Wir haben Claude Code so gestaltet, dass es transparent und sicher ist. Beispielsweise erfordern wir Genehmigung für Bash-Befehle vor ihrer Ausführung, was Ihnen direkte Kontrolle gibt. Dieser Ansatz ermöglicht es Benutzern und Organisationen, Berechtigungen direkt zu konfigurieren.

20 

21Für detaillierte Berechtigungskonfiguration siehe [Berechtigungen](/de/permissions).

22 

23### Integrierte Schutzmaßnahmen

24 

25Um Risiken in agentengestützten Systemen zu mindern:

26 

27* **Sandbox-Bash-Tool**: [Sandbox](/de/sandboxing) Bash-Befehle mit Dateisystem- und Netzwerkisolation, wodurch Berechtigungsaufforderungen reduziert werden, während die Sicherheit gewährleistet bleibt. Aktivieren Sie mit `/sandbox`, um Grenzen zu definieren, in denen Claude Code autonom arbeiten kann

28* **Schreibzugriffsbeschränkung**: Claude Code kann nur in den Ordner schreiben, in dem es gestartet wurde, und in dessen Unterordner – es kann Dateien in übergeordneten Verzeichnissen nicht ohne explizite Genehmigung ändern. Während Claude Code Dateien außerhalb des Arbeitsverzeichnisses lesen kann (nützlich für den Zugriff auf Systembibliotheken und Abhängigkeiten), sind Schreibvorgänge streng auf den Projektumfang beschränkt und schaffen eine klare Sicherheitsgrenze

29* **Minderung von Genehmigungsmüdigkeit**: Unterstützung für das Zulassen häufig verwendeter sicherer Befehle pro Benutzer, pro Codebasis oder pro Organisation

30* **Accept Edits-Modus**: Mehrere Bearbeitungen stapelweise akzeptieren, während Berechtigungsaufforderungen für Befehle mit Nebenwirkungen beibehalten werden

31 

32### Benutzerverantwortung

33 

34Claude Code hat nur die Berechtigungen, die Sie ihm gewähren. Sie sind verantwortlich für die Überprüfung vorgeschlagener Code und Befehle auf Sicherheit vor der Genehmigung.

35 

36## Schutz vor Prompt-Injection

37 

38Prompt-Injection ist eine Technik, bei der ein Angreifer versucht, die Anweisungen eines KI-Assistenten durch das Einfügen bösartiger Texte zu überschreiben oder zu manipulieren. Claude Code enthält mehrere Schutzmaßnahmen gegen diese Angriffe:

39 

40### Kernschutzmaßnahmen

41 

42* **Berechtigungssystem**: Sensible Operationen erfordern explizite Genehmigung

43* **Kontextbewusste Analyse**: Erkennt potenziell schädliche Anweisungen durch Analyse der vollständigen Anfrage

44* **Eingabebereinigung**: Verhindert Befehlsinjektionen durch Verarbeitung von Benutzereingaben

45* **Befehlsblockliste**: Blockiert standardmäßig riskante Befehle, die beliebige Inhalte aus dem Web abrufen, wie `curl` und `wget`. Wenn explizit zulässig, beachten Sie [Einschränkungen des Berechtigungsmusters](/de/permissions#tool-specific-permission-rules)

46 

47### Datenschutzvorkehrungen

48 

49Wir haben mehrere Schutzmaßnahmen implementiert, um Ihre Daten zu schützen, einschließlich:

50 

51* Begrenzte Aufbewahrungszeiträume für sensible Informationen (siehe [Privacy Center](https://privacy.anthropic.com/en/articles/10023548-how-long-do-you-store-my-data), um mehr zu erfahren)

52* Eingeschränkter Zugriff auf Benutzersitzungsdaten

53* Benutzerkontrolle über Datenschulungspräferenzen. Verbraucherbenutzer können ihre [Datenschutzeinstellungen](https://claude.ai/settings/privacy) jederzeit ändern.

54 

55Für vollständige Details überprüfen Sie bitte unsere [Commercial Terms of Service](https://www.anthropic.com/legal/commercial-terms) (für Team-, Enterprise- und API-Benutzer) oder [Consumer Terms](https://www.anthropic.com/legal/consumer-terms) (für Free-, Pro- und Max-Benutzer) und [Privacy Policy](https://www.anthropic.com/legal/privacy).

56 

57### Zusätzliche Schutzmaßnahmen

58 

59* **Genehmigung von Netzwerkanfragen**: Tools, die Netzwerkanfragen stellen, erfordern standardmäßig Benutzergenehmigung

60* **Isolierte Kontextfenster**: Web Fetch verwendet ein separates Kontextfenster, um die Injection potenziell bösartiger Prompts zu vermeiden

61* **Vertrauensüberprüfung**: Erste Codebasis-Ausführungen und neue MCP-Server erfordern Vertrauensüberprüfung

62 * Hinweis: Vertrauensüberprüfung ist deaktiviert, wenn nicht-interaktiv mit dem `-p`-Flag ausgeführt wird

63* **Erkennung von Befehlsinjektionen**: Verdächtige Bash-Befehle erfordern manuelle Genehmigung, auch wenn sie zuvor auf die Zulassungsliste gesetzt wurden

64* **Fail-Closed-Matching**: Nicht übereinstimmende Befehle erfordern standardmäßig manuelle Genehmigung

65* **Beschreibungen in natürlicher Sprache**: Komplexe Bash-Befehle enthalten Erklärungen zum Verständnis des Benutzers

66* **Sichere Anmeldedatenspeicherung**: API-Schlüssel und Token sind verschlüsselt. Siehe [Credential Management](/de/authentication#credential-management)

67 

68<Warning>

69 **Windows WebDAV-Sicherheitsrisiko**: Wenn Sie Claude Code unter Windows ausführen, empfehlen wir, WebDAV nicht zu aktivieren oder Claude Code keinen Zugriff auf Pfade wie `\\*` zu gewähren, die WebDAV-Unterverzeichnisse enthalten können. [WebDAV wurde von Microsoft als veraltet eingestuft](https://learn.microsoft.com/en-us/windows/whats-new/deprecated-features#:~:text=The%20Webclient%20\(WebDAV\)%20service%20is%20deprecated) aufgrund von Sicherheitsrisiken. Das Aktivieren von WebDAV kann Claude Code ermöglichen, Netzwerkanfragen an Remote-Hosts auszulösen und das Berechtigungssystem zu umgehen.

70</Warning>

71 

72**Best Practices für die Arbeit mit nicht vertrauenswürdigem Inhalt**:

73 

741. Überprüfen Sie vorgeschlagene Befehle vor der Genehmigung

752. Vermeiden Sie es, nicht vertrauenswürdige Inhalte direkt an Claude zu pipen

763. Überprüfen Sie vorgeschlagene Änderungen an kritischen Dateien

774. Verwenden Sie virtuelle Maschinen (VMs), um Skripte auszuführen und Tool-Aufrufe zu tätigen, besonders bei der Interaktion mit externen Webdiensten

785. Melden Sie verdächtiges Verhalten mit `/feedback`

79 

80<Warning>

81 Während diese Schutzmaßnahmen das Risiko erheblich reduzieren, ist kein System

82 vollständig immun gegen alle Angriffe. Halten Sie immer gute Sicherheitspraktiken

83 bei der Arbeit mit einem KI-Tool ein.

84</Warning>

85 

86## MCP-Sicherheit

87 

88Claude Code ermöglicht es Benutzern, Model Context Protocol (MCP)-Server zu konfigurieren. Die Liste der zulässigen MCP-Server wird in Ihrem Quellcode konfiguriert, als Teil der Claude Code-Einstellungen, die Ingenieure in die Versionskontrolle einchecken.

89 

90Wir ermutigen Sie, entweder Ihre eigenen MCP-Server zu schreiben oder MCP-Server von Anbietern zu verwenden, denen Sie vertrauen. Sie können Claude Code-Berechtigungen für MCP-Server konfigurieren. Anthropic verwaltet oder prüft keine MCP-Server.

91 

92## IDE-Sicherheit

93 

94Siehe [VS Code-Sicherheit und Datenschutz](/de/vs-code#security-and-privacy) für weitere Informationen zum Ausführen von Claude Code in einer IDE.

95 

96## Cloud-Ausführungssicherheit

97 

98Bei Verwendung von [Claude Code im Web](/de/claude-code-on-the-web) sind zusätzliche Sicherheitskontrollen vorhanden:

99 

100* **Isolierte virtuelle Maschinen**: Jede Cloud-Sitzung wird in einer isolierten, von Anthropic verwalteten VM ausgeführt

101* **Netzwerkzugriffskontrollen**: Der Netzwerkzugriff ist standardmäßig begrenzt und kann so konfiguriert werden, dass er deaktiviert ist oder nur bestimmte Domänen zulässt

102* **Anmeldedatenschutz**: Die Authentifizierung wird über einen sicheren Proxy durchgeführt, der einen scoped Credential in der Sandbox verwendet, der dann in Ihr tatsächliches GitHub-Authentifizierungstoken übersetzt wird

103* **Branch-Einschränkungen**: Git-Push-Operationen sind auf den aktuellen Arbeitsbranch beschränkt

104* **Audit-Protokollierung**: Alle Operationen in Cloud-Umgebungen werden zu Compliance- und Audit-Zwecken protokolliert

105* **Automatische Bereinigung**: Cloud-Umgebungen werden nach Abschluss der Sitzung automatisch beendet

106 

107Weitere Details zur Cloud-Ausführung finden Sie unter [Claude Code im Web](/de/claude-code-on-the-web).

108 

109[Remote Control](/de/remote-control)-Sitzungen funktionieren anders: Die Weboberfläche verbindet sich mit einem Claude Code-Prozess, der auf Ihrem lokalen Computer ausgeführt wird. Alle Code-Ausführungen und Dateizugriffe bleiben lokal, und die gleichen Daten, die während einer lokalen Claude Code-Sitzung fließen, werden über die Anthropic API über TLS übertragen. Es sind keine Cloud-VMs oder Sandboxing beteiligt. Die Verbindung verwendet mehrere kurzlebige, eng begrenzte Anmeldedaten, die jeweils auf einen bestimmten Zweck beschränkt sind und unabhängig ablaufen, um den Blast-Radius eines einzelnen kompromittierten Credentials zu begrenzen.

110 

111## Best Practices für Sicherheit

112 

113### Arbeiten mit sensiblem Code

114 

115* Überprüfen Sie alle vorgeschlagenen Änderungen vor der Genehmigung

116* Verwenden Sie projektspezifische Berechtigungseinstellungen für sensible Repositories

117* Erwägen Sie die Verwendung von [Dev Containern](/de/devcontainer) für zusätzliche Isolierung

118* Überprüfen Sie regelmäßig Ihre Berechtigungseinstellungen mit `/permissions`

119 

120### Team-Sicherheit

121 

122* Verwenden Sie [verwaltete Einstellungen](/de/settings#settings-files), um organisatorische Standards durchzusetzen

123* Teilen Sie genehmigte Berechtigungskonfigurationen über Versionskontrolle

124* Schulen Sie Teammitglieder in Best Practices für Sicherheit

125* Überwachen Sie die Claude Code-Nutzung durch [OpenTelemetry-Metriken](/de/monitoring-usage)

126* Überprüfen oder blockieren Sie Einstellungsänderungen während Sitzungen mit [`ConfigChange`-Hooks](/de/hooks#configchange)

127 

128### Meldung von Sicherheitsproblemen

129 

130Wenn Sie eine Sicherheitslücke in Claude Code entdecken:

131 

1321. Offenbaren Sie sie nicht öffentlich

1332. Melden Sie sie über unser [HackerOne-Programm](https://hackerone.com/4f1f16ba-10d3-4d09-9ecc-c721aad90f24/embedded_submissions/new)

1343. Fügen Sie detaillierte Reproduktionsschritte ein

1354. Geben Sie uns Zeit, das Problem zu beheben, bevor Sie es öffentlich offenbaren

136 

137## Verwandte Ressourcen

138 

139* [Sandboxing](/de/sandboxing) - Dateisystem- und Netzwerkisolation für Bash-Befehle

140* [Berechtigungen](/de/permissions) - Konfigurieren Sie Berechtigungen und Zugriffskontrolle

141* [Nutzungsüberwachung](/de/monitoring-usage) - Verfolgen und überprüfen Sie Claude Code-Aktivität

142* [Entwicklungscontainer](/de/devcontainer) - Sichere, isolierte Umgebungen

143* [Anthropic Trust Center](https://trust.anthropic.com) - Sicherheitszertifizierungen und Compliance

server-managed-settings.md +224 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Serververwaltete Einstellungen konfigurieren

6 

7> Konfigurieren Sie Claude Code zentral für Ihre Organisation durch serververwaltete Einstellungen, ohne dass eine Geräteverwaltungsinfrastruktur erforderlich ist.

8 

9Serververwaltete Einstellungen ermöglichen es Administratoren, Claude Code zentral über eine webbasierte Schnittstelle auf Claude.ai zu konfigurieren. Claude Code-Clients erhalten diese Einstellungen automatisch, wenn sich Benutzer mit ihren Organisationsanmeldedaten authentifizieren.

10 

11Dieser Ansatz ist für Organisationen konzipiert, die keine Geräteverwaltungsinfrastruktur haben oder Einstellungen für Benutzer auf nicht verwalteten Geräten verwalten müssen.

12 

13<Note>

14 Serververwaltete Einstellungen sind für [Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_teams#team-&-enterprise) und [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_enterprise) Kunden verfügbar.

15</Note>

16 

17## Anforderungen

18 

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

20 

21* Claude for Teams oder Claude for Enterprise Plan

22* Claude Code Version 2.1.38 oder später für Claude for Teams oder Version 2.1.30 oder später für Claude for Enterprise

23* Netzwerkzugriff auf `api.anthropic.com`

24 

25## Wählen Sie zwischen serververwalteten und endpunktverwalteten Einstellungen

26 

27Claude Code unterstützt zwei Ansätze für zentralisierte Konfiguration. Serververwaltete Einstellungen liefern Konfiguration von Anthropics Servern. [Endpunktverwaltete Einstellungen](/de/settings#settings-files) werden direkt auf Geräten über native Betriebssystemrichtlinien (macOS verwaltete Einstellungen, Windows-Registrierung) oder verwaltete Einstellungsdateien bereitgestellt.

28 

29| Ansatz | Am besten geeignet für | Sicherheitsmodell |

30| :------------------------------------------------------------------ | :------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------- |

31| **Serververwaltete Einstellungen** | Organisationen ohne MDM oder Benutzer auf nicht verwalteten Geräten | Einstellungen, die von Anthropics Servern zum Authentifizierungszeitpunkt bereitgestellt werden |

32| **[Endpunktverwaltete Einstellungen](/de/settings#settings-files)** | Organisationen mit MDM oder Endpunktverwaltung | Einstellungen, die auf Geräten über MDM-Konfigurationsprofile, Registrierungsrichtlinien oder verwaltete Einstellungsdateien bereitgestellt werden |

33 

34Wenn Ihre Geräte in einer MDM- oder Endpunktverwaltungslösung registriert sind, bieten endpunktverwaltete Einstellungen stärkere Sicherheitsgarantien, da die Einstellungsdatei auf Betriebssystemebene vor Benutzermodifikationen geschützt werden kann.

35 

36## Serververwaltete Einstellungen konfigurieren

37 

38<Steps>

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

40 Navigieren Sie in [Claude.ai](https://claude.ai) zu **Admin-Einstellungen > Claude Code > Verwaltete Einstellungen**.

41 </Step>

42 

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

44 Fügen Sie Ihre Konfiguration als JSON hinzu. Alle [in `settings.json` verfügbaren Einstellungen](/de/settings#available-settings) werden unterstützt, einschließlich [hooks](/de/hooks), [Umgebungsvariablen](/de/env-vars) und [nur verwaltete Einstellungen](/de/permissions#managed-only-settings) wie `allowManagedPermissionRulesOnly`.

45 

46 Dieses Beispiel erzwingt eine Berechtigungsverweigerungsliste, verhindert, dass Benutzer Berechtigungen umgehen, und beschränkt Berechtigungsregeln auf diejenigen, die in verwalteten Einstellungen definiert sind:

47 

48 ```json theme={null}

49 {

50 "permissions": {

51 "deny": [

52 "Bash(curl *)",

53 "Read(./.env)",

54 "Read(./.env.*)",

55 "Read(./secrets/**)"

56 ],

57 "disableBypassPermissionsMode": "disable"

58 },

59 "allowManagedPermissionRulesOnly": true

60 }

61 ```

62 

63 Hooks verwenden das gleiche Format wie in `settings.json`.

64 

65 Dieses Beispiel führt ein Audit-Skript nach jeder Dateibearbeitung in der gesamten Organisation aus:

66 

67 ```json theme={null}

68 {

69 "hooks": {

70 "PostToolUse": [

71 {

72 "matcher": "Edit|Write",

73 "hooks": [

74 { "type": "command", "command": "/usr/local/bin/audit-edit.sh" }

75 ]

76 }

77 ]

78 }

79 }

80 ```

81 

82 Um den [Auto-Modus](/de/permission-modes#eliminate-prompts-with-auto-mode) Klassifizierer zu konfigurieren, damit er weiß, welche Repos, Buckets und Domains Ihre Organisation vertraut:

83 

84 ```json theme={null}

85 {

86 "autoMode": {

87 "environment": [

88 "Source control: github.example.com/acme-corp and all repos under it",

89 "Trusted cloud buckets: s3://acme-build-artifacts, gs://acme-ml-datasets",

90 "Trusted internal domains: *.corp.example.com"

91 ]

92 }

93 }

94 ```

95 

96 Da Hooks Shell-Befehle ausführen, sehen Benutzer einen [Sicherheitsgenehmigungsdialog](#security-approval-dialogs), bevor sie angewendet werden. Siehe [Auto-Modus konfigurieren](/de/auto-mode-config), um zu erfahren, wie die `autoMode` Einträge beeinflussen, was der Klassifizierer blockiert, und wichtige Warnungen zu den Feldern `allow` und `soft_deny`.

97 </Step>

98 

99 <Step title="Speichern und bereitstellen">

100 Speichern Sie Ihre Änderungen. Claude Code-Clients erhalten die aktualisierten Einstellungen beim nächsten Start oder während des stündlichen Abrufzyklus.

101 </Step>

102</Steps>

103 

104### Einstellungsbereitstellung überprüfen

105 

106Um zu bestätigen, dass Einstellungen angewendet werden, bitten Sie einen Benutzer, Claude Code neu zu starten. Wenn die Konfiguration Einstellungen enthält, die den [Sicherheitsgenehmigungsdialog](#security-approval-dialogs) auslösen, sieht der Benutzer beim Start eine Eingabeaufforderung, die die verwalteten Einstellungen beschreibt. Sie können auch überprüfen, dass verwaltete Berechtigungsregeln aktiv sind, indem Sie einen Benutzer `/permissions` ausführen lassen, um seine geltenden Berechtigungsregeln anzuzeigen.

107 

108### Zugriffskontrolle

109 

110Die folgenden Rollen können serververwaltete Einstellungen verwalten:

111 

112* **Primärer Eigentümer**

113* **Eigentümer**

114 

115Beschränken Sie den Zugriff auf vertrauenswürdiges Personal, da Einstellungsänderungen für alle Benutzer in der Organisation gelten.

116 

117### Nur verwaltete Einstellungen

118 

119Die meisten [Einstellungsschlüssel](/de/settings#available-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](/de/permissions#managed-only-settings) für die vollständige Liste. Jede Einstellung, die nicht auf dieser Liste steht, kann immer noch in verwalteten Einstellungen platziert werden und hat die höchste Priorität.

120 

121### Aktuelle Einschränkungen

122 

123Serververwaltete Einstellungen haben die folgenden Einschränkungen:

124 

125* Einstellungen gelten einheitlich für alle Benutzer in der Organisation. Konfigurationen pro Gruppe werden noch nicht unterstützt.

126* [MCP-Serverkonfigurationen](/de/mcp#managed-mcp-configuration) können nicht über serververwaltete Einstellungen verteilt werden.

127 

128## Einstellungsbereitstellung

129 

130### Einstellungspriorität

131 

132Serververwaltete Einstellungen und [endpunktverwaltete Einstellungen](/de/settings#settings-files) nehmen beide die höchste Ebene in der Claude Code [Einstellungshierarchie](/de/settings#settings-precedence) ein. Keine andere Einstellungsebene kann sie überschreiben, einschließlich Befehlszeilenargumenten.

133 

134Innerhalb der verwalteten Ebene gewinnt die erste Quelle, die eine nicht leere Konfiguration liefert. Serververwaltete Einstellungen werden zuerst überprüft, dann endpunktverwaltete Einstellungen. Quellen werden nicht zusammengeführt: Wenn serververwaltete Einstellungen überhaupt Schlüssel liefern, werden endpunktverwaltete Einstellungen vollständig ignoriert. Wenn serververwaltete Einstellungen nichts liefern, gelten endpunktverwaltete Einstellungen.

135 

136Wenn Sie Ihre serververwaltete Konfiguration in der Admin-Konsole mit der Absicht löschen, auf eine endpunktverwaltete plist oder Registrierungsrichtlinie zurückzugreifen, beachten Sie, dass [zwischengespeicherte Einstellungen](#fetch-and-caching-behavior) auf Client-Maschinen bestehen bleiben, bis der nächste erfolgreiche Abruf erfolgt. Führen Sie `/status` aus, um zu sehen, welche verwaltete Quelle aktiv ist.

137 

138### Abruf- und Caching-Verhalten

139 

140Claude Code ruft Einstellungen beim Start von Anthropics Servern ab und fragt stündlich während aktiver Sitzungen nach Updates ab.

141 

142**Erster Start ohne zwischengespeicherte Einstellungen:**

143 

144* Claude Code ruft Einstellungen asynchron ab

145* Wenn der Abruf fehlschlägt, wird Claude Code ohne verwaltete Einstellungen fortgesetzt

146* Es gibt ein kurzes Fenster, bevor Einstellungen geladen werden, in dem Einschränkungen noch nicht erzwungen werden

147 

148**Nachfolgende Starts mit zwischengespeicherten Einstellungen:**

149 

150* Zwischengespeicherte Einstellungen werden beim Start sofort angewendet

151* Claude Code ruft frische Einstellungen im Hintergrund ab

152* Zwischengespeicherte Einstellungen bleiben bei Netzwerkfehlern erhalten

153 

154Claude Code wendet Einstellungsaktualisierungen automatisch ohne Neustart an, außer für erweiterte Einstellungen wie OpenTelemetry-Konfiguration, die einen vollständigen Neustart erfordern, um wirksam zu werden.

155 

156### Erzwingen Sie einen Fail-Closed-Start

157 

158Standardmäßig wird die CLI ohne verwaltete Einstellungen fortgesetzt, wenn der Abruf der Remote-Einstellungen beim Start fehlschlägt. Für Umgebungen, in denen dieses kurze nicht erzwungene Fenster nicht akzeptabel ist, setzen Sie `forceRemoteSettingsRefresh: true` in Ihren verwalteten Einstellungen.

159 

160Wenn diese Einstellung aktiv ist, blockiert die CLI beim Start, bis Remote-Einstellungen neu abgerufen werden. Wenn der Abruf fehlschlägt, wird die CLI beendet, anstatt ohne die Richtlinie fortzufahren. Diese Einstellung perpetuiert sich selbst: Sobald sie vom Server bereitgestellt wird, wird sie auch lokal zwischengespeichert, sodass nachfolgende Starts das gleiche Verhalten erzwingen, auch bevor der erste erfolgreiche Abruf einer neuen Sitzung erfolgt.

161 

162Um dies zu aktivieren, fügen Sie den Schlüssel zu Ihrer verwalteten Einstellungskonfiguration hinzu:

163 

164```json theme={null}

165{

166 "forceRemoteSettingsRefresh": true

167}

168```

169 

170Bevor Sie diese Einstellung aktivieren, stellen Sie sicher, dass Ihre Netzwerkrichtlinien die Konnektivität zu `api.anthropic.com` ermöglichen. Wenn dieser Endpunkt nicht erreichbar ist, wird die CLI beim Start beendet und Benutzer können Claude Code nicht starten.

171 

172### Sicherheitsgenehmigungsdialoge

173 

174Bestimmte Einstellungen, die Sicherheitsrisiken darstellen könnten, erfordern explizite Benutzergenehmigung, bevor sie angewendet werden:

175 

176* **Shell-Befehlseinstellungen**: Einstellungen, die Shell-Befehle ausführen

177* **Benutzerdefinierte Umgebungsvariablen**: Variablen, die nicht in der bekannten sicheren Zulassungsliste enthalten sind

178* **Hook-Konfigurationen**: jede Hook-Definition

179 

180Wenn diese Einstellungen vorhanden sind, sehen Benutzer einen Sicherheitsdialog, der erklärt, was konfiguriert wird. Benutzer müssen genehmigen, um fortzufahren. Wenn ein Benutzer die Einstellungen ablehnt, wird Claude Code beendet.

181 

182<Note>

183 Im nicht-interaktiven Modus mit dem `-p` Flag überspringt Claude Code Sicherheitsdialoge und wendet Einstellungen ohne Benutzergenehmigung an.

184</Note>

185 

186## Plattformverfügbarkeit

187 

188Serververwaltete Einstellungen erfordern eine direkte Verbindung zu `api.anthropic.com` und sind nicht verfügbar, wenn Drittanbieter-Modellprovider verwendet werden:

189 

190* Amazon Bedrock

191* Google Vertex AI

192* Microsoft Foundry

193* Benutzerdefinierte API-Endpunkte über `ANTHROPIC_BASE_URL` oder [LLM-Gateways](/de/llm-gateway)

194 

195## Audit-Protokollierung

196 

197Audit-Log-Ereignisse für Einstellungsänderungen sind über die Compliance-API oder den Audit-Log-Export verfügbar. Kontaktieren Sie Ihr Anthropic-Kontoteam für Zugriff.

198 

199Audit-Ereignisse enthalten den Typ der durchgeführten Aktion, das Konto und das Gerät, das die Aktion durchgeführt hat, sowie Verweise auf die vorherigen und neuen Werte.

200 

201## Sicherheitsüberlegungen

202 

203Serververwaltete Einstellungen bieten zentralisierte Richtliniendurchsetzung, funktionieren aber als clientseitige Kontrolle. Auf nicht verwalteten Geräten können Benutzer mit Admin- oder Sudo-Zugriff die Claude Code-Binärdatei, das Dateisystem oder die Netzwerkkonfiguration ändern.

204 

205| Szenario | Verhalten |

206| :--------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

207| Benutzer bearbeitet die zwischengespeicherte Einstellungsdatei | Manipulierte Datei wird beim Start angewendet, aber korrekte Einstellungen werden beim nächsten Serverfetch wiederhergestellt |

208| Benutzer löscht die zwischengespeicherte Einstellungsdatei | Verhalten beim ersten Start tritt auf: Einstellungen werden asynchron abgerufen mit einem kurzen nicht erzwungenen Fenster |

209| API ist nicht verfügbar | Zwischengespeicherte Einstellungen werden angewendet, falls verfügbar, andernfalls werden verwaltete Einstellungen nicht erzwungen, bis der nächste erfolgreiche Abruf erfolgt. Mit `forceRemoteSettingsRefresh: true` wird die CLI stattdessen beendet |

210| Benutzer authentifiziert sich mit einer anderen Organisation | Einstellungen werden nicht für Konten außerhalb der verwalteten Organisation bereitgestellt |

211| Benutzer konfiguriert einen [Drittanbieter-Modellprovider](#platform-availability) | Serververwaltete Einstellungen werden umgangen. Dies umfasst das Setzen von `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_MANTLE`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY` oder einer nicht standardmäßigen `ANTHROPIC_BASE_URL` |

212 

213Um Laufzeitkonfigurationsänderungen zu erkennen, verwenden Sie [`ConfigChange` hooks](/de/hooks#configchange), um Änderungen zu protokollieren oder nicht autorisierte Änderungen zu blockieren, bevor sie wirksam werden.

214 

215Für stärkere Durchsetzungsgarantien verwenden Sie [endpunktverwaltete Einstellungen](/de/settings#settings-files) auf Geräten, die in einer MDM-Lösung registriert sind.

216 

217## Siehe auch

218 

219Verwandte Seiten zur Verwaltung der Claude Code-Konfiguration:

220 

221* [Einstellungen](/de/settings): vollständige Konfigurationsreferenz einschließlich aller verfügbaren Einstellungen

222* [Endpunktverwaltete Einstellungen](/de/settings#settings-files): verwaltete Einstellungen, die von der IT auf Geräten bereitgestellt werden

223* [Authentifizierung](/de/authentication): Einrichtung des Benutzerzugriffs auf Claude Code

224* [Sicherheit](/de/security): Sicherheitsvorkehrungen und Best Practices

settings.md +914 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code-Einstellungen

6 

7> Konfigurieren Sie Claude Code mit globalen und projektbezogenen Einstellungen sowie Umgebungsvariablen.

8 

9Claude Code bietet eine Vielzahl von Einstellungen, um sein Verhalten an Ihre Anforderungen anzupassen. Sie können Claude Code konfigurieren, indem Sie den Befehl `/config` in der interaktiven REPL ausführen, wodurch eine Einstellungsoberfläche mit Registerkarten geöffnet wird, auf der Sie Statusinformationen anzeigen und Konfigurationsoptionen ändern können.

10 

11## Konfigurationsbereiche

12 

13Claude Code verwendet ein **Bereichssystem**, um zu bestimmen, wo Konfigurationen gelten und wer sie teilt. Das Verständnis von Bereichen hilft Ihnen zu entscheiden, wie Sie Claude Code für persönliche Nutzung, Teamzusammenarbeit oder Unternehmensbereitstellung konfigurieren.

14 

15### Verfügbare Bereiche

16 

17| Bereich | Speicherort | Wer ist betroffen | Mit Team geteilt? |

18| :------------ | :---------------------------------------------------------------------------------------- | :------------------------------------ | :------------------------- |

19| **Verwaltet** | Serververwaltete Einstellungen, plist / Registry oder systemweite `managed-settings.json` | Alle Benutzer auf dem Computer | Ja (von IT bereitgestellt) |

20| **Benutzer** | `~/.claude/` Verzeichnis | Sie, über alle Projekte hinweg | Nein |

21| **Projekt** | `.claude/` im Repository | Alle Mitarbeiter in diesem Repository | Ja (in Git eingecheckt) |

22| **Lokal** | `.claude/settings.local.json` | Sie, nur in diesem Repository | Nein (gitignoriert) |

23 

24### Wann sollte jeder Bereich verwendet werden

25 

26Der **Verwaltungsbereich** ist für:

27 

28* Sicherheitsrichtlinien, die organisationsweit durchgesetzt werden müssen

29* Compliance-Anforderungen, die nicht überschrieben werden können

30* Standardisierte Konfigurationen, die von IT/DevOps bereitgestellt werden

31 

32Der **Benutzerbereich** ist am besten für:

33 

34* Persönliche Voreinstellungen, die Sie überall haben möchten (Designs, Editor-Einstellungen)

35* Tools und Plugins, die Sie in allen Projekten verwenden

36* API-Schlüssel und Authentifizierung (sicher gespeichert)

37 

38Der **Projektbereich** ist am besten für:

39 

40* Teamübergreifend gemeinsame Einstellungen (Berechtigungen, Hooks, MCP-Server)

41* Plugins, die das gesamte Team haben sollte

42* Standardisierung von Tools über Mitarbeiter hinweg

43 

44Der **lokale Bereich** ist am besten für:

45 

46* Persönliche Überschreibungen für ein bestimmtes Projekt

47* Testen von Konfigurationen vor dem Teilen mit dem Team

48* Maschinenspezifische Einstellungen, die für andere nicht funktionieren

49 

50### Wie Bereiche interagieren

51 

52Wenn die gleiche Einstellung in mehreren Bereichen konfiguriert ist, haben spezifischere Bereiche Vorrang:

53 

541. **Verwaltet** (höchste) - kann von nichts überschrieben werden

552. **Befehlszeilenargumente** - temporäre Sitzungsüberschreibungen

563. **Lokal** - überschreibt Projekt- und Benutzereinstellungen

574. **Projekt** - überschreibt Benutzereinstellungen

585. **Benutzer** (niedrigste) - gilt, wenn nichts anderes die Einstellung angibt

59 

60Wenn beispielsweise eine Berechtigung in Benutzereinstellungen erlaubt, aber in Projekteinstellungen verweigert wird, hat die Projekteinstellung Vorrang und die Berechtigung wird blockiert.

61 

62### Was verwendet Bereiche

63 

64Bereiche gelten für viele Claude Code-Funktionen:

65 

66| Funktion | Benutzerort | Projektort | Lokaler Ort |

67| :---------------- | :------------------------ | :----------------------------------- | :----------------------------- |

68| **Einstellungen** | `~/.claude/settings.json` | `.claude/settings.json` | `.claude/settings.local.json` |

69| **Subagents** | `~/.claude/agents/` | `.claude/agents/` | Keine |

70| **MCP-Server** | `~/.claude.json` | `.mcp.json` | `~/.claude.json` (pro Projekt) |

71| **Plugins** | `~/.claude/settings.json` | `.claude/settings.json` | `.claude/settings.local.json` |

72| **CLAUDE.md** | `~/.claude/CLAUDE.md` | `CLAUDE.md` oder `.claude/CLAUDE.md` | `CLAUDE.local.md` |

73 

74***

75 

76## Einstellungsdateien

77 

78Die Datei `settings.json` ist der offizielle Mechanismus zur Konfiguration von Claude Code durch hierarchische Einstellungen:

79 

80* **Benutzereinstellungen** werden in `~/.claude/settings.json` definiert und gelten für alle Projekte.

81* **Projekteinstellungen** werden in Ihrem Projektverzeichnis gespeichert:

82 * `.claude/settings.json` für Einstellungen, die in die Versionskontrolle eingecheckt und mit Ihrem Team geteilt werden

83 * `.claude/settings.local.json` für Einstellungen, die nicht eingecheckt werden, nützlich für persönliche Voreinstellungen und Experimente. Claude Code konfiguriert Git so, dass `.claude/settings.local.json` ignoriert wird, wenn sie erstellt wird.

84* **Verwaltete Einstellungen**: Für Organisationen, die zentrale Kontrolle benötigen, unterstützt Claude Code mehrere Bereitstellungsmechanismen für verwaltete Einstellungen. Alle verwenden das gleiche JSON-Format und können nicht durch Benutzer- oder Projekteinstellungen überschrieben werden:

85 

86 * **Serververwaltete Einstellungen**: von Anthropics Servern über die Claude.ai-Administratorkonsole bereitgestellt. Siehe [serververwaltete Einstellungen](/de/server-managed-settings).

87 * **MDM/OS-Richtlinien**: über native Geräteverwaltung auf macOS und Windows bereitgestellt:

88 * macOS: `com.anthropic.claudecode` verwaltete Präferenzdomäne. Die Schlüssel der obersten Ebene der plist spiegeln `managed-settings.json` wider, mit verschachtelten Einstellungen als Wörterbücher und Arrays als plist-Arrays. Bereitstellung über Konfigurationsprofile in Jamf, Iru (Kandji) oder ähnlichen MDM-Tools.

89 * Windows: `HKLM\SOFTWARE\Policies\ClaudeCode` Registrierungsschlüssel mit einem `Settings`-Wert (REG\_SZ oder REG\_EXPAND\_SZ) mit JSON (bereitgestellt über Gruppenrichtlinie oder Intune)

90 * Windows (Benutzerebene): `HKCU\SOFTWARE\Policies\ClaudeCode` (niedrigste Richtlinienpriorität, wird nur verwendet, wenn keine Admin-Quelle vorhanden ist)

91 * **Dateibasiert**: `managed-settings.json` und `managed-mcp.json` in Systemverzeichnissen bereitgestellt:

92 

93 * macOS: `/Library/Application Support/ClaudeCode/`

94 * Linux und WSL: `/etc/claude-code/`

95 * Windows: `C:\Program Files\ClaudeCode\`

96 

97 <Warning>

98 Der veraltete Windows-Pfad `C:\ProgramData\ClaudeCode\managed-settings.json` wird ab v2.1.75 nicht mehr unterstützt. Administratoren, die Einstellungen an diesem Speicherort bereitgestellt haben, müssen Dateien zu `C:\Program Files\ClaudeCode\managed-settings.json` migrieren.

99 </Warning>

100 

101 Dateibasierte verwaltete Einstellungen unterstützen auch ein Drop-in-Verzeichnis unter `managed-settings.d/` im gleichen Systemverzeichnis neben `managed-settings.json`. Dies ermöglicht es separaten Teams, unabhängige Richtlinienfragmente bereitzustellen, ohne Änderungen an einer einzelnen Datei zu koordinieren.

102 

103 Nach der systemd-Konvention wird `managed-settings.json` zuerst als Basis zusammengeführt, dann werden alle `*.json`-Dateien im Drop-in-Verzeichnis alphabetisch sortiert und oben zusammengeführt. Spätere Dateien überschreiben frühere für Skalarwerte; Arrays werden verkettet und dedupliziert; Objekte werden tiefgreifend zusammengeführt. Versteckte Dateien, die mit `.` beginnen, werden ignoriert.

104 

105 Verwenden Sie numerische Präfixe, um die Zusammenführungsreihenfolge zu steuern, z. B. `10-telemetry.json` und `20-security.json`.

106 

107 Siehe [verwaltete Einstellungen](/de/permissions#managed-only-settings) und [Verwaltete MCP-Konfiguration](/de/mcp#managed-mcp-configuration) für Details.

108 

109 Dieses [Repository](https://github.com/anthropics/claude-code/tree/main/examples/mdm) enthält Starter-Bereitstellungsvorlagen für Jamf, Iru (Kandji), Intune und Gruppenrichtlinie. Verwenden Sie diese als Ausgangspunkte und passen Sie sie an Ihre Anforderungen an.

110 

111 <Note>

112 Verwaltete Bereitstellungen können auch **Plugin-Marketplace-Ergänzungen** mit `strictKnownMarketplaces` einschränken. Weitere Informationen finden Sie unter [Verwaltete Marketplace-Einschränkungen](/de/plugin-marketplaces#managed-marketplace-restrictions).

113 </Note>

114* **Andere Konfiguration** wird in `~/.claude.json` gespeichert. Diese Datei enthält Ihre OAuth-Sitzung, [MCP-Server](/de/mcp)-Konfigurationen für Benutzer- und lokale Bereiche, projektbezogenen Status (zulässige Tools, Vertrauenseinstellungen) und verschiedene Caches. Projektbezogene MCP-Server werden separat in `.mcp.json` gespeichert.

115 

116<Note>

117 Claude Code erstellt automatisch zeitgestempelte Sicherungen von Konfigurationsdateien und behält die fünf neuesten Sicherungen bei, um Datenverlust zu verhindern.

118</Note>

119 

120```JSON Beispiel settings.json theme={null}

121{

122 "$schema": "https://json.schemastore.org/claude-code-settings.json",

123 "permissions": {

124 "allow": [

125 "Bash(npm run lint)",

126 "Bash(npm run test *)",

127 "Read(~/.zshrc)"

128 ],

129 "deny": [

130 "Bash(curl *)",

131 "Read(./.env)",

132 "Read(./.env.*)",

133 "Read(./secrets/**)"

134 ]

135 },

136 "env": {

137 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

138 "OTEL_METRICS_EXPORTER": "otlp"

139 },

140 "companyAnnouncements": [

141 "Welcome to Acme Corp! Review our code guidelines at docs.acme.com",

142 "Reminder: Code reviews required for all PRs",

143 "New security policy in effect"

144 ]

145}

146```

147 

148Die Zeile `$schema` im obigen Beispiel verweist auf das [offizielle JSON-Schema](https://json.schemastore.org/claude-code-settings.json) für Claude Code-Einstellungen. Das Hinzufügen zu Ihrer `settings.json` ermöglicht Autovervollständigung und Inline-Validierung in VS Code, Cursor und jedem anderen Editor, der JSON-Schema-Validierung unterstützt.

149 

150Das veröffentlichte Schema wird regelmäßig aktualisiert und enthält möglicherweise keine Einstellungen, die in den neuesten CLI-Versionen hinzugefügt wurden. Eine Validierungswarnung zu einem kürzlich dokumentierten Feld bedeutet daher nicht unbedingt, dass Ihre Konfiguration ungültig ist.

151 

152### Verfügbare Einstellungen

153 

154`settings.json` unterstützt eine Reihe von Optionen:

155 

156| Schlüssel | Beschreibung | Beispiel |

157| :-------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------- |

158| `agent` | Führen Sie den Haupt-Thread als benannten Subagent aus. Wendet den Systemaufforderung, die Werkzeugbeschränkungen und das Modell des Subagent an. Siehe [Rufen Sie Subagents explizit auf](/de/sub-agents#invoke-subagents-explicitly) | `"code-reviewer"` |

159| `allowedChannelPlugins` | (Nur verwaltete Einstellungen) Allowlist von Channel-Plugins, die Nachrichten pushen dürfen. Ersetzt die Standard-Anthropic-Allowlist, wenn gesetzt. Undefined = auf Standard zurückfallen, leeres Array = alle Channel-Plugins blockieren. Erfordert `channelsEnabled: true`. Siehe [Einschränken Sie, welche Channel-Plugins ausgeführt werden können](/de/channels#restrict-which-channel-plugins-can-run) | `[{ "marketplace": "claude-plugins-official", "plugin": "telegram" }]` |

160| `allowedHttpHookUrls` | Allowlist von URL-Mustern, auf die HTTP-Hooks abzielen können. Unterstützt `*` als Platzhalter. Wenn gesetzt, werden Hooks mit nicht übereinstimmenden URLs blockiert. Undefined = keine Einschränkung, leeres Array = alle HTTP-Hooks blockieren. Arrays werden über Einstellungsquellen zusammengeführt. Siehe [Hook-Konfiguration](#hook-configuration) | `["https://hooks.example.com/*"]` |

161| `allowedMcpServers` | Wenn in managed-settings.json gesetzt, Allowlist von MCP-Servern, die Benutzer konfigurieren können. Undefined = keine Einschränkungen, leeres Array = Lockdown. Gilt für alle Bereiche. Denylist hat Vorrang. Siehe [Verwaltete MCP-Konfiguration](/de/mcp#managed-mcp-configuration) | `[{ "serverName": "github" }]` |

162| `allowManagedHooksOnly` | (Nur verwaltete Einstellungen) Nur verwaltete Hooks, SDK-Hooks und Hooks von Plugins, die in verwalteten Einstellungen `enabledPlugins` erzwungen aktiviert sind, werden geladen. Benutzer-, Projekt- und alle anderen Plugin-Hooks werden blockiert. Siehe [Hook-Konfiguration](#hook-configuration) | `true` |

163| `allowManagedMcpServersOnly` | (Nur verwaltete Einstellungen) Nur `allowedMcpServers` aus verwalteten Einstellungen werden berücksichtigt. `deniedMcpServers` wird weiterhin aus allen Quellen zusammengeführt. Benutzer können weiterhin MCP-Server hinzufügen, aber nur die von Admin definierte Allowlist gilt. Siehe [Verwaltete MCP-Konfiguration](/de/mcp#managed-mcp-configuration) | `true` |

164| `allowManagedPermissionRulesOnly` | (Nur verwaltete Einstellungen) Verhindern Sie, dass Benutzer- und Projekteinstellungen `allow`, `ask` oder `deny` Berechtigungsregeln definieren. Nur Regeln in verwalteten Einstellungen gelten. Siehe [Nur verwaltete Einstellungen](/de/permissions#managed-only-settings) | `true` |

165| `alwaysThinkingEnabled` | Aktivieren Sie [erweitertes Denken](/de/model-config#extended-thinking) standardmäßig für alle Sitzungen. Normalerweise über den Befehl `/config` konfiguriert, anstatt direkt zu bearbeiten | `true` |

166| `apiKeyHelper` | Benutzerdefiniertes Skript, das in `/bin/sh` ausgeführt werden soll, um einen Auth-Wert zu generieren. Dieser Wert wird als `X-Api-Key` und `Authorization: Bearer` Header für Modellanfragen gesendet | `/bin/generate_temp_api_key.sh` |

167| `attribution` | Passen Sie die Zuschreibung für Git-Commits und Pull Requests an. Siehe [Zuschreibungseinstellungen](#attribution-settings) | `{"commit": "🤖 Generated with Claude Code", "pr": ""}` |

168| `autoMemoryDirectory` | Benutzerdefiniertes Verzeichnis für [automatisches Speichern](/de/memory#storage-location). Akzeptiert einen absoluten Pfad oder einen `~/`-erweiterten Pfad. Akzeptiert von Richtlinien- und Benutzereinstellungen sowie vom Flag `--settings`. Nicht akzeptiert von Projekt- oder lokalen Einstellungen, da ein geklontes Repository eine Datei bereitstellen könnte, um Speicherschreibvorgänge an sensible Orte umzuleiten | `"~/my-memory-dir"` |

169| `autoMode` | Passen Sie an, was der [Auto-Modus](/de/permission-modes#eliminate-prompts-with-auto-mode)-Klassifizierer blockiert und erlaubt. Enthält `environment`, `allow` und `soft_deny` Arrays von Prosa-Regeln. Schließen Sie die Literalzeichenkette `"$defaults"` in ein Array ein, um die integrierten Regeln an dieser Position zu erben. Siehe [Konfigurieren Sie den Auto-Modus](/de/auto-mode-config). Nicht aus gemeinsamen Projekteinstellungen gelesen | `{"soft_deny": ["$defaults", "Never run terraform apply"]}` |

170| `autoScrollEnabled` | Im [Fullscreen-Rendering](/de/fullscreen) folgen Sie neuer Ausgabe zum unteren Ende des Gesprächs. Standard: `true`. Wird in `/config` als **Auto-scroll** angezeigt. Berechtigungsaufforderungen scrollen weiterhin in die Ansicht, wenn dies ausgeschaltet ist | `false` |

171| `autoUpdatesChannel` | Release-Kanal zum Folgen von Updates. Verwenden Sie `"stable"` für eine Version, die normalerweise etwa eine Woche alt ist und Versionen mit großen Regressionen überspringt, oder `"latest"` (Standard) für die neueste Version | `"stable"` |

172| `availableModels` | Beschränken Sie, welche Modelle Benutzer über `/model`, `--model` oder `ANTHROPIC_MODEL` auswählen können. Beeinflusst nicht die Standardoption. Siehe [Modellauswahl einschränken](/de/model-config#restrict-model-selection) | `["sonnet", "haiku"]` |

173| `awaySummaryEnabled` | Zeigen Sie eine einzeilige Sitzungszusammenfassung an, wenn Sie nach einigen Minuten zur Befehlszeile zurückkehren. Setzen Sie auf `false` oder deaktivieren Sie Sitzungszusammenfassung in `/config`, um zu deaktivieren. Gleich wie [`CLAUDE_CODE_ENABLE_AWAY_SUMMARY`](/de/env-vars) | `true` |

174| `awsAuthRefresh` | Benutzerdefiniertes Skript, das das `.aws`-Verzeichnis ändert (siehe [erweiterte Anmeldedatenkonfiguration](/de/amazon-bedrock#advanced-credential-configuration)) | `aws sso login --profile myprofile` |

175| `awsCredentialExport` | Benutzerdefiniertes Skript, das JSON mit AWS-Anmeldedaten ausgibt (siehe [erweiterte Anmeldedatenkonfiguration](/de/amazon-bedrock#advanced-credential-configuration)) | `/bin/generate_aws_grant.sh` |

176| `blockedMarketplaces` | (Nur verwaltete Einstellungen) Blocklist von Marketplace-Quellen. Erzwungen bei Marketplace-Hinzufügung und bei Plugin-Installation, Update, Aktualisierung und Auto-Update, sodass ein Marketplace, der vor dem Setzen der Richtlinie hinzugefügt wurde, nicht zum Abrufen von Plugins verwendet werden kann. Blockierte Quellen werden vor dem Download überprüft, sodass sie das Dateisystem nie berühren. Siehe [Verwaltete Marketplace-Einschränkungen](/de/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "untrusted/plugins" }]` |

177| `channelsEnabled` | (Nur verwaltete Einstellungen) Erlauben Sie [Kanäle](/de/channels) für Team- und Enterprise-Benutzer. Nicht gesetzt oder `false` blockiert die Kanalzustellung unabhängig davon, was Benutzer an `--channels` übergeben | `true` |

178| `cleanupPeriodDays` | Sitzungsdateien, die älter als dieser Zeitraum sind, werden beim Start gelöscht (Standard: 30 Tage, Minimum 1). Das Setzen auf `0` wird mit einem Validierungsfehler abgelehnt. Steuert auch den Altersgrenzwert für die automatische Entfernung von [verwaisten Subagent-Worktrees](/de/worktrees#clean-up-worktrees) beim Start. Um Transkriptschreibvorgänge vollständig zu deaktivieren, setzen Sie die Umgebungsvariable [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/de/env-vars) oder verwenden Sie im nicht-interaktiven Modus (`-p`) das Flag `--no-session-persistence` oder die SDK-Option `persistSession: false`. | `20` |

179| `companyAnnouncements` | Ankündigung, die Benutzern beim Start angezeigt werden soll. Wenn mehrere Ankündigungen bereitgestellt werden, werden sie zufällig durchlaufen. | `["Welcome to Acme Corp! Review our code guidelines at docs.acme.com"]` |

180| `defaultShell` | Standard-Shell für Input-Box `!` Befehle. Akzeptiert `"bash"` (Standard) oder `"powershell"`. Das Setzen auf `"powershell"` leitet interaktive `!` Befehle über PowerShell unter Windows. Erfordert `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. Siehe [PowerShell-Tool](/de/tools-reference#powershell-tool) | `"powershell"` |

181| `deniedMcpServers` | Wenn in managed-settings.json gesetzt, Denylist von MCP-Servern, die explizit blockiert sind. Gilt für alle Bereiche einschließlich verwalteter Server. Denylist hat Vorrang vor Allowlist. Siehe [Verwaltete MCP-Konfiguration](/de/mcp#managed-mcp-configuration) | `[{ "serverName": "filesystem" }]` |

182| `disableAllHooks` | Deaktivieren Sie alle [Hooks](/de/hooks) und alle benutzerdefinierten [Statuszeilen](/de/statusline) | `true` |

183| `disableAutoMode` | Setzen Sie auf `"disable"`, um zu verhindern, dass der [Auto-Modus](/de/permission-modes#eliminate-prompts-with-auto-mode) aktiviert wird. Entfernt `auto` aus dem `Shift+Tab`-Zyklus und lehnt `--permission-mode auto` beim Start ab. Am nützlichsten in [verwalteten Einstellungen](/de/permissions#managed-settings), wo Benutzer es nicht überschreiben können | `"disable"` |

184| `disableDeepLinkRegistration` | Setzen Sie auf `"disable"`, um zu verhindern, dass Claude Code den `claude-cli://` Protokoll-Handler beim Start mit dem Betriebssystem registriert. Deep Links ermöglichen es externen Tools, eine Claude Code-Sitzung mit einer vorausgefüllten Aufforderung zu öffnen. Nützlich in Umgebungen, in denen die Protokoll-Handler-Registrierung eingeschränkt oder separat verwaltet wird | `"disable"` |

185| `disabledMcpjsonServers` | Liste spezifischer MCP-Server aus `.mcp.json`-Dateien zum Ablehnen | `["filesystem"]` |

186| `disableSkillShellExecution` | Deaktivieren Sie die Inline-Shell-Ausführung für `` !`...` `` und ` ```! ` Blöcke in [Skills](/de/skills) und benutzerdefinierten Befehlen aus Benutzer-, Projekt-, Plugin- oder zusätzlichen Verzeichnisquellen. Befehle werden durch `[shell command execution disabled by policy]` ersetzt, anstatt ausgeführt zu werden. Gebündelte und verwaltete Skills sind nicht betroffen. Am nützlichsten in [verwalteten Einstellungen](/de/permissions#managed-settings), wo Benutzer es nicht überschreiben können | `true` |

187| `editorMode` | Tastaturkürzel-Modus für die Eingabeaufforderung: `"normal"` oder `"vim"`. Standard: `"normal"`. Wird in `/config` als **Editor mode** angezeigt | `"vim"` |

188| `effortLevel` | Persistieren Sie die [Anstrengungsstufe](/de/model-config#adjust-effort-level) über Sitzungen hinweg. Akzeptiert `"low"`, `"medium"`, `"high"` oder `"xhigh"`. Wird automatisch geschrieben, wenn Sie `/effort` mit einem dieser Werte ausführen. Siehe [Anstrengungsstufe anpassen](/de/model-config#adjust-effort-level) für unterstützte Modelle | `"xhigh"` |

189| `enableAllProjectMcpServers` | Genehmigen Sie automatisch alle MCP-Server, die in Projekt-`.mcp.json`-Dateien definiert sind | `true` |

190| `enabledMcpjsonServers` | Liste spezifischer MCP-Server aus `.mcp.json`-Dateien zum Genehmigen | `["memory", "github"]` |

191| `env` | Umgebungsvariablen, die auf jede Sitzung angewendet werden | `{"FOO": "bar"}` |

192| `fastModePerSessionOptIn` | Wenn `true`, bleibt der schnelle Modus nicht über Sitzungen hinweg bestehen. Jede Sitzung startet mit ausgeschaltetem schnellen Modus und erfordert, dass Benutzer ihn mit `/fast` aktivieren. Die Voreinstellung des Benutzers für den schnellen Modus wird weiterhin gespeichert. Siehe [Opt-in pro Sitzung erforderlich](/de/fast-mode#require-per-session-opt-in) | `true` |

193| `feedbackSurveyRate` | Wahrscheinlichkeit (0–1), dass die [Sitzungsqualitätsumfrage](/de/data-usage#session-quality-surveys) angezeigt wird, wenn berechtigt. Setzen Sie auf `0`, um vollständig zu unterdrücken. Nützlich bei Verwendung von Bedrock, Vertex oder Foundry, wo die Standard-Stichprobenquote nicht gilt | `0.05` |

194| `fileSuggestion` | Konfigurieren Sie ein benutzerdefiniertes Skript für `@` Datei-Autovervollständigung. Siehe [Dateivorschlag-Einstellungen](#file-suggestion-settings) | `{"type": "command", "command": "~/.claude/file-suggestion.sh"}` |

195| `forceLoginMethod` | Verwenden Sie `claudeai`, um die Anmeldung auf Claude.ai-Konten zu beschränken, `console`, um die Anmeldung auf Claude Console (API-Nutzungsabrechnung) Konten zu beschränken | `claudeai` |

196| `forceLoginOrgUUID` | Geben Sie die UUID einer Organisation an, um sie während der Anmeldung automatisch auszuwählen und den Organisationsauswahlschritt zu umgehen, oder akzeptieren Sie ein Array von UUIDs, wobei jede aufgelistete Organisation ohne Vorauswahl akzeptiert wird. Wenn in verwalteten Einstellungen gesetzt, schlägt die Anmeldung fehl, wenn das authentifizierte Konto nicht zu einer aufgelisteten Organisation gehört; ein leeres Array schlägt geschlossen fehl und blockiert die Anmeldung mit einer Fehlkonfigurationsmeldung | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` oder `["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]` |

197| `forceRemoteSettingsRefresh` | (Nur verwaltete Einstellungen) Blockieren Sie den CLI-Start, bis verwaltete Einstellungen aus der Ferne vom Server abgerufen werden. Wenn der Abruf fehlschlägt, wird die CLI beendet, anstatt mit zwischengespeicherten oder keinen Einstellungen fortzufahren. Wenn nicht gesetzt, wird der Start ohne Warten auf Remote-Einstellungen fortgesetzt. Siehe [Fail-Closed-Durchsetzung](/de/server-managed-settings#enforce-fail-closed-startup) | `true` |

198| `hooks` | Konfigurieren Sie benutzerdefinierte Befehle, die bei Lebenszyklusereignissen ausgeführt werden. Siehe [Hooks-Dokumentation](/de/hooks) für das Format | Siehe [Hooks](/de/hooks) |

199| `httpHookAllowedEnvVars` | Allowlist von Umgebungsvariablennamen, die HTTP-Hooks in Header interpolieren können. Wenn gesetzt, ist die effektive `allowedEnvVars` jedes Hooks der Schnittpunkt mit dieser Liste. Undefined = keine Einschränkung. Arrays werden über Einstellungsquellen zusammengeführt. Siehe [Hook-Konfiguration](#hook-configuration) | `["MY_TOKEN", "HOOK_SECRET"]` |

200| `includeCoAuthoredBy` | **Veraltet**: Verwenden Sie stattdessen `attribution`. Ob die `co-authored-by Claude` Byline in Git-Commits und Pull Requests einbezogen werden soll (Standard: `true`) | `false` |

201| `includeGitInstructions` | Integrierte Commit- und PR-Workflow-Anweisungen und den Git-Status-Snapshot in Claudes Systemaufforderung einbeziehen (Standard: `true`). Setzen Sie auf `false`, um beide zu entfernen, z. B. wenn Sie Ihre eigenen Git-Workflow-Skills verwenden. Die Umgebungsvariable `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` hat Vorrang vor dieser Einstellung, wenn sie gesetzt ist | `false` |

202| `language` | Konfigurieren Sie Claudes bevorzugte Antwortsprache (z. B. `"japanese"`, `"spanish"`, `"french"`). Claude wird standardmäßig in dieser Sprache antworten. Legt auch die [Sprachdiktiersprache](/de/voice-dictation#change-the-dictation-language) fest | `"japanese"` |

203| `minimumVersion` | Verhindern Sie, dass der Auto-Updater und `claude update` eine Version unter dieser installieren. Das Wechseln vom `"latest"`-Kanal zu `"stable"` über `/config` fordert Sie auf, auf der aktuellen Version zu bleiben oder das Downgrade zu erlauben. Wenn Sie sich entscheiden zu bleiben, wird dieser Wert gesetzt. Auch nützlich in [verwalteten Einstellungen](/de/permissions#managed-settings) um eine organisationsweite Mindestversion festzulegen | `"2.1.100"` |

204| `model` | Überschreiben Sie das Standardmodell für Claude Code | `"claude-sonnet-4-6"` |

205| `modelOverrides` | Ordnen Sie Anthropic-Modell-IDs Anbieter-spezifischen Modell-IDs wie Bedrock-Inferenzprofil-ARNs zu. Jeder Modellwähler-Eintrag verwendet seinen zugeordneten Wert beim Aufrufen der Anbieter-API. Siehe [Modell-IDs pro Version überschreiben](/de/model-config#override-model-ids-per-version) | `{"claude-opus-4-6": "arn:aws:bedrock:..."}` |

206| `otelHeadersHelper` | Skript zum Generieren dynamischer OpenTelemetry-Header. Wird beim Start und regelmäßig ausgeführt (siehe [Dynamische Header](/de/monitoring-usage#dynamic-headers)) | `/bin/generate_otel_headers.sh` |

207| `outputStyle` | Konfigurieren Sie einen Ausgabestil, um die Systemaufforderung anzupassen. Siehe [Ausgabestil-Dokumentation](/de/output-styles) | `"Explanatory"` |

208| `permissions` | Siehe Tabelle unten für die Struktur der Berechtigungen. | |

209| `plansDirectory` | Passen Sie an, wo Plandateien gespeichert werden. Der Pfad ist relativ zum Projektstamm. Standard: `~/.claude/plans` | `"./plans"` |

210| `pluginTrustMessage` | (Nur verwaltete Einstellungen) Benutzerdefinierte Nachricht, die der vor der Installation angezeigten Plugin-Vertrauenswarnung angehängt wird. Verwenden Sie dies, um organisationsspezifischen Kontext hinzuzufügen, z. B. um zu bestätigen, dass Plugins aus Ihrem internen Marketplace überprüft sind. | `"All plugins from our marketplace are approved by IT"` |

211| `preferredNotifChannel` | Methode für Task-Complete- und Berechtigungsaufforderungs-Benachrichtigungen: `"auto"`, `"terminal_bell"`, `"iterm2"`, `"iterm2_with_bell"`, `"kitty"`, `"ghostty"` oder `"notifications_disabled"`. Standard: `"auto"`, das eine Desktop-Benachrichtigung in iTerm2, Ghostty und Kitty sendet und in anderen Terminals nichts tut. Setzen Sie `"terminal_bell"`, um das Glockenzeichen in jedem Terminal zu klingeln. Wird in `/config` als **Notifications** angezeigt. Siehe [Erhalten Sie einen Terminal-Glockenzeichen oder eine Benachrichtigung](/de/terminal-config#get-a-terminal-bell-or-notification) | `"terminal_bell"` |

212| `prefersReducedMotion` | Reduzieren oder deaktivieren Sie UI-Animationen (Spinner, Shimmer, Flash-Effekte) für Barrierefreiheit | `true` |

213| `prUrlTemplate` | URL-Vorlage für das PR-Badge, das in der Fußzeile und in Tool-Ergebnis-Zusammenfassungen angezeigt wird. Ersetzt `{host}`, `{owner}`, `{repo}`, `{number}` und `{url}` aus der von `gh` gemeldeten PR-URL. Verwenden Sie dies, um PR-Links auf ein internes Code-Review-Tool statt auf `github.com` zu verweisen. Beeinflusst nicht `#123` Autolinks in Claudes Prosa | `"https://reviews.example.com/{owner}/{repo}/pull/{number}"` |

214| `respectGitignore` | Steuern Sie, ob der `@` Datei-Picker `.gitignore`-Muster respektiert. Wenn `true` (Standard), werden Dateien, die `.gitignore`-Mustern entsprechen, aus Vorschlägen ausgeschlossen | `false` |

215| `showClearContextOnPlanAccept` | Zeigen Sie die Option "Kontext löschen" auf dem Plan-Akzeptanz-Bildschirm an. Standardmäßig `false`. Setzen Sie auf `true`, um die Option wiederherzustellen | `true` |

216| `showThinkingSummaries` | Zeigen Sie [erweitertes Denken](/de/model-config#extended-thinking) Zusammenfassungen in interaktiven Sitzungen an. Wenn nicht gesetzt oder `false` (Standard im interaktiven Modus), werden Denk-Blöcke von der API redigiert und als zusammengeklappter Stub angezeigt. Redaktion ändert nur, was Sie sehen, nicht was das Modell generiert: Um Denk-Ausgaben zu reduzieren, [senken Sie das Budget oder deaktivieren Sie das Denken](/de/model-config#extended-thinking) stattdessen. Der nicht-interaktive Modus (`-p`) und SDK-Aufrufer erhalten immer Zusammenfassungen unabhängig von dieser Einstellung | `true` |

217| `showTurnDuration` | Zeigen Sie Nachrichten zur Dauer der Runde nach Antworten an, z. B. "Cooked for 1m 6s". Standard: `true`. Wird in `/config` als **Show turn duration** angezeigt | `false` |

218| `skipWebFetchPreflight` | Überspringen Sie die [WebFetch-Domänensicherheitsprüfung](/de/data-usage#webfetch-domain-safety-check), die jeden angeforderten Hostnamen an `api.anthropic.com` sendet, bevor Sie abrufen. Setzen Sie auf `true` in Umgebungen, die den Datenverkehr zu Anthropic blockieren, wie Bedrock, Vertex AI oder Foundry-Bereitstellungen mit restriktivem Ausgang. Wenn übersprungen, versucht WebFetch jede URL, ohne die Blocklist zu konsultieren | `true` |

219| `spinnerTipsEnabled` | Zeigen Sie Tipps im Spinner an, während Claude arbeitet. Setzen Sie auf `false`, um Tipps zu deaktivieren (Standard: `true`) | `false` |

220| `spinnerTipsOverride` | Überschreiben Sie Spinner-Tipps mit benutzerdefinierten Zeichenketten. `tips`: Array von Tipp-Zeichenketten. `excludeDefault`: wenn `true`, nur benutzerdefinierte Tipps anzeigen; wenn `false` oder nicht vorhanden, werden benutzerdefinierte Tipps mit integrierten Tipps zusammengeführt | `{ "excludeDefault": true, "tips": ["Use our internal tool X"] }` |

221| `spinnerVerbs` | Passen Sie die Aktionsverben an, die im Spinner und in Nachrichten zur Dauer der Runde angezeigt werden. Setzen Sie `mode` auf `"replace"`, um nur Ihre Verben zu verwenden, oder `"append"`, um sie zu den Standardwerten hinzuzufügen | `{"mode": "append", "verbs": ["Pondering", "Crafting"]}` |

222| `sshConfigs` | SSH-Verbindungen, die in der [Desktop](/de/desktop#pre-configure-ssh-connections-for-your-team)-Umgebungs-Dropdown angezeigt werden. Jeder Eintrag erfordert `id`, `name` und `sshHost`; `sshPort`, `sshIdentityFile` und `startDirectory` sind optional. Wenn in verwalteten Einstellungen gesetzt, sind Verbindungen für Benutzer schreibgeschützt. Nur aus verwalteten und Benutzereinstellungen gelesen | `[{"id": "dev-vm", "name": "Dev VM", "sshHost": "user@dev.example.com"}]` |

223| `statusLine` | Konfigurieren Sie eine benutzerdefinierte Statuszeile zur Anzeige von Kontext. Siehe [`statusLine`-Dokumentation](/de/statusline) | `{"type": "command", "command": "~/.claude/statusline.sh"}` |

224| `strictKnownMarketplaces` | (Nur verwaltete Einstellungen) Allowlist von Plugin-Marketplace-Quellen. Undefined = keine Einschränkungen, leeres Array = Lockdown. Erzwungen bei Marketplace-Hinzufügung und bei Plugin-Installation, Update, Aktualisierung und Auto-Update, sodass ein Marketplace, der vor dem Setzen der Richtlinie hinzugefügt wurde, nicht zum Abrufen von Plugins verwendet werden kann. Siehe [Verwaltete Marketplace-Einschränkungen](/de/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "acme-corp/plugins" }]` |

225| `teammateMode` | Wie [Agent-Team](/de/agent-teams) Teamkollegen angezeigt werden: `auto` (wählt geteilte Bereiche in tmux oder iTerm2, ansonsten In-Process), `in-process` oder `tmux`. Siehe [Wählen Sie einen Anzeigemodus](/de/agent-teams#choose-a-display-mode) | `"in-process"` |

226| `terminalProgressBarEnabled` | Zeigen Sie die Terminal-Fortschrittsleiste in unterstützten Terminals an: ConEmu, Ghostty 1.2.0+ und iTerm2 3.6.6+. Standard: `true`. Wird in `/config` als **Terminal progress bar** angezeigt | `false` |

227| `tui` | Terminal-UI-Renderer. Verwenden Sie `"fullscreen"` für den flimmerfreien [Alt-Screen-Renderer](/de/fullscreen) mit virtualisiertem Scrollback. Verwenden Sie `"default"` für den klassischen Main-Screen-Renderer. Setzen Sie über `/tui` | `"fullscreen"` |

228| `useAutoModeDuringPlan` | Ob Plan Mode Auto-Mode-Semantik verwendet, wenn Auto Mode verfügbar ist. Standard: `true`. Nicht aus gemeinsamen Projekteinstellungen gelesen. Wird in `/config` als "Use auto mode during plan" angezeigt | `false` |

229| `viewMode` | Standard-Transkript-Ansichtsmodus beim Start: `"default"`, `"verbose"` oder `"focus"`. Überschreibt die klebrige `/focus`-Auswahl, wenn gesetzt | `"verbose"` |

230| `voice` | [Sprachdiktier](/de/voice-dictation)-Einstellungen: `enabled` aktiviert Diktieren, `mode` wählt `"hold"` oder `"tap"`, und `autoSubmit` sendet die Aufforderung bei Tastenfreigabe im Hold-Modus. Wird automatisch geschrieben, wenn Sie `/voice` ausführen. Erfordert ein Claude.ai-Konto | `{ "enabled": true, "mode": "tap" }` |

231| `voiceEnabled` | Veralteter Alias für `voice.enabled`. Bevorzugen Sie das `voice`-Objekt | `true` |

232| `wslInheritsWindowsSettings` | (Nur Windows verwaltete Einstellungen) Wenn `true`, liest Claude Code auf WSL verwaltete Einstellungen aus der Windows-Richtlinienkette zusätzlich zu `/etc/claude-code`, wobei Windows-Quellen Vorrang haben. Wird nur berücksichtigt, wenn in der HKLM-Registrierungsschlüssel oder `C:\Program Files\ClaudeCode\managed-settings.json` gesetzt, beide erfordern Windows-Admin zum Schreiben. Damit die HKCU-Richtlinie auch auf WSL gilt, muss das Flag zusätzlich in HKCU selbst gesetzt werden. Hat keine Auswirkung auf natives Windows | `true` |

233 

234### Globale Konfigurationseinstellungen

235 

236Diese Einstellungen werden in `~/.claude.json` statt in `settings.json` gespeichert. Das Hinzufügen zu `settings.json` löst einen Schema-Validierungsfehler aus.

237 

238<Note>

239 Versionen vor v2.1.119 speichern auch `autoScrollEnabled`, `editorMode`, `showTurnDuration`, `teammateMode` und `terminalProgressBarEnabled` hier statt in `settings.json`.

240</Note>

241 

242| Schlüssel | Beschreibung | Beispiel |

243| :------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------- |

244| `autoConnectIde` | Verbinden Sie sich automatisch mit einer laufenden IDE, wenn Claude Code von einem externen Terminal aus startet. Standard: `false`. Wird in `/config` als **Auto-connect to IDE (external terminal)** angezeigt, wenn außerhalb eines VS Code oder JetBrains-Terminals ausgeführt wird | `true` |

245| `autoInstallIdeExtension` | Installieren Sie die Claude Code IDE-Erweiterung automatisch, wenn Sie von einem VS Code-Terminal aus ausgeführt werden. Standard: `true`. Wird in `/config` als **Auto-install IDE extension** angezeigt, wenn Sie in einem VS Code oder JetBrains-Terminal ausgeführt werden. Sie können auch die Umgebungsvariable [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](/de/env-vars) setzen | `false` |

246| `externalEditorContext` | Stellen Sie Claudes vorherige Antwort als `#`-kommentierter Kontext voran, wenn Sie den externen Editor mit `Ctrl+G` öffnen. Standard: `false`. Wird in `/config` als **Show last response in external editor** angezeigt | `true` |

247 

248### Worktree-Einstellungen

249 

250Konfigurieren Sie, wie `--worktree` Git-Worktrees erstellt und verwaltet. Verwenden Sie diese Einstellungen, um Speicherplatz und Startzeit in großen Monorepos zu reduzieren.

251 

252| Schlüssel | Beschreibung | Beispiel |

253| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------ |

254| `worktree.symlinkDirectories` | Verzeichnisse, die vom Haupt-Repository in jeden Worktree symlinkt werden, um große Verzeichnisse auf der Festplatte zu duplizieren. Standardmäßig werden keine Verzeichnisse symlinkt | `["node_modules", ".cache"]` |

255| `worktree.sparsePaths` | Verzeichnisse, die in jedem Worktree über Git Sparse-Checkout (Cone-Modus) ausgecheckt werden. Nur die aufgelisteten Pfade werden auf die Festplatte geschrieben, was in großen Monorepos schneller ist | `["packages/my-app", "shared/utils"]` |

256 

257Um gitignorierte Dateien wie `.env` in neue Worktrees zu kopieren, verwenden Sie stattdessen eine [`.worktreeinclude`-Datei](/de/worktrees#copy-gitignored-files-into-worktrees) in Ihrem Projektstamm.

258 

259### Berechtigungseinstellungen

260 

261| Schlüssel | Beschreibung | Beispiel |

262| :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |

263| `allow` | Array von Berechtigungsregeln, um die Werkzeugnutzung zu erlauben. Siehe [Berechtigungsregelsyntax](#permission-rule-syntax) unten für Details zur Mustererkennung | `[ "Bash(git diff *)" ]` |

264| `ask` | Array von Berechtigungsregeln, um bei der Werkzeugnutzung um Bestätigung zu bitten. Siehe [Berechtigungsregelsyntax](#permission-rule-syntax) unten | `[ "Bash(git push *)" ]` |

265| `deny` | Array von Berechtigungsregeln, um die Werkzeugnutzung zu verweigern. Verwenden Sie dies, um sensible Dateien vom Claude Code-Zugriff auszuschließen. Siehe [Berechtigungsregelsyntax](#permission-rule-syntax) und [Bash-Berechtigungsbeschränkungen](/de/permissions#tool-specific-permission-rules) | `[ "WebFetch", "Bash(curl *)", "Read(./.env)", "Read(./secrets/**)" ]` |

266| `additionalDirectories` | Zusätzliche [Arbeitsverzeichnisse](/de/permissions#working-directories) für Dateizugriff. Die meisten `.claude/`-Konfigurationen werden [nicht erkannt](/de/permissions#additional-directories-grant-file-access-not-configuration) aus diesen Verzeichnissen | `[ "../docs/" ]` |

267| `defaultMode` | Standard-[Berechtigungsmodus](/de/permission-modes) beim Öffnen von Claude Code. Gültige Werte: `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`. Das CLI-Flag `--permission-mode` überschreibt diese Einstellung für eine einzelne Sitzung | `"acceptEdits"` |

268| `disableBypassPermissionsMode` | Setzen Sie auf `"disable"`, um zu verhindern, dass der `bypassPermissions`-Modus aktiviert wird. Dies deaktiviert das Befehlszeilenflag `--dangerously-skip-permissions`. Normalerweise in [verwalteten Einstellungen](/de/permissions#managed-settings) platziert, um Organisationsrichtlinien durchzusetzen, funktioniert aber aus jedem Bereich | `"disable"` |

269| `skipDangerousModePermissionPrompt` | Überspringen Sie die Bestätigungsaufforderung, die vor dem Betreten des Bypass-Berechtigungsmodus über `--dangerously-skip-permissions` oder `defaultMode: "bypassPermissions"` angezeigt wird. Wird ignoriert, wenn in Projekteinstellungen (`.claude/settings.json`) gesetzt, um zu verhindern, dass nicht vertrauenswürdige Repositories die Aufforderung automatisch umgehen | `true` |

270 

271### Berechtigungsregelsyntax

272 

273Berechtigungsregeln folgen dem Format `Tool` oder `Tool(specifier)`. Regeln werden in der Reihenfolge ausgewertet: zuerst Deny-Regeln, dann Ask, dann Allow. Die erste übereinstimmende Regel gewinnt.

274 

275Schnelle Beispiele:

276 

277| Regel | Effekt |

278| :----------------------------- | :-------------------------------------------- |

279| `Bash` | Passt auf alle Bash-Befehle |

280| `Bash(npm run *)` | Passt auf Befehle, die mit `npm run` beginnen |

281| `Read(./.env)` | Passt auf das Lesen der `.env`-Datei |

282| `WebFetch(domain:example.com)` | Passt auf Abrufanfragen an example.com |

283 

284Für die vollständige Referenz der Regelsyntax, einschließlich Platzhalterverhalten, werkzeugspezifischer Muster für Read, Edit, WebFetch, MCP und Agent-Regeln sowie Sicherheitsbeschränkungen von Bash-Mustern, siehe [Berechtigungsregelsyntax](/de/permissions#permission-rule-syntax).

285 

286### Sandbox-Einstellungen

287 

288Konfigurieren Sie erweitertes Sandbox-Verhalten. Sandboxing isoliert Bash-Befehle von Ihrem Dateisystem und Netzwerk. Siehe [Sandboxing](/de/sandboxing) für Details.

289 

290| Schlüssel | Beschreibung | Beispiel |

291| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------- |

292| `enabled` | Aktivieren Sie Bash-Sandboxing (macOS, Linux und WSL2). Standard: false | `true` |

293| `failIfUnavailable` | Beenden Sie mit einem Fehler beim Start, wenn `sandbox.enabled` true ist, aber die Sandbox nicht gestartet werden kann (fehlende Abhängigkeiten oder nicht unterstützte Plattform). Wenn false (Standard), wird eine Warnung angezeigt und Befehle werden unsandboxed ausgeführt. Vorgesehen für verwaltete Einstellungsbereitstellungen, die Sandboxing als Hard Gate erfordern | `true` |

294| `autoAllowBashIfSandboxed` | Genehmigen Sie Bash-Befehle automatisch, wenn sie in einer Sandbox ausgeführt werden. Standard: true | `true` |

295| `excludedCommands` | Befehle, die außerhalb der Sandbox ausgeführt werden sollten | `["docker *"]` |

296| `allowUnsandboxedCommands` | Erlauben Sie Befehlen, außerhalb der Sandbox über den Parameter `dangerouslyDisableSandbox` ausgeführt zu werden. Wenn auf `false` gesetzt, ist die Fluchtluke `dangerouslyDisableSandbox` vollständig deaktiviert und alle Befehle müssen in einer Sandbox ausgeführt werden (oder in `excludedCommands` sein). Nützlich für Unternehmensrichtlinien, die striktes Sandboxing erfordern. Standard: true | `false` |

297| `filesystem.allowWrite` | Zusätzliche Pfade, in die Sandbox-Befehle schreiben können. Arrays werden über alle Einstellungsbereiche zusammengeführt: Benutzer-, Projekt- und verwaltete Pfade werden kombiniert, nicht ersetzt. Auch zusammengeführt mit Pfaden aus `Edit(...)` Allow-Berechtigungsregeln. Siehe [Pfadpräfixe](#sandbox-path-prefixes) unten. | `["/tmp/build", "~/.kube"]` |

298| `filesystem.denyWrite` | Pfade, in die Sandbox-Befehle nicht schreiben können. Arrays werden über alle Einstellungsbereiche zusammengeführt. Auch zusammengeführt mit Pfaden aus `Edit(...)` Deny-Berechtigungsregeln. | `["/etc", "/usr/local/bin"]` |

299| `filesystem.denyRead` | Pfade, aus denen Sandbox-Befehle nicht lesen können. Arrays werden über alle Einstellungsbereiche zusammengeführt. Auch zusammengeführt mit Pfaden aus `Read(...)` Deny-Berechtigungsregeln. | `["~/.aws/credentials"]` |

300| `filesystem.allowRead` | Pfade zum erneuten Erlauben des Lesens innerhalb von `denyRead`-Regionen. Hat Vorrang vor `denyRead`. Arrays werden über alle Einstellungsbereiche zusammengeführt. Verwenden Sie dies, um Workspace-only-Lesezugriffsmuster zu erstellen. | `["."]` |

301| `filesystem.allowManagedReadPathsOnly` | (Nur verwaltete Einstellungen) Nur `filesystem.allowRead` Pfade aus verwalteten Einstellungen werden berücksichtigt. `denyRead` wird weiterhin aus allen Quellen zusammengeführt. Standard: false | `true` |

302| `network.allowUnixSockets` | (Nur macOS) Unix-Socket-Pfade, auf die in der Sandbox zugegriffen werden kann. Wird unter Linux und WSL2 ignoriert, wo der Seccomp-Filter `socket(AF_UNIX, ...)` Aufrufe nicht überprüfen kann; verwenden Sie stattdessen `allowAllUnixSockets`. | `["~/.ssh/agent-socket"]` |

303| `network.allowAllUnixSockets` | Erlauben Sie alle Unix-Socket-Verbindungen in der Sandbox. Unter Linux und WSL2 ist dies die einzige Möglichkeit, Unix-Sockets zu erlauben, da der Seccomp-Filter übersprungen wird, der ansonsten `socket(AF_UNIX, ...)` Aufrufe blockiert. Standard: false | `true` |

304| `network.allowLocalBinding` | Erlauben Sie das Binden an Localhost-Ports (nur macOS). Standard: false | `true` |

305| `network.allowMachLookup` | Zusätzliche XPC/Mach-Servicenamen, die die Sandbox nachschlagen darf (nur macOS). Unterstützt ein einzelnes nachfolgendes `*` für Präfix-Abgleich. Erforderlich für Tools, die über XPC kommunizieren, wie der iOS-Simulator oder Playwright. | `["com.apple.coresimulator.*"]` |

306| `network.allowedDomains` | Array von Domänen, um ausgehenden Netzwerkverkehr zu erlauben. Unterstützt Platzhalter (z. B. `*.example.com`). | `["github.com", "*.npmjs.org"]` |

307| `network.deniedDomains` | Array von Domänen, um ausgehenden Netzwerkverkehr zu blockieren. Unterstützt die gleiche Platzhaltersyntax wie `allowedDomains`. Hat Vorrang vor `allowedDomains`, wenn beide übereinstimmen. Wird aus allen Einstellungsquellen unabhängig von `allowManagedDomainsOnly` zusammengeführt. | `["sensitive.cloud.example.com"]` |

308| `network.allowManagedDomainsOnly` | (Nur verwaltete Einstellungen) Nur `allowedDomains` und `WebFetch(domain:...)` Allow-Regeln aus verwalteten Einstellungen werden berücksichtigt. Domänen aus Benutzer-, Projekt- und lokalen Einstellungen werden ignoriert. Nicht zulässige Domänen werden automatisch blockiert, ohne den Benutzer zu fragen. Verweigerte Domänen werden weiterhin aus allen Quellen berücksichtigt. Standard: false | `true` |

309| `network.httpProxyPort` | HTTP-Proxy-Port, der verwendet wird, wenn Sie Ihren eigenen Proxy verwenden möchten. Wenn nicht angegeben, führt Claude seinen eigenen Proxy aus. | `8080` |

310| `network.socksProxyPort` | SOCKS5-Proxy-Port, der verwendet wird, wenn Sie Ihren eigenen Proxy verwenden möchten. Wenn nicht angegeben, führt Claude seinen eigenen Proxy aus. | `8081` |

311| `enableWeakerNestedSandbox` | Aktivieren Sie schwächere Sandbox für unprivilegierte Docker-Umgebungen (nur Linux und WSL2). **Reduziert die Sicherheit.** Standard: false | `true` |

312| `enableWeakerNetworkIsolation` | (Nur macOS) Erlauben Sie den Zugriff auf den System-TLS-Vertrauensdienst (`com.apple.trustd.agent`) in der Sandbox. Erforderlich für Go-basierte Tools wie `gh`, `gcloud` und `terraform`, um TLS-Zertifikate zu überprüfen, wenn `httpProxyPort` mit einem MITM-Proxy und benutzerdefinierter CA verwendet wird. **Reduziert die Sicherheit** durch Öffnen eines möglichen Datenexfiltrationspfads. Standard: false | `true` |

313 

314#### Sandbox-Pfadpräfixe

315 

316Pfade in `filesystem.allowWrite`, `filesystem.denyWrite`, `filesystem.denyRead` und `filesystem.allowRead` unterstützen diese Präfixe:

317 

318| Präfix | Bedeutung | Beispiel |

319| :-------------------- | :---------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------- |

320| `/` | Absoluter Pfad vom Dateisystem-Root | `/tmp/build` bleibt `/tmp/build` |

321| `~/` | Relativ zum Home-Verzeichnis | `~/.kube` wird zu `$HOME/.kube` |

322| `./` oder kein Präfix | Relativ zum Projektstamm für Projekteinstellungen oder zu `~/.claude` für Benutzereinstellungen | `./output` in `.claude/settings.json` wird zu `<project-root>/output` |

323 

324Das ältere `//path`-Präfix für absolute Pfade funktioniert weiterhin. Wenn Sie zuvor ein einzelnes Schrägstrich `/path` erwartet haben, um projektrelativ aufgelöst zu werden, wechseln Sie zu `./path`. Diese Syntax unterscheidet sich von [Read- und Edit-Berechtigungsregeln](/de/permissions#read-and-edit), die `//path` für absolut und `/path` für projektrelativ verwenden. Sandbox-Dateisystempfade verwenden Standard-Konventionen: `/tmp/build` ist ein absoluter Pfad.

325 

326**Konfigurationsbeispiel:**

327 

328```json theme={null}

329{

330 "sandbox": {

331 "enabled": true,

332 "autoAllowBashIfSandboxed": true,

333 "excludedCommands": ["docker *"],

334 "filesystem": {

335 "allowWrite": ["/tmp/build", "~/.kube"],

336 "denyRead": ["~/.aws/credentials"]

337 },

338 "network": {

339 "allowedDomains": ["github.com", "*.npmjs.org", "registry.yarnpkg.com"],

340 "deniedDomains": ["uploads.github.com"],

341 "allowUnixSockets": [

342 "/var/run/docker.sock"

343 ],

344 "allowLocalBinding": true

345 }

346 }

347}

348```

349 

350**Dateisystem- und Netzwerkbeschränkungen** können auf zwei Arten konfiguriert werden, die zusammengeführt werden:

351 

352* **`sandbox.filesystem`-Einstellungen** (oben gezeigt): Steuern Sie Pfade an der OS-Level-Sandbox-Grenze. Diese Einschränkungen gelten für alle Subprozess-Befehle (z. B. `kubectl`, `terraform`, `npm`), nicht nur für Claudes Datei-Tools.

353* **Berechtigungsregeln**: Verwenden Sie `Edit` Allow/Deny-Regeln, um den Zugriff auf Claudes Datei-Tool zu steuern, `Read` Deny-Regeln, um Lesevorgänge zu blockieren, und `WebFetch` Allow/Deny-Regeln, um Netzwerk-Domänen zu steuern. Pfade aus diesen Regeln werden auch in die Sandbox-Konfiguration zusammengeführt.

354 

355### Zuschreibungseinstellungen

356 

357Claude Code fügt Git-Commits und Pull Requests Zuschreibungen hinzu. Diese werden separat konfiguriert:

358 

359* Commits verwenden [Git-Trailer](https://git-scm.com/docs/git-interpret-trailers) (wie `Co-Authored-By`) standardmäßig, die angepasst oder deaktiviert werden können

360* Pull-Request-Beschreibungen sind Klartext

361 

362| Schlüssel | Beschreibung |

363| :-------- | :------------------------------------------------------------------------------------------------------------- |

364| `commit` | Zuschreibung für Git-Commits, einschließlich aller Trailer. Leere Zeichenkette blendet Commit-Zuschreibung aus |

365| `pr` | Zuschreibung für Pull-Request-Beschreibungen. Leere Zeichenkette blendet Pull-Request-Zuschreibung aus |

366 

367**Standard-Commit-Zuschreibung:**

368 

369```text theme={null}

370🤖 Generated with [Claude Code](https://claude.com/claude-code)

371 

372 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

373```

374 

375**Standard-Pull-Request-Zuschreibung:**

376 

377```text theme={null}

378🤖 Generated with [Claude Code](https://claude.com/claude-code)

379```

380 

381**Beispiel:**

382 

383```json theme={null}

384{

385 "attribution": {

386 "commit": "Generated with AI\n\nCo-Authored-By: AI <ai@example.com>",

387 "pr": ""

388 }

389}

390```

391 

392<Note>

393 Die Einstellung `attribution` hat Vorrang vor der veralteten Einstellung `includeCoAuthoredBy`. Um alle Zuschreibungen auszublenden, setzen Sie `commit` und `pr` auf leere Zeichenketten.

394</Note>

395 

396### Dateivorschlag-Einstellungen

397 

398Konfigurieren Sie einen benutzerdefinierten Befehl für `@` Dateipath-Autovervollständigung. Der integrierte Dateivorschlag verwendet schnelle Dateisystem-Durchquerung, aber große Monorepos können von projektspezifischer Indizierung wie einem vorgefertigten Dateiindex oder benutzerdefinierten Tools profitieren.

399 

400```json theme={null}

401{

402 "fileSuggestion": {

403 "type": "command",

404 "command": "~/.claude/file-suggestion.sh"

405 }

406}

407```

408 

409Der Befehl wird mit den gleichen Umgebungsvariablen wie [Hooks](/de/hooks) ausgeführt, einschließlich `CLAUDE_PROJECT_DIR`. Er empfängt JSON über stdin mit einem `query`-Feld:

410 

411```json theme={null}

412{"query": "src/comp"}

413```

414 

415Geben Sie zeilengetrennte Dateipfade zu stdout aus (derzeit auf 15 begrenzt):

416 

417```text theme={null}

418src/components/Button.tsx

419src/components/Modal.tsx

420src/components/Form.tsx

421```

422 

423**Beispiel:**

424 

425```bash theme={null}

426#!/bin/bash

427query=$(cat | jq -r '.query')

428your-repo-file-index --query "$query" | head -20

429```

430 

431### Hook-Konfiguration

432 

433Diese Einstellungen steuern, welche Hooks ausgeführt werden dürfen und worauf HTTP-Hooks zugreifen können. Die Einstellung `allowManagedHooksOnly` kann nur in [verwalteten Einstellungen](#settings-files) konfiguriert werden. Die URL- und Umgebungsvariablen-Allowlists können auf jeder Einstellungsebene gesetzt werden und werden über Quellen zusammengeführt.

434 

435**Verhalten, wenn `allowManagedHooksOnly` `true` ist:**

436 

437* Verwaltete Hooks und SDK-Hooks werden geladen

438* Hooks von Plugins, die in verwalteten Einstellungen `enabledPlugins` erzwungen aktiviert sind, werden geladen. Dies ermöglicht es Administratoren, überprüfte Hooks über einen Organisations-Marketplace zu verteilen, während alles andere blockiert wird. Vertrauen wird durch vollständige `plugin@marketplace` ID gewährt, daher bleibt ein Plugin mit dem gleichen Namen aus einem anderen Marketplace blockiert

439* Benutzer-Hooks, Projekt-Hooks und alle anderen Plugin-Hooks werden blockiert

440 

441**HTTP-Hook-URLs einschränken:**

442 

443Begrenzen Sie, auf welche URLs HTTP-Hooks abzielen können. Unterstützt `*` als Platzhalter zum Abgleichen. Wenn das Array definiert ist, werden HTTP-Hooks, die auf nicht übereinstimmende URLs abzielen, stillschweigend blockiert.

444 

445```json theme={null}

446{

447 "allowedHttpHookUrls": ["https://hooks.example.com/*", "http://localhost:*"]

448}

449```

450 

451**HTTP-Hook-Umgebungsvariablen einschränken:**

452 

453Begrenzen Sie, welche Umgebungsvariablennamen HTTP-Hooks in Header-Werte interpolieren können. Die effektive `allowedEnvVars` jedes Hooks ist der Schnittpunkt seiner eigenen Liste und dieser Einstellung.

454 

455```json theme={null}

456{

457 "httpHookAllowedEnvVars": ["MY_TOKEN", "HOOK_SECRET"]

458}

459```

460 

461### Einstellungspriorität

462 

463Einstellungen werden in Prioritätsreihenfolge angewendet. Von höchster zu niedrigster:

464 

4651. **Verwaltete Einstellungen** ([serververwaltete](/de/server-managed-settings), [MDM/OS-Richtlinien](#configuration-scopes) oder [verwaltete Einstellungen](/de/settings#settings-files))

466 * Richtlinien, die von IT über Server-Bereitstellung, MDM-Konfigurationsprofile, Registry-Richtlinien oder verwaltete Einstellungsdateien bereitgestellt werden

467 * Können nicht durch andere Ebenen überschrieben werden, einschließlich Befehlszeilenargumenten

468 * Innerhalb der verwalteten Ebene ist die Priorität: serververwaltete > MDM/OS-Richtlinien > dateibasierte (`managed-settings.d/*.json` + `managed-settings.json`) > HKCU-Registry (nur Windows). Nur eine verwaltete Quelle wird verwendet; Quellen werden nicht zusammengeführt. Innerhalb der dateibasierten Ebene werden Drop-in-Dateien und die Basisdatei zusammengeführt.

469 

4702. **Befehlszeilenargumente**

471 * Temporäre Überschreibungen für eine bestimmte Sitzung

472 

4733. **Lokale Projekteinstellungen** (`.claude/settings.local.json`)

474 * Persönliche projektspezifische Einstellungen

475 

4764. **Gemeinsame Projekteinstellungen** (`.claude/settings.json`)

477 * Teamübergreifend gemeinsame Projekteinstellungen in der Versionskontrolle

478 

4795. **Benutzereinstellungen** (`~/.claude/settings.json`)

480 * Persönliche globale Einstellungen

481 

482Diese Hierarchie stellt sicher, dass Organisationsrichtlinien immer durchgesetzt werden, während Teams und Einzelpersonen ihre Erfahrung weiterhin anpassen können. Die gleiche Priorität gilt, ob Sie Claude Code von der CLI, der [VS Code-Erweiterung](/de/vs-code) oder einer [JetBrains IDE](/de/jetbrains) ausführen.

483 

484Wenn beispielsweise Ihre Benutzereinstellungen `Bash(npm run *)` erlauben, aber die gemeinsamen Einstellungen eines Projekts dies verweigern, hat die Projekteinstellung Vorrang und der Befehl wird blockiert.

485 

486<Note>

487 **Array-Einstellungen werden über Bereiche zusammengeführt.** Wenn die gleiche Array-wertige Einstellung (wie `sandbox.filesystem.allowWrite` oder `permissions.allow`) in mehreren Bereichen erscheint, werden die Arrays **verkettet und dedupliziert**, nicht ersetzt. Dies bedeutet, dass Bereiche mit niedrigerer Priorität Einträge hinzufügen können, ohne diejenigen mit höherer Priorität zu überschreiben, und umgekehrt. Wenn beispielsweise verwaltete Einstellungen `allowWrite` auf `["/opt/company-tools"]` setzen und ein Benutzer `["~/.kube"]` hinzufügt, sind beide Pfade in der endgültigen Konfiguration enthalten.

488</Note>

489 

490### Aktive Einstellungen überprüfen

491 

492Führen Sie `/status` in Claude Code aus, um zu sehen, welche Einstellungsquellen aktiv sind und woher sie stammen. Die Ausgabe zeigt jede Konfigurationsebene (verwaltet, Benutzer, Projekt) zusammen mit ihrem Ursprung, wie `Enterprise managed settings (remote)`, `Enterprise managed settings (plist)`, `Enterprise managed settings (HKLM)`, `Enterprise managed settings (HKCU)` oder `Enterprise managed settings (file)`. Wenn eine Einstellungsdatei Fehler enthält, meldet `/status` das Problem, damit Sie es beheben können.

493 

494### Wichtige Punkte zum Konfigurationssystem

495 

496* **Speicherdateien (`CLAUDE.md`)**: Enthalten Anweisungen und Kontext, die Claude beim Start lädt

497* **Einstellungsdateien (JSON)**: Konfigurieren Sie Berechtigungen, Umgebungsvariablen und Werkzeugverhalten

498* **Skills**: Benutzerdefinierte Aufforderungen, die mit `/skill-name` aufgerufen oder von Claude automatisch geladen werden können

499* **MCP-Server**: Erweitern Sie Claude Code mit zusätzlichen Tools und Integrationen

500* **Priorität**: Höherrangige Konfigurationen (Verwaltet) überschreiben niedrigere (Benutzer/Projekt)

501* **Vererbung**: Einstellungen werden zusammengeführt, wobei spezifischere Einstellungen breitere ergänzen oder überschreiben

502 

503### Systemaufforderung

504 

505Claudes interne Systemaufforderung wird nicht veröffentlicht. Um benutzerdefinierte Anweisungen hinzuzufügen, verwenden Sie `CLAUDE.md`-Dateien oder das Flag `--append-system-prompt`.

506 

507### Ausschließen sensibler Dateien

508 

509Um zu verhindern, dass Claude Code auf Dateien mit sensiblen Informationen wie API-Schlüsseln, Geheimnissen und Umgebungsdateien zugreift, verwenden Sie die Einstellung `permissions.deny` in Ihrer `.claude/settings.json`-Datei:

510 

511```json theme={null}

512{

513 "permissions": {

514 "deny": [

515 "Read(./.env)",

516 "Read(./.env.*)",

517 "Read(./secrets/**)",

518 "Read(./config/credentials.json)",

519 "Read(./build)"

520 ]

521 }

522}

523```

524 

525Dies ersetzt die veraltete Konfiguration `ignorePatterns`. Dateien, die diesen Mustern entsprechen, werden von der Dateiermittlung und Suchergebnissen ausgeschlossen, und Lesevorgänge auf diesen Dateien werden verweigert.

526 

527## Subagent-Konfiguration

528 

529Claude Code unterstützt benutzerdefinierte KI-Subagents, die auf Benutzer- und Projektebene konfiguriert werden können. Diese Subagents werden als Markdown-Dateien mit YAML-Frontmatter gespeichert:

530 

531* **Benutzer-Subagents**: `~/.claude/agents/` - Verfügbar über alle Ihre Projekte

532* **Projekt-Subagents**: `.claude/agents/` - Spezifisch für Ihr Projekt und können mit Ihrem Team geteilt werden

533 

534Subagent-Dateien definieren spezialisierte KI-Assistenten mit benutzerdefinierten Aufforderungen und Werkzeugberechtigungen. Erfahren Sie mehr über das Erstellen und Verwenden von Subagents in der [Subagents-Dokumentation](/de/sub-agents).

535 

536## Plugin-Konfiguration

537 

538Claude Code unterstützt ein Plugin-System, mit dem Sie die Funktionalität mit Skills, Agents, Hooks und MCP-Servern erweitern können. Plugins werden über Marketplaces verteilt und können auf Benutzer- und Repository-Ebene konfiguriert werden.

539 

540### Plugin-Einstellungen

541 

542Plugin-bezogene Einstellungen in `settings.json`:

543 

544```json theme={null}

545{

546 "enabledPlugins": {

547 "formatter@acme-tools": true,

548 "deployer@acme-tools": true,

549 "analyzer@security-plugins": false

550 },

551 "extraKnownMarketplaces": {

552 "acme-tools": {

553 "source": "github",

554 "repo": "acme-corp/claude-plugins"

555 }

556 }

557}

558```

559 

560#### `enabledPlugins`

561 

562Steuert, welche Plugins aktiviert sind. Format: `"plugin-name@marketplace-name": true/false`

563 

564**Bereiche**:

565 

566* **Benutzereinstellungen** (`~/.claude/settings.json`): Persönliche Plugin-Voreinstellungen

567* **Projekteinstellungen** (`.claude/settings.json`): Projektspezifische Plugins, die mit dem Team geteilt werden

568* **Lokale Einstellungen** (`.claude/settings.local.json`): Pro-Maschinen-Überschreibungen (nicht eingecheckt)

569* **Verwaltete Einstellungen** (`managed-settings.json`): Organisationsweite Richtlinien-Überschreibungen, die die Installation auf allen Ebenen blockieren und das Plugin aus dem Marketplace ausblenden

570 

571**Beispiel**:

572 

573```json theme={null}

574{

575 "enabledPlugins": {

576 "code-formatter@team-tools": true,

577 "deployment-tools@team-tools": true,

578 "experimental-features@personal": false

579 }

580}

581```

582 

583#### `extraKnownMarketplaces`

584 

585Definiert zusätzliche Marketplaces, die für das Repository verfügbar gemacht werden sollten. Normalerweise in Repository-Ebenen-Einstellungen verwendet, um sicherzustellen, dass Teamkollegen Zugriff auf erforderliche Plugin-Quellen haben.

586 

587**Wenn ein Repository `extraKnownMarketplaces` enthält**:

588 

5891. Teamkollegen werden aufgefordert, den Marketplace zu installieren, wenn sie dem Ordner vertrauen

5902. Teamkollegen werden dann aufgefordert, Plugins aus diesem Marketplace zu installieren

5913. Benutzer können unerwünschte Marketplaces oder Plugins überspringen (in Benutzereinstellungen gespeichert)

5924. Die Installation respektiert Vertrauensgrenzen und erfordert explizite Zustimmung

593 

594**Beispiel**:

595 

596```json theme={null}

597{

598 "extraKnownMarketplaces": {

599 "acme-tools": {

600 "source": {

601 "source": "github",

602 "repo": "acme-corp/claude-plugins"

603 }

604 },

605 "security-plugins": {

606 "source": {

607 "source": "git",

608 "url": "https://git.example.com/security/plugins.git"

609 }

610 }

611 }

612}

613```

614 

615**Marketplace-Quellentypen**:

616 

617* `github`: GitHub-Repository (verwendet `repo`)

618* `git`: Beliebige Git-URL (verwendet `url`)

619* `directory`: Lokaler Dateisystem-Pfad (verwendet `path`, nur für Entwicklung)

620* `hostPattern`: Regex-Muster zum Abgleichen von Marketplace-Hosts (verwendet `hostPattern`)

621* `settings`: Inline-Marketplace, der direkt in settings.json deklariert wird, ohne ein separates gehostetes Repository (verwendet `name` und `plugins`)

622 

623Verwenden Sie `source: 'settings'`, um einen kleinen Satz von Plugins inline zu deklarieren, ohne ein gehostetes Marketplace-Repository einzurichten. Plugins, die hier aufgelistet sind, müssen externe Quellen wie GitHub oder npm referenzieren. Sie müssen weiterhin jedes Plugin separat in `enabledPlugins` aktivieren.

624 

625```json theme={null}

626{

627 "extraKnownMarketplaces": {

628 "team-tools": {

629 "source": {

630 "source": "settings",

631 "name": "team-tools",

632 "plugins": [

633 {

634 "name": "code-formatter",

635 "source": {

636 "source": "github",

637 "repo": "acme-corp/code-formatter"

638 }

639 }

640 ]

641 }

642 }

643 }

644}

645```

646 

647#### `strictKnownMarketplaces`

648 

649**Nur verwaltete Einstellungen**: Steuert, welche Plugin-Marketplaces Benutzer hinzufügen und Plugins installieren dürfen. Diese Einstellung kann nur in [verwalteten Einstellungen](/de/settings#settings-files) konfiguriert werden und bietet Administratoren strikte Kontrolle über Marketplace-Quellen.

650 

651**Verwaltete Einstellungsdatei-Speicherorte**:

652 

653* **macOS**: `/Library/Application Support/ClaudeCode/managed-settings.json`

654* **Linux und WSL**: `/etc/claude-code/managed-settings.json`

655* **Windows**: `C:\Program Files\ClaudeCode\managed-settings.json`

656 

657**Wichtige Merkmale**:

658 

659* Nur in verwalteten Einstellungen verfügbar (`managed-settings.json`)

660* Kann nicht durch Benutzer- oder Projekteinstellungen überschrieben werden (höchste Priorität)

661* Durchgesetzt VOR Netzwerk-/Dateisystem-Operationen (blockierte Quellen werden nie ausgeführt)

662* Verwendet exakte Übereinstimmung für Quellspezifikationen (einschließlich `ref`, `path` für Git-Quellen), außer `hostPattern`, das Regex-Abgleich verwendet

663 

664**Allowlist-Verhalten**:

665 

666* `undefined` (Standard): Keine Einschränkungen - Benutzer können jeden Marketplace hinzufügen

667* Leeres Array `[]`: Vollständiger Lockdown - Benutzer können keine neuen Marketplaces hinzufügen

668* Liste von Quellen: Benutzer können nur Marketplaces hinzufügen, die genau übereinstimmen

669 

670**Alle unterstützten Quellentypen**:

671 

672Die Allowlist unterstützt mehrere Marketplace-Quellentypen. Die meisten Quellen verwenden exakte Übereinstimmung, während `hostPattern` Regex-Abgleich gegen den Marketplace-Host verwendet.

673 

6741. **GitHub-Repositories**:

675 

676```json theme={null}

677{ "source": "github", "repo": "acme-corp/approved-plugins" }

678{ "source": "github", "repo": "acme-corp/security-tools", "ref": "v2.0" }

679{ "source": "github", "repo": "acme-corp/plugins", "ref": "main", "path": "marketplace" }

680```

681 

682Felder: `repo` (erforderlich), `ref` (optional: Branch/Tag/SHA), `path` (optional: Unterverzeichnis)

683 

6842. **Git-Repositories**:

685 

686```json theme={null}

687{ "source": "git", "url": "https://gitlab.example.com/tools/plugins.git" }

688{ "source": "git", "url": "https://bitbucket.org/acme-corp/plugins.git", "ref": "production" }

689{ "source": "git", "url": "ssh://git@git.example.com/plugins.git", "ref": "v3.1", "path": "approved" }

690```

691 

692Felder: `url` (erforderlich), `ref` (optional: Branch/Tag/SHA), `path` (optional: Unterverzeichnis)

693 

6943. **URL-basierte Marketplaces**:

695 

696```json theme={null}

697{ "source": "url", "url": "https://plugins.example.com/marketplace.json" }

698{ "source": "url", "url": "https://cdn.example.com/marketplace.json", "headers": { "Authorization": "Bearer ${TOKEN}" } }

699```

700 

701Felder: `url` (erforderlich), `headers` (optional: HTTP-Header für authentifizierten Zugriff)

702 

703<Note>

704 URL-basierte Marketplaces laden nur die `marketplace.json`-Datei herunter. Sie laden keine Plugin-Dateien vom Server herunter. Plugins in URL-basierten Marketplaces müssen externe Quellen (GitHub, npm oder Git-URLs) verwenden, anstatt relative Pfade. Für Plugins mit relativen Pfaden verwenden Sie stattdessen einen Git-basierten Marketplace. Siehe [Troubleshooting](/de/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces) für Details.

705</Note>

706 

7074. **NPM-Pakete**:

708 

709```json theme={null}

710{ "source": "npm", "package": "@acme-corp/claude-plugins" }

711{ "source": "npm", "package": "@acme-corp/approved-marketplace" }

712```

713 

714Felder: `package` (erforderlich, unterstützt scoped Pakete)

715 

7165. **Dateipfade**:

717 

718```json theme={null}

719{ "source": "file", "path": "/usr/local/share/claude/acme-marketplace.json" }

720{ "source": "file", "path": "/opt/acme-corp/plugins/marketplace.json" }

721```

722 

723Felder: `path` (erforderlich: absoluter Pfad zur marketplace.json-Datei)

724 

7256. **Verzeichnispfade**:

726 

727```json theme={null}

728{ "source": "directory", "path": "/usr/local/share/claude/acme-plugins" }

729{ "source": "directory", "path": "/opt/acme-corp/approved-marketplaces" }

730```

731 

732Felder: `path` (erforderlich: absoluter Pfad zum Verzeichnis mit `.claude-plugin/marketplace.json`)

733 

7347. **Host-Muster-Abgleich**:

735 

736```json theme={null}

737{ "source": "hostPattern", "hostPattern": "^github\\.example\\.com$" }

738{ "source": "hostPattern", "hostPattern": "^gitlab\\.internal\\.example\\.com$" }

739```

740 

741Felder: `hostPattern` (erforderlich: Regex-Muster zum Abgleich gegen den Marketplace-Host)

742 

743Verwenden Sie Host-Muster-Abgleich, wenn Sie alle Marketplaces von einem bestimmten Host erlauben möchten, ohne jedes Repository einzeln aufzuzählen. Dies ist nützlich für Organisationen mit internen GitHub Enterprise oder GitLab-Servern, auf denen Entwickler ihre eigenen Marketplaces erstellen.

744 

745Host-Extraktion nach Quellentyp:

746 

747* `github`: passt immer gegen `github.com`

748* `git`: extrahiert Hostname aus der URL (unterstützt sowohl HTTPS als auch SSH-Formate)

749* `url`: extrahiert Hostname aus der URL

750* `npm`, `file`, `directory`: nicht unterstützt für Host-Muster-Abgleich

751 

752**Konfigurationsbeispiele**:

753 

754Beispiel: Nur bestimmte Marketplaces erlauben:

755 

756```json theme={null}

757{

758 "strictKnownMarketplaces": [

759 {

760 "source": "github",

761 "repo": "acme-corp/approved-plugins"

762 },

763 {

764 "source": "github",

765 "repo": "acme-corp/security-tools",

766 "ref": "v2.0"

767 },

768 {

769 "source": "url",

770 "url": "https://plugins.example.com/marketplace.json"

771 },

772 {

773 "source": "npm",

774 "package": "@acme-corp/compliance-plugins"

775 }

776 ]

777}

778```

779 

780Beispiel - Alle Marketplace-Ergänzungen deaktivieren:

781 

782```json theme={null}

783{

784 "strictKnownMarketplaces": []

785}

786```

787 

788Beispiel: Alle Marketplaces von einem internen Git-Server erlauben:

789 

790```json theme={null}

791{

792 "strictKnownMarketplaces": [

793 {

794 "source": "hostPattern",

795 "hostPattern": "^github\\.example\\.com$"

796 }

797 ]

798}

799```

800 

801**Anforderungen für exakte Übereinstimmung**:

802 

803Marketplace-Quellen müssen **genau** übereinstimmen, damit eine Benutzer-Ergänzung erlaubt wird. Für Git-basierte Quellen (`github` und `git`) umfasst dies alle optionalen Felder:

804 

805* Das `repo` oder `url` muss genau übereinstimmen

806* Das `ref`-Feld muss genau übereinstimmen (oder beide sind undefined)

807* Das `path`-Feld muss genau übereinstimmen (oder beide sind undefined)

808 

809Beispiele von Quellen, die **NICHT übereinstimmen**:

810 

811```json theme={null}

812// Diese sind UNTERSCHIEDLICHE Quellen:

813{ "source": "github", "repo": "acme-corp/plugins" }

814{ "source": "github", "repo": "acme-corp/plugins", "ref": "main" }

815 

816// Diese sind auch UNTERSCHIEDLICH:

817{ "source": "github", "repo": "acme-corp/plugins", "path": "marketplace" }

818{ "source": "github", "repo": "acme-corp/plugins" }

819```

820 

821**Vergleich mit `extraKnownMarketplaces`**:

822 

823| Aspekt | `strictKnownMarketplaces` | `extraKnownMarketplaces` |

824| ----------------------------- | ----------------------------------------- | ------------------------------------------------ |

825| **Zweck** | Durchsetzung von Organisationsrichtlinien | Team-Komfort |

826| **Einstellungsdatei** | Nur `managed-settings.json` | Beliebige Einstellungsdatei |

827| **Verhalten** | Blockiert nicht-allowlisted Ergänzungen | Auto-installiert fehlende Marketplaces |

828| **Wann durchgesetzt** | Vor Netzwerk-/Dateisystem-Operationen | Nach Benutzer-Vertrauensaufforderung |

829| **Kann überschrieben werden** | Nein (höchste Priorität) | Ja (durch höherrangige Einstellungen) |

830| **Quellenformat** | Direktes Quellobjekt | Benannter Marketplace mit verschachtelter Quelle |

831| **Anwendungsfall** | Compliance, Sicherheitsbeschränkungen | Onboarding, Standardisierung |

832 

833**Formatunterschied**:

834 

835`strictKnownMarketplaces` verwendet direkte Quellobjekte:

836 

837```json theme={null}

838{

839 "strictKnownMarketplaces": [

840 { "source": "github", "repo": "acme-corp/plugins" }

841 ]

842}

843```

844 

845`extraKnownMarketplaces` erfordert benannte Marketplaces:

846 

847```json theme={null}

848{

849 "extraKnownMarketplaces": {

850 "acme-tools": {

851 "source": { "source": "github", "repo": "acme-corp/plugins" }

852 }

853 }

854}

855```

856 

857**Beide zusammen verwenden**:

858 

859`strictKnownMarketplaces` ist ein Richtlinien-Gate: Es steuert, was Benutzer hinzufügen dürfen, registriert aber keine Marketplaces. Um einen Marketplace sowohl einzuschränken als auch für alle Benutzer vorzuregistrieren, setzen Sie beide in `managed-settings.json`:

860 

861```json theme={null}

862{

863 "strictKnownMarketplaces": [

864 { "source": "github", "repo": "acme-corp/plugins" }

865 ],

866 "extraKnownMarketplaces": {

867 "acme-tools": {

868 "source": { "source": "github", "repo": "acme-corp/plugins" }

869 }

870 }

871}

872```

873 

874Mit nur `strictKnownMarketplaces` gesetzt, können Benutzer den erlaubten Marketplace weiterhin manuell über `/plugin marketplace add` hinzufügen, aber er ist nicht automatisch verfügbar.

875 

876**Wichtige Hinweise**:

877 

878* Einschränkungen werden VOR Netzwerkanfragen oder Dateisystem-Operationen überprüft

879* Wenn blockiert, sehen Benutzer klare Fehlermeldungen, die angeben, dass die Quelle durch verwaltete Richtlinie blockiert ist

880* Die Einschränkung wird beim Hinzufügen und beim Installieren, Aktualisieren, Aktualisieren und automatischen Aktualisieren von Plugins durchgesetzt. Ein Marketplace, der vor dem Festlegen der Richtlinie hinzugefügt wurde, kann nicht mehr zum Installieren oder Aktualisieren von Plugins verwendet werden, sobald seine Quelle nicht mehr mit der Allowlist übereinstimmt

881* Verwaltete Einstellungen haben die höchste Priorität und können nicht überschrieben werden

882 

883Siehe [Verwaltete Marketplace-Einschränkungen](/de/plugin-marketplaces#managed-marketplace-restrictions) für Dokumentation für Benutzer.

884 

885### Verwalten von Plugins

886 

887Verwenden Sie den Befehl `/plugin`, um Plugins interaktiv zu verwalten:

888 

889* Durchsuchen Sie verfügbare Plugins aus Marketplaces

890* Installieren/Deinstallieren Sie Plugins

891* Aktivieren/Deaktivieren Sie Plugins

892* Zeigen Sie Plugin-Details an (bereitgestellte Skills, Agents, Hooks)

893* Fügen Sie Marketplaces hinzu/entfernen Sie sie

894 

895Erfahren Sie mehr über das Plugin-System in der [Plugins-Dokumentation](/de/plugins).

896 

897## Umgebungsvariablen

898 

899Umgebungsvariablen ermöglichen es Ihnen, das Verhalten von Claude Code zu steuern, ohne Einstellungsdateien zu bearbeiten. Jede Variable kann auch in [`settings.json`](#available-settings) unter dem Schlüssel `env` konfiguriert werden, um sie auf jede Sitzung anzuwenden oder für Ihr Team bereitzustellen.

900 

901Siehe die [Umgebungsvariablen-Referenz](/de/env-vars) für die vollständige Liste.

902 

903## Tools, die Claude zur Verfügung stehen

904 

905Claude Code hat Zugriff auf eine Reihe von Tools zum Lesen, Bearbeiten, Suchen, Ausführen von Befehlen und Orchestrieren von Subagents. Tool-Namen sind die genauen Zeichenketten, die Sie in Berechtigungsregeln und Hook-Matchern verwenden.

906 

907Siehe die [Tools-Referenz](/de/tools-reference) für die vollständige Liste und Details zum Bash-Tool-Verhalten.

908 

909## Siehe auch

910 

911* [Berechtigungen](/de/permissions): Berechtigungssystem, Regelsyntax, werkzeugspezifische Muster und verwaltete Richtlinien

912* [Authentifizierung](/de/authentication): Richten Sie Benutzerzugriff auf Claude Code ein

913* [Konfiguration debuggen](/de/debug-your-config): Diagnostizieren Sie, warum eine Einstellung, ein Hook oder ein MCP-Server nicht wirksam wird

914* [Troubleshooting bei Installation und Anmeldung](/de/troubleshoot-install): Installations-, Authentifizierungs- und Plattformprobleme

setup.md +606 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Erweiterte Einrichtung

6 

7> Systemanforderungen, plattformspezifische Installation, Versionsverwaltung und Deinstallation für Claude Code.

8 

9Diese Seite behandelt Systemanforderungen, plattformspezifische Installationsdetails, Updates und Deinstallation. Eine geführte Anleitung für Ihre erste Sitzung finden Sie im [Schnellstart](/de/quickstart). Wenn Sie noch nie ein Terminal verwendet haben, siehe [Terminalanleitung](/de/terminal-guide).

10 

11## Systemanforderungen

12 

13Claude Code läuft auf den folgenden Plattformen und Konfigurationen:

14 

15* **Betriebssystem**:

16 * macOS 13.0+

17 * Windows 10 1809+ oder Windows Server 2019+

18 * Ubuntu 20.04+

19 * Debian 10+

20 * Alpine Linux 3.19+

21* **Hardware**: 4 GB+ RAM, x64 oder ARM64 Prozessor

22* **Netzwerk**: Internetverbindung erforderlich. Siehe [Netzwerkkonfiguration](/de/network-config#network-access-requirements).

23* **Shell**: Bash, Zsh, PowerShell oder CMD. Auf nativem Windows wird [Git für Windows](https://git-scm.com/downloads/win) empfohlen; Claude Code fällt auf PowerShell zurück, wenn Git Bash nicht vorhanden ist. WSL-Setups benötigen Git für Windows nicht.

24* **Standort**: [Von Anthropic unterstützte Länder](https://www.anthropic.com/supported-countries)

25 

26### Zusätzliche Abhängigkeiten

27 

28* **ripgrep**: normalerweise in Claude Code enthalten. Falls die Suche fehlschlägt, siehe [Suche-Fehlerbehebung](/de/troubleshooting#search-and-discovery-issues).

29 

30## Claude Code installieren

31 

32<Tip>

33 Bevorzugen Sie eine grafische Benutzeroberfläche? Die [Desktop-App](/de/desktop-quickstart) ermöglicht es Ihnen, Claude Code ohne das Terminal zu verwenden. Laden Sie sie für [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) oder [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs) herunter.

34 

35 Neu im Terminal? Siehe die [Terminalanleitung](/de/terminal-guide) für Schritt-für-Schritt-Anweisungen.

36</Tip>

37 

38To install Claude Code, use one of the following methods:

39 

40<Tabs>

41 <Tab title="Native Install (Recommended)">

42 **macOS, Linux, WSL:**

43 

44 ```bash theme={null}

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

46 ```

47 

48 **Windows PowerShell:**

49 

50 ```powershell theme={null}

51 irm https://claude.ai/install.ps1 | iex

52 ```

53 

54 **Windows CMD:**

55 

56 ```batch theme={null}

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

58 ```

59 

60 If you see `The token '&&' is not a valid statement separator`, you're in PowerShell, not CMD. If you see `'irm' is not recognized as an internal or external command`, you're in CMD, not PowerShell. Your prompt shows `PS C:\` when you're in PowerShell and `C:\` without the `PS` when you're in CMD.

61 

62 [Git for Windows](https://git-scm.com/downloads/win) is recommended on native Windows so Claude Code can use the Bash tool. If Git for Windows is not installed, Claude Code uses PowerShell as the shell tool instead. WSL setups do not need Git for Windows.

63 

64 <Info>

65 Native installations automatically update in the background to keep you on the latest version.

66 </Info>

67 </Tab>

68 

69 <Tab title="Homebrew">

70 ```bash theme={null}

71 brew install --cask claude-code

72 ```

73 

74 Homebrew offers two casks. `claude-code` tracks the stable release channel, which is typically about a week behind and skips releases with major regressions. `claude-code@latest` tracks the latest channel and receives new versions as soon as they ship.

75 

76 <Info>

77 Homebrew installations do not auto-update. Run `brew upgrade claude-code` or `brew upgrade claude-code@latest`, depending on which cask you installed, to get the latest features and security fixes.

78 </Info>

79 </Tab>

80 

81 <Tab title="WinGet">

82 ```powershell theme={null}

83 winget install Anthropic.ClaudeCode

84 ```

85 

86 <Info>

87 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.

88 </Info>

89 </Tab>

90</Tabs>

91 

92You can also install with [apt, dnf, or apk](/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.

93 

94Nach Abschluss der Installation öffnen Sie ein Terminal in dem Projekt, an dem Sie arbeiten möchten, und starten Sie Claude Code:

95 

96```bash theme={null}

97claude

98```

99 

100Wenn während der Installation Probleme auftreten, siehe [Fehlerbehebung bei Installation und Anmeldung](/de/troubleshoot-install).

101 

102### Einrichtung unter Windows

103 

104Sie können Claude Code nativ unter Windows oder in WSL ausführen. Wählen Sie basierend darauf, wo sich Ihre Projekte befinden und welche Funktionen Sie benötigen:

105 

106| Option | Erfordert | [Sandboxing](/de/sandboxing) | Wann zu verwenden |

107| --------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------- |

108| Natives Windows | [Git für Windows](https://git-scm.com/downloads/win) empfohlen; PowerShell wird verwendet, falls nicht vorhanden | Nicht unterstützt | Windows-native Projekte und Tools |

109| WSL 2 | WSL 2 aktiviert | Unterstützt | Linux-Toolchains oder Sandbox-Befehlsausführung |

110| WSL 1 | WSL 1 aktiviert | Nicht unterstützt | Wenn WSL 2 nicht verfügbar ist |

111 

112**Option 1: Natives Windows mit Git Bash**

113 

114Installieren Sie [Git für Windows](https://git-scm.com/downloads/win), und führen Sie dann den Installationsbefehl von PowerShell oder CMD aus. Sie müssen nicht als Administrator ausführen.

115 

116Ob Sie von PowerShell oder CMD installieren, wirkt sich nur auf den Installationsbefehl aus, den Sie ausführen. Ihre Eingabeaufforderung zeigt `PS C:\Users\YourName>` in PowerShell und `C:\Users\YourName>` ohne das `PS` in CMD. Wenn Sie neu im Terminal sind, führt die [Terminalanleitung](/de/terminal-guide#windows) Sie durch jeden Schritt.

117 

118Nach der Installation starten Sie `claude` von PowerShell, CMD oder Git Bash. Wenn Git Bash installiert ist, verwendet Claude Code es intern, um Befehle auszuführen, unabhängig davon, von wo aus Sie es gestartet haben. Wenn Claude Code Ihre Git Bash-Installation nicht finden kann, legen Sie den Pfad in Ihrer [settings.json-Datei](/de/settings) fest:

119 

120```json theme={null}

121{

122 "env": {

123 "CLAUDE_CODE_GIT_BASH_PATH": "C:\\Program Files\\Git\\bin\\bash.exe"

124 }

125}

126```

127 

128Claude Code kann auch PowerShell nativ unter Windows ausführen. Wenn Git Bash installiert ist, wird das PowerShell-Tool schrittweise als zusätzliche Option eingeführt: Setzen Sie `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`, um sich anzumelden, oder `0`, um sich abzumelden. Siehe [PowerShell-Tool](/de/tools-reference#powershell-tool) für Einrichtung und Einschränkungen.

129 

130**Option 2: WSL**

131 

132Öffnen Sie Ihre WSL-Distribution und führen Sie das Linux-Installationsprogramm aus den [Installationsanweisungen](#install-claude-code) oben aus. Sie installieren und starten `claude` im WSL-Terminal, nicht von PowerShell oder CMD.

133 

134### Alpine Linux und musl-basierte Distributionen

135 

136Das native Installationsprogramm auf Alpine und anderen musl/uClibc-basierten Distributionen erfordert `libgcc`, `libstdc++` und `ripgrep`. Installieren Sie diese mit dem Paketmanager Ihrer Distribution, und setzen Sie dann `USE_BUILTIN_RIPGREP=0`.

137 

138Dieses Beispiel installiert die erforderlichen Pakete auf Alpine:

139 

140```bash theme={null}

141apk add libgcc libstdc++ ripgrep

142```

143 

144Setzen Sie dann `USE_BUILTIN_RIPGREP` auf `0` in Ihrer [`settings.json`](/de/settings#available-settings)-Datei:

145 

146```json theme={null}

147{

148 "env": {

149 "USE_BUILTIN_RIPGREP": "0"

150 }

151}

152```

153 

154## Installation überprüfen

155 

156Nach der Installation bestätigen Sie, dass Claude Code funktioniert:

157 

158```bash theme={null}

159claude --version

160```

161 

162Wenn dies mit `command not found` oder einem anderen Fehler fehlschlägt, siehe [Installation und Anmeldung beheben](/de/troubleshoot-install).

163 

164Für eine detailliertere Überprüfung Ihrer Installation und Konfiguration führen Sie [`claude doctor`](/de/troubleshooting#get-more-help) aus:

165 

166```bash theme={null}

167claude doctor

168```

169 

170## Authentifizierung

171 

172Claude Code erfordert ein Pro-, Max-, Team-, Enterprise- oder Console-Konto. Der kostenlose Claude.ai-Plan beinhaltet keinen Claude Code-Zugriff. Sie können Claude Code auch mit einem Drittanbieter-API-Provider wie [Amazon Bedrock](/de/amazon-bedrock), [Google Vertex AI](/de/google-vertex-ai) oder [Microsoft Foundry](/de/microsoft-foundry) verwenden.

173 

174Nach der Installation melden Sie sich an, indem Sie `claude` ausführen und den Browser-Aufforderungen folgen. Siehe [Authentifizierung](/de/authentication) für alle Kontotypen und Team-Setup-Optionen.

175 

176## Claude Code aktualisieren

177 

178Native Installationen werden automatisch im Hintergrund aktualisiert. Sie können [den Release-Kanal konfigurieren](#configure-release-channel), um zu steuern, ob Sie Updates sofort oder nach einem verzögerten stabilen Zeitplan erhalten, oder [Auto-Updates vollständig deaktivieren](#disable-auto-updates). Homebrew-, WinGet- und [Linux-Paketmanager](#install-with-linux-package-managers)-Installationen erfordern manuelle Updates.

179 

180### Auto-Updates

181 

182Claude Code prüft beim Start und regelmäßig während der Ausführung auf Updates. Updates werden im Hintergrund heruntergeladen und installiert und treten beim nächsten Start von Claude Code in Kraft.

183 

184<Note>

185 Homebrew-, WinGet-, apt-, dnf- und apk-Installationen werden nicht automatisch aktualisiert. Für Homebrew führen Sie `brew upgrade claude-code` oder `brew upgrade claude-code@latest` aus, je nachdem, welches Cask Sie installiert haben. Für WinGet führen Sie `winget upgrade Anthropic.ClaudeCode` aus. Für Linux-Paketmanager siehe die Upgrade-Befehle in [Mit Linux-Paketmanagern installieren](#install-with-linux-package-managers).

186 

187 **Bekanntes Problem:** Claude Code kann Sie über Updates benachrichtigen, bevor die neue Version in diesen Paketmanagern verfügbar ist. Wenn ein Upgrade fehlschlägt, warten Sie und versuchen Sie es später erneut.

188 

189 Homebrew behält alte Versionen nach Upgrades auf der Festplatte. Führen Sie regelmäßig `brew cleanup` aus, um Speicherplatz freizugeben.

190</Note>

191 

192### Release-Kanal konfigurieren

193 

194Steuern Sie, welchem Release-Kanal Claude Code für Auto-Updates und `claude update` folgt, mit der Einstellung `autoUpdatesChannel`:

195 

196* `"latest"`, die Standardeinstellung: Erhalten Sie neue Funktionen, sobald sie veröffentlicht werden

197* `"stable"`: Verwenden Sie eine Version, die normalerweise etwa eine Woche alt ist und überspringen Sie Releases mit großen Regressionen

198 

199Konfigurieren Sie dies über `/config` → **Auto-update channel**, oder fügen Sie es zu Ihrer [settings.json-Datei](/de/settings) hinzu:

200 

201```json theme={null}

202{

203 "autoUpdatesChannel": "stable"

204}

205```

206 

207Für Enterprise-Bereitstellungen können Sie einen konsistenten Release-Kanal in Ihrer Organisation mit [verwalteten Einstellungen](/de/permissions#managed-settings) erzwingen.

208 

209Homebrew-Installationen wählen einen Kanal nach Cask-Name statt dieser Einstellung: `claude-code` verfolgt stabil und `claude-code@latest` verfolgt neueste.

210 

211### Mindestversion festlegen

212 

213Die Einstellung `minimumVersion` etabliert eine Untergrenze. Hintergrund-Auto-Updates und `claude update` weigern sich, eine Version unter diesem Wert zu installieren, daher führt ein Wechsel zum Kanal `"stable"` nicht zu einem Downgrade, wenn Sie bereits auf einem neueren `"latest"`-Build sind.

214 

215Ein Wechsel von `"latest"` zu `"stable"` über `/config` fordert Sie auf, entweder bei der aktuellen Version zu bleiben oder das Downgrade zuzulassen. Wenn Sie sich entscheiden zu bleiben, wird `minimumVersion` auf diese Version gesetzt. Ein Wechsel zurück zu `"latest"` löscht es.

216 

217Fügen Sie es zu Ihrer [settings.json-Datei](/de/settings) hinzu, um eine Untergrenze explizit festzulegen:

218 

219```json theme={null}

220{

221 "autoUpdatesChannel": "stable",

222 "minimumVersion": "2.1.100"

223}

224```

225 

226In [verwalteten Einstellungen](/de/permissions#managed-settings) erzwingt dies ein organisationsweites Minimum, das Benutzer- und Projekteinstellungen nicht überschreiben können.

227 

228### Auto-Updates deaktivieren

229 

230Setzen Sie `DISABLE_AUTOUPDATER` auf `"1"` im `env`-Schlüssel Ihrer [`settings.json`](/de/settings#available-settings)-Datei:

231 

232```json theme={null}

233{

234 "env": {

235 "DISABLE_AUTOUPDATER": "1"

236 }

237}

238```

239 

240`DISABLE_AUTOUPDATER` stoppt nur die Hintergrundprüfung; `claude update` und `claude install` funktionieren weiterhin. Um alle Update-Pfade, einschließlich manueller Updates, zu blockieren, setzen Sie stattdessen [`DISABLE_UPDATES`](/de/env-vars). Verwenden Sie dies, wenn Sie Claude Code über Ihre eigenen Kanäle verteilen und Benutzer auf der Version bleiben müssen, die Sie bereitstellen.

241 

242### Manuell aktualisieren

243 

244Um ein Update sofort anzuwenden, ohne auf die nächste Hintergrundprüfung zu warten, führen Sie aus:

245 

246```bash theme={null}

247claude update

248```

249 

250## Erweiterte Installationsoptionen

251 

252Diese Optionen sind für Versions-Pinning, Linux-Paketmanager, npm und Überprüfung der Binärintegrität.

253 

254### Eine bestimmte Version installieren

255 

256Das native Installationsprogramm akzeptiert entweder eine bestimmte Versionsnummer oder einen Release-Kanal (`latest` oder `stable`). Der Kanal, den Sie bei der Installation wählen, wird zu Ihrem Standard für Auto-Updates. Siehe [Release-Kanal konfigurieren](#configure-release-channel) für weitere Informationen.

257 

258So installieren Sie die neueste Version (Standard):

259 

260<Tabs>

261 <Tab title="macOS, Linux, WSL">

262 ```bash theme={null}

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

264 ```

265 </Tab>

266 

267 <Tab title="Windows PowerShell">

268 ```powershell theme={null}

269 irm https://claude.ai/install.ps1 | iex

270 ```

271 </Tab>

272 

273 <Tab title="Windows CMD">

274 ```batch theme={null}

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

276 ```

277 </Tab>

278</Tabs>

279 

280So installieren Sie die stabile Version:

281 

282<Tabs>

283 <Tab title="macOS, Linux, WSL">

284 ```bash theme={null}

285 curl -fsSL https://claude.ai/install.sh | bash -s stable

286 ```

287 </Tab>

288 

289 <Tab title="Windows PowerShell">

290 ```powershell theme={null}

291 & ([scriptblock]::Create((irm https://claude.ai/install.ps1))) stable

292 ```

293 </Tab>

294 

295 <Tab title="Windows CMD">

296 ```batch theme={null}

297 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd stable && del install.cmd

298 ```

299 </Tab>

300</Tabs>

301 

302So installieren Sie eine bestimmte Versionsnummer:

303 

304<Tabs>

305 <Tab title="macOS, Linux, WSL">

306 ```bash theme={null}

307 curl -fsSL https://claude.ai/install.sh | bash -s 2.1.89

308 ```

309 </Tab>

310 

311 <Tab title="Windows PowerShell">

312 ```powershell theme={null}

313 & ([scriptblock]::Create((irm https://claude.ai/install.ps1))) 2.1.89

314 ```

315 </Tab>

316 

317 <Tab title="Windows CMD">

318 ```batch theme={null}

319 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd 2.1.89 && del install.cmd

320 ```

321 </Tab>

322</Tabs>

323 

324### Mit Linux-Paketmanagern installieren

325 

326Claude Code veröffentlicht signierte apt-, dnf- und apk-Repositories. Ersetzen Sie `stable` durch `latest` für den Rolling-Kanal. Paketmanager-Installationen werden nicht automatisch durch Claude Code aktualisiert; Updates erfolgen durch Ihren normalen System-Upgrade-Workflow.

327 

328Alle Repositories sind mit dem [Claude Code Release-Signaturschlüssel](#binary-integrity-and-code-signing) signiert. Bevor Sie dem Schlüssel vertrauen, überprüfen Sie ihn wie in jedem Tab beschrieben.

329 

330<Tabs>

331 <Tab title="apt">

332 Für Debian und Ubuntu. Um den Rolling-Kanal zu verwenden, ändern Sie beide `stable`-Vorkommen in der `deb`-Zeile: den URL-Pfad und den Suite-Namen.

333 

334 ```bash theme={null}

335 sudo install -d -m 0755 /etc/apt/keyrings

336 sudo curl -fsSL https://downloads.claude.ai/keys/claude-code.asc \

337 -o /etc/apt/keyrings/claude-code.asc

338 echo "deb [signed-by=/etc/apt/keyrings/claude-code.asc] https://downloads.claude.ai/claude-code/apt/stable stable main" \

339 | sudo tee /etc/apt/sources.list.d/claude-code.list

340 sudo apt update

341 sudo apt install claude-code

342 ```

343 

344 Überprüfen Sie den GPG-Schlüssel-Fingerabdruck, bevor Sie ihm vertrauen: `gpg --show-keys /etc/apt/keyrings/claude-code.asc` sollte `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE` melden.

345 

346 Um später zu aktualisieren, führen Sie `sudo apt update && sudo apt upgrade claude-code` aus.

347 </Tab>

348 

349 <Tab title="dnf">

350 Für Fedora und RHEL:

351 

352 ```bash theme={null}

353 sudo tee /etc/yum.repos.d/claude-code.repo <<'EOF'

354 [claude-code]

355 name=Claude Code

356 baseurl=https://downloads.claude.ai/claude-code/rpm/stable

357 enabled=1

358 gpgcheck=1

359 gpgkey=https://downloads.claude.ai/keys/claude-code.asc

360 EOF

361 sudo dnf install claude-code

362 ```

363 

364 dnf lädt den Schlüssel bei der ersten Installation herunter und fordert Sie auf, den Fingerabdruck zu bestätigen. Überprüfen Sie, ob er `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE` entspricht, bevor Sie akzeptieren.

365 

366 Um später zu aktualisieren, führen Sie `sudo dnf upgrade claude-code` aus.

367 </Tab>

368 

369 <Tab title="apk">

370 Für Alpine Linux:

371 

372 ```sh theme={null}

373 wget -O /etc/apk/keys/claude-code.rsa.pub \

374 https://downloads.claude.ai/keys/claude-code.rsa.pub

375 echo "https://downloads.claude.ai/claude-code/apk/stable" >> /etc/apk/repositories

376 apk add claude-code

377 ```

378 

379 Überprüfen Sie den heruntergeladenen Schlüssel mit `sha256sum /etc/apk/keys/claude-code.rsa.pub`, was `395759c1f7449ef4cdef305a42e820f3c766d6090d142634ebdb049f113168b6` melden sollte.

380 

381 Um später zu aktualisieren, führen Sie `apk update && apk upgrade claude-code` aus.

382 </Tab>

383</Tabs>

384 

385### Mit npm installieren

386 

387Sie können Claude Code auch als globales npm-Paket installieren. Das Paket erfordert [Node.js 18 oder später](https://nodejs.org/en/download).

388 

389```bash theme={null}

390npm install -g @anthropic-ai/claude-code

391```

392 

393Das npm-Paket installiert die gleiche native Binärdatei wie das eigenständige Installationsprogramm. npm zieht die Binärdatei durch eine plattformspezifische optionale Abhängigkeit wie `@anthropic-ai/claude-code-darwin-arm64` ein, und ein Postinstall-Schritt verknüpft sie. Die installierte `claude`-Binärdatei ruft selbst nicht Node auf.

394 

395Unterstützte npm-Installationsplattformen sind `darwin-arm64`, `darwin-x64`, `linux-x64`, `linux-arm64`, `linux-x64-musl`, `linux-arm64-musl`, `win32-x64` und `win32-arm64`. Ihr Paketmanager muss optionale Abhängigkeiten zulassen. Siehe [Fehlerbehebung](/de/troubleshoot-install#native-binary-not-found-after-npm-install), wenn die Binärdatei nach der Installation fehlt.

396 

397<Warning>

398 Verwenden Sie NICHT `sudo npm install -g`, da dies zu Berechtigungsproblemen und Sicherheitsrisiken führen kann. Wenn Sie auf Berechtigungsfehler stoßen, siehe [Fehlerbehebung bei Berechtigungsfehlern](/de/troubleshoot-install#permission-errors-during-installation).

399</Warning>

400 

401### Binärintegrität und Code-Signierung

402 

403Jede Veröffentlichung veröffentlicht eine `manifest.json`, die SHA256-Checksummen für jede Plattform-Binärdatei enthält. Das Manifest ist mit einem Anthropic GPG-Schlüssel signiert, daher überprüft die Überprüfung der Signatur auf dem Manifest transitiv jede Binärdatei, die es auflistet.

404 

405#### Manifest-Signatur überprüfen

406 

407Die Schritte 1-3 erfordern eine POSIX-Shell mit `gpg` und `curl`. Unter Windows führen Sie sie in Git Bash oder WSL aus. Schritt 4 enthält eine PowerShell-Option.

408 

409<Steps>

410 <Step title="Laden Sie den öffentlichen Schlüssel herunter und importieren Sie ihn">

411 Der Release-Signaturschlüssel wird unter einer festen URL veröffentlicht.

412 

413 ```bash theme={null}

414 curl -fsSL https://downloads.claude.ai/keys/claude-code.asc | gpg --import

415 ```

416 

417 Zeigen Sie den Fingerabdruck des importierten Schlüssels an.

418 

419 ```bash theme={null}

420 gpg --fingerprint security@anthropic.com

421 ```

422 

423 Bestätigen Sie, dass die Ausgabe diesen Fingerabdruck enthält:

424 

425 ```text theme={null}

426 31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE

427 ```

428 </Step>

429 

430 <Step title="Laden Sie das Manifest und die Signatur herunter">

431 Setzen Sie `VERSION` auf die Veröffentlichung, die Sie überprüfen möchten.

432 

433 ```bash theme={null}

434 REPO=https://downloads.claude.ai/claude-code-releases

435 VERSION=2.1.89

436 curl -fsSLO "$REPO/$VERSION/manifest.json"

437 curl -fsSLO "$REPO/$VERSION/manifest.json.sig"

438 ```

439 </Step>

440 

441 <Step title="Überprüfen Sie die Signatur">

442 Überprüfen Sie die abgelöste Signatur gegen das Manifest.

443 

444 ```bash theme={null}

445 gpg --verify manifest.json.sig manifest.json

446 ```

447 

448 Ein gültiges Ergebnis meldet `Good signature from "Anthropic Claude Code Release Signing <security@anthropic.com>"`.

449 

450 `gpg` druckt auch `WARNING: This key is not certified with a trusted signature!` für jeden neu importierten Schlüssel. Dies ist zu erwarten. Die Zeile `Good signature` bestätigt, dass die kryptografische Überprüfung bestanden wurde. Der Fingerabdruckvergleich in Schritt 1 bestätigt, dass der Schlüssel selbst authentisch ist.

451 </Step>

452 

453 <Step title="Überprüfen Sie die Binärdatei gegen das Manifest">

454 Vergleichen Sie die SHA256-Prüfsumme Ihrer heruntergeladenen Binärdatei mit dem Wert, der unter `platforms.<platform>.checksum` in `manifest.json` aufgelistet ist.

455 

456 <Tabs>

457 <Tab title="Linux">

458 ```bash theme={null}

459 sha256sum claude

460 ```

461 </Tab>

462 

463 <Tab title="macOS">

464 ```bash theme={null}

465 shasum -a 256 claude

466 ```

467 </Tab>

468 

469 <Tab title="Windows PowerShell">

470 ```powershell theme={null}

471 (Get-FileHash claude.exe -Algorithm SHA256).Hash.ToLower()

472 ```

473 </Tab>

474 </Tabs>

475 </Step>

476</Steps>

477 

478<Note>

479 Manifest-Signaturen sind für Veröffentlichungen ab `2.1.89` verfügbar. Frühere Veröffentlichungen veröffentlichen Checksummen in `manifest.json` ohne abgelöste Signatur.

480</Note>

481 

482#### Plattform-Code-Signaturen

483 

484Zusätzlich zum signierten Manifest tragen einzelne Binärdateien plattformspezifische Code-Signaturen, wo unterstützt.

485 

486* **macOS**: signiert von „Anthropic PBC" und beglaubigt von Apple. Überprüfen Sie mit `codesign --verify --verbose ./claude`.

487* **Windows**: signiert von „Anthropic, PBC". Überprüfen Sie mit `Get-AuthenticodeSignature .\claude.exe`.

488* **Linux**: Binärdateien sind nicht einzeln code-signiert. Wenn Sie direkt aus dem `claude-code-releases`-Bucket herunterladen oder das native Installationsprogramm verwenden, überprüfen Sie die Integrität mit der Manifest-Signatur oben. Wenn Sie mit [apt, dnf oder apk](#install-with-linux-package-managers) installieren, überprüft Ihr Paketmanager Signaturen automatisch mit dem Repository-Signaturschlüssel.

489 

490## Claude Code deinstallieren

491 

492Um Claude Code zu entfernen, folgen Sie den Anweisungen für Ihre Installationsmethode.

493 

494### Native Installation

495 

496Entfernen Sie die Claude Code-Binärdatei und Versionsdateien:

497 

498<Tabs>

499 <Tab title="macOS, Linux, WSL">

500 ```bash theme={null}

501 rm -f ~/.local/bin/claude

502 rm -rf ~/.local/share/claude

503 ```

504 </Tab>

505 

506 <Tab title="Windows PowerShell">

507 ```powershell theme={null}

508 Remove-Item -Path "$env:USERPROFILE\.local\bin\claude.exe" -Force

509 Remove-Item -Path "$env:USERPROFILE\.local\share\claude" -Recurse -Force

510 ```

511 </Tab>

512</Tabs>

513 

514### Homebrew-Installation

515 

516Entfernen Sie das Homebrew-Cask, das Sie installiert haben. Wenn Sie das stabile Cask installiert haben:

517 

518```bash theme={null}

519brew uninstall --cask claude-code

520```

521 

522Wenn Sie das neueste Cask installiert haben:

523 

524```bash theme={null}

525brew uninstall --cask claude-code@latest

526```

527 

528### WinGet-Installation

529 

530Entfernen Sie das WinGet-Paket:

531 

532```powershell theme={null}

533winget uninstall Anthropic.ClaudeCode

534```

535 

536### apt / dnf / apk

537 

538Entfernen Sie das Paket und die Repository-Konfiguration:

539 

540<Tabs>

541 <Tab title="apt">

542 ```bash theme={null}

543 sudo apt remove claude-code

544 sudo rm /etc/apt/sources.list.d/claude-code.list /etc/apt/keyrings/claude-code.asc

545 ```

546 </Tab>

547 

548 <Tab title="dnf">

549 ```bash theme={null}

550 sudo dnf remove claude-code

551 sudo rm /etc/yum.repos.d/claude-code.repo

552 ```

553 </Tab>

554 

555 <Tab title="apk">

556 ```sh theme={null}

557 apk del claude-code

558 sed -i '\|downloads.claude.ai/claude-code/apk|d' /etc/apk/repositories

559 rm /etc/apk/keys/claude-code.rsa.pub

560 ```

561 </Tab>

562</Tabs>

563 

564### npm

565 

566Entfernen Sie das globale npm-Paket:

567 

568```bash theme={null}

569npm uninstall -g @anthropic-ai/claude-code

570```

571 

572### Konfigurationsdateien entfernen

573 

574<Warning>

575 Das Entfernen von Konfigurationsdateien löscht alle Ihre Einstellungen, zulässigen Tools, MCP-Serverkonfigurationen und Sitzungsverlauf.

576</Warning>

577 

578Die VS Code-Erweiterung, das JetBrains-Plugin und die Desktop-App schreiben auch in `~/.claude/`. Wenn eines davon noch installiert ist, wird das Verzeichnis beim nächsten Ausführen neu erstellt. Um Claude Code vollständig zu entfernen, deinstallieren Sie die [VS Code-Erweiterung](/de/vs-code#uninstall-the-extension), das JetBrains-Plugin und die Desktop-App, bevor Sie diese Dateien löschen.

579 

580So entfernen Sie Claude Code-Einstellungen und zwischengespeicherte Daten:

581 

582<Tabs>

583 <Tab title="macOS, Linux, WSL">

584 ```bash theme={null}

585 # Entfernen Sie Benutzereinstellungen und Status

586 rm -rf ~/.claude

587 rm ~/.claude.json

588 

589 # Entfernen Sie projektspezifische Einstellungen (führen Sie dies aus Ihrem Projektverzeichnis aus)

590 rm -rf .claude

591 rm -f .mcp.json

592 ```

593 </Tab>

594 

595 <Tab title="Windows PowerShell">

596 ```powershell theme={null}

597 # Entfernen Sie Benutzereinstellungen und Status

598 Remove-Item -Path "$env:USERPROFILE\.claude" -Recurse -Force

599 Remove-Item -Path "$env:USERPROFILE\.claude.json" -Force

600 

601 # Entfernen Sie projektspezifische Einstellungen (führen Sie dies aus Ihrem Projektverzeichnis aus)

602 Remove-Item -Path ".claude" -Recurse -Force

603 Remove-Item -Path ".mcp.json" -Force

604 ```

605 </Tab>

606</Tabs>

skills.md +728 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude mit Skills erweitern

6 

7> Erstellen, verwalten und teilen Sie Skills, um Claudes Funktionen in Claude Code zu erweitern. Umfasst benutzerdefinierte Befehle und gebündelte Skills.

8 

9Skills erweitern das, was Claude tun kann. Erstellen Sie eine `SKILL.md`-Datei mit Anweisungen, und Claude fügt sie zu seinem Toolkit hinzu. Claude verwendet Skills, wenn sie relevant sind, oder Sie können einen direkt mit `/skill-name` aufrufen.

10 

11Erstellen Sie einen Skill, wenn Sie immer wieder das gleiche Playbook, die gleiche Checkliste oder ein mehrstufiges Verfahren in den Chat einfügen, oder wenn ein Abschnitt von CLAUDE.md zu einem Verfahren statt zu einer Tatsache geworden ist. Im Gegensatz zu CLAUDE.md-Inhalten wird der Body eines Skills nur geladen, wenn er verwendet wird, sodass lange Referenzmaterialien fast nichts kosten, bis Sie sie benötigen.

12 

13<Note>

14 Für integrierte Befehle wie `/help` und `/compact` sowie gebündelte Skills wie `/debug` und `/simplify` siehe die [Befehlsreferenz](/de/commands).

15 

16 **Benutzerdefinierte Befehle wurden in Skills zusammengeführt.** Eine Datei unter `.claude/commands/deploy.md` und ein Skill unter `.claude/skills/deploy/SKILL.md` erstellen beide `/deploy` und funktionieren auf die gleiche Weise. Ihre vorhandenen `.claude/commands/`-Dateien funktionieren weiterhin. Skills fügen optionale Funktionen hinzu: ein Verzeichnis für unterstützende Dateien, Frontmatter zum [Steuern, wer einen Skill aufruft](#control-who-invokes-a-skill), und die Möglichkeit für Claude, sie automatisch zu laden, wenn sie relevant sind.

17</Note>

18 

19Claude Code Skills folgen dem [Agent Skills](https://agentskills.io) offenen Standard, der über mehrere KI-Tools funktioniert. Claude Code erweitert den Standard mit zusätzlichen Funktionen wie [Invocation Control](#control-who-invokes-a-skill), [Subagent-Ausführung](#run-skills-in-a-subagent) und [dynamischer Kontexteinspritzung](#inject-dynamic-context).

20 

21## Gebündelte Skills

22 

23Claude Code wird mit einer Reihe von gebündelten Skills ausgeliefert, die in jeder Sitzung verfügbar sind, einschließlich `/simplify`, `/batch`, `/debug`, `/loop` und `/claude-api`. Im Gegensatz zu den meisten integrierten Befehlen, die direkt feste Logik ausführen, sind gebündelte Skills prompt-basiert: Sie geben Claude ein detailliertes Playbook und lassen es die Arbeit mit seinen Tools orchestrieren. Sie rufen sie auf die gleiche Weise auf wie jeden anderen Skill, indem Sie `/` gefolgt vom Skill-Namen eingeben.

24 

25Gebündelte Skills sind in der [Befehlsreferenz](/de/commands) neben integrierten Befehlen aufgelistet und mit **Skill** in der Spalte „Zweck" gekennzeichnet.

26 

27## Erste Schritte

28 

29### Erstellen Sie Ihren ersten Skill

30 

31Dieses Beispiel erstellt einen Skill, der Claude beibringt, Code mit visuellen Diagrammen und Analogien zu erklären. Da er Standard-Frontmatter verwendet, kann Claude ihn automatisch laden, wenn Sie fragen, wie etwas funktioniert, oder Sie können ihn direkt mit `/explain-code` aufrufen.

32 

33<Steps>

34 <Step title="Erstellen Sie das Skill-Verzeichnis">

35 Erstellen Sie ein Verzeichnis für den Skill in Ihrem persönlichen Skills-Ordner. Persönliche Skills sind über alle Ihre Projekte hinweg verfügbar.

36 

37 ```bash theme={null}

38 mkdir -p ~/.claude/skills/explain-code

39 ```

40 </Step>

41 

42 <Step title="Schreiben Sie SKILL.md">

43 Jeder Skill benötigt eine `SKILL.md`-Datei mit zwei Teilen: YAML-Frontmatter (zwischen `---`-Markierungen), das Claude mitteilt, wann der Skill verwendet werden soll, und Markdown-Inhalt mit Anweisungen, die Claude befolgt, wenn der Skill aufgerufen wird. Das Verzeichnisname wird zum `/slash-command`, und die `description` hilft Claude zu entscheiden, wann der Skill automatisch geladen werden soll.

44 

45 Erstellen Sie `~/.claude/skills/explain-code/SKILL.md`:

46 

47 ```yaml theme={null}

48 ---

49 description: Explains code with visual diagrams and analogies. Use when explaining how code works, teaching about a codebase, or when the user asks "how does this work?"

50 ---

51 

52 When explaining code, always include:

53 

54 1. **Start with an analogy**: Compare the code to something from everyday life

55 2. **Draw a diagram**: Use ASCII art to show the flow, structure, or relationships

56 3. **Walk through the code**: Explain step-by-step what happens

57 4. **Highlight a gotcha**: What's a common mistake or misconception?

58 

59 Keep explanations conversational. For complex concepts, use multiple analogies.

60 ```

61 </Step>

62 

63 <Step title="Testen Sie den Skill">

64 Sie können ihn auf zwei Arten testen:

65 

66 **Lassen Sie Claude ihn automatisch aufrufen**, indem Sie etwas eingeben, das der Beschreibung entspricht:

67 

68 ```text theme={null}

69 How does this code work?

70 ```

71 

72 **Oder rufen Sie ihn direkt auf** mit dem Skill-Namen:

73 

74 ```text theme={null}

75 /explain-code src/auth/login.ts

76 ```

77 

78 In beiden Fällen sollte Claude eine Analogie und ein ASCII-Diagramm in seiner Erklärung enthalten.

79 </Step>

80</Steps>

81 

82### Wo Skills leben

83 

84Wo Sie einen Skill speichern, bestimmt, wer ihn verwenden kann:

85 

86| Ort | Pfad | Gilt für |

87| :---------- | :------------------------------------------------------------ | :---------------------------------- |

88| Unternehmen | Siehe [verwaltete Einstellungen](/de/settings#settings-files) | Alle Benutzer in Ihrer Organisation |

89| Persönlich | `~/.claude/skills/<skill-name>/SKILL.md` | Alle Ihre Projekte |

90| Projekt | `.claude/skills/<skill-name>/SKILL.md` | Nur dieses Projekt |

91| Plugin | `<plugin>/skills/<skill-name>/SKILL.md` | Wo das Plugin aktiviert ist |

92 

93Wenn Skills auf verschiedenen Ebenen denselben Namen haben, gewinnt Unternehmen gegenüber Persönlich, und Persönlich gewinnt gegenüber Projekt. Plugin-Skills verwenden einen `plugin-name:skill-name`-Namespace, sodass sie nicht mit anderen Ebenen in Konflikt geraten können. Wenn Sie Dateien in `.claude/commands/` haben, funktionieren diese auf die gleiche Weise, aber wenn ein Skill und ein Befehl denselben Namen haben, hat der Skill Vorrang.

94 

95#### Live-Änderungserkennung

96 

97Claude Code überwacht Skill-Verzeichnisse auf Dateiänderungen. Das Hinzufügen, Bearbeiten oder Entfernen eines Skills unter `~/.claude/skills/`, dem Projekt `.claude/skills/` oder einem `.claude/skills/` in einem `--add-dir`-Verzeichnis wird in der aktuellen Sitzung wirksam, ohne Claude Code neu zu starten. Das Erstellen eines Skill-Verzeichnisses auf oberster Ebene, das nicht vorhanden war, als die Sitzung gestartet wurde, erfordert einen Neustart von Claude Code, damit das neue Verzeichnis überwacht werden kann.

98 

99#### Automatische Erkennung aus verschachtelten Verzeichnissen

100 

101Wenn Sie mit Dateien in Unterverzeichnissen arbeiten, erkennt Claude Code automatisch Skills aus verschachtelten `.claude/skills/`-Verzeichnissen. Wenn Sie beispielsweise eine Datei in `packages/frontend/` bearbeiten, sucht Claude Code auch nach Skills in `packages/frontend/.claude/skills/`. Dies unterstützt Monorepo-Setups, bei denen Pakete ihre eigenen Skills haben.

102 

103Jeder Skill ist ein Verzeichnis mit `SKILL.md` als Einstiegspunkt:

104 

105```text theme={null}

106my-skill/

107├── SKILL.md # Main instructions (required)

108├── template.md # Template for Claude to fill in

109├── examples/

110│ └── sample.md # Example output showing expected format

111└── scripts/

112 └── validate.sh # Script Claude can execute

113```

114 

115Die `SKILL.md` enthält die Hauptanweisungen und ist erforderlich. Andere Dateien sind optional und ermöglichen es Ihnen, leistungsfähigere Skills zu erstellen: Vorlagen für Claude zum Ausfüllen, Beispielausgaben, die das erwartete Format zeigen, Scripts, die Claude ausführen kann, oder detaillierte Referenzdokumentation. Verweisen Sie auf diese Dateien von Ihrer `SKILL.md` aus, damit Claude weiß, was sie enthalten und wann sie geladen werden sollen. Siehe [Unterstützende Dateien hinzufügen](#add-supporting-files) für weitere Details.

116 

117<Note>

118 Dateien in `.claude/commands/` funktionieren weiterhin und unterstützen das gleiche [Frontmatter](#frontmatter-reference). Skills werden empfohlen, da sie zusätzliche Funktionen wie unterstützende Dateien unterstützen.

119</Note>

120 

121#### Skills aus zusätzlichen Verzeichnissen

122 

123Das Flag `--add-dir` [gewährt Dateizugriff](/de/permissions#additional-directories-grant-file-access-not-configuration) statt Konfigurationserkennung, aber Skills sind eine Ausnahme: `.claude/skills/` in einem hinzugefügten Verzeichnis wird automatisch geladen. Siehe [Live-Änderungserkennung](#live-change-detection) für die Aufnahme von Änderungen während einer Sitzung.

124 

125Andere `.claude/`-Konfigurationen wie Subagenten, Befehle und Ausgabestile werden nicht aus zusätzlichen Verzeichnissen geladen. Siehe die [Ausnahmetabelle](/de/permissions#additional-directories-grant-file-access-not-configuration) für die vollständige Liste dessen, was geladen wird und was nicht, sowie die empfohlenen Wege zum Teilen von Konfigurationen über Projekte hinweg.

126 

127<Note>

128 CLAUDE.md-Dateien aus `--add-dir`-Verzeichnissen werden standardmäßig nicht geladen. Um sie zu laden, setzen Sie `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1`. Siehe [Aus zusätzlichen Verzeichnissen laden](/de/memory#load-from-additional-directories).

129</Note>

130 

131## Skills konfigurieren

132 

133Skills werden durch YAML-Frontmatter oben in `SKILL.md` und den Markdown-Inhalt, der folgt, konfiguriert.

134 

135### Arten von Skill-Inhalten

136 

137Skill-Dateien können beliebige Anweisungen enthalten, aber das Nachdenken darüber, wie Sie sie aufrufen möchten, hilft zu leiten, was Sie einbeziehen:

138 

139**Referenzinhalt** fügt Wissen hinzu, das Claude auf Ihre aktuelle Arbeit anwendet. Konventionen, Muster, Stilhandbücher, Domänenwissen. Dieser Inhalt wird inline ausgeführt, sodass Claude ihn neben Ihrem Gesprächskontext verwenden kann.

140 

141```yaml theme={null}

142---

143name: api-conventions

144description: API design patterns for this codebase

145---

146 

147When writing API endpoints:

148- Use RESTful naming conventions

149- Return consistent error formats

150- Include request validation

151```

152 

153**Task-Inhalt** gibt Claude Schritt-für-Schritt-Anweisungen für eine bestimmte Aktion, wie Bereitstellungen, Commits oder Code-Generierung. Dies sind oft Aktionen, die Sie direkt mit `/skill-name` aufrufen möchten, anstatt Claude entscheiden zu lassen, wann sie ausgeführt werden. Fügen Sie `disable-model-invocation: true` hinzu, um zu verhindern, dass Claude sie automatisch auslöst.

154 

155```yaml theme={null}

156---

157name: deploy

158description: Deploy the application to production

159context: fork

160disable-model-invocation: true

161---

162 

163Deploy the application:

1641. Run the test suite

1652. Build the application

1663. Push to the deployment target

167```

168 

169Ihre `SKILL.md` kann alles enthalten, aber das Nachdenken darüber, wie Sie den Skill aufrufen möchten (von Ihnen, von Claude oder von beiden) und wo Sie ihn ausführen möchten (inline oder in einem Subagent) hilft zu leiten, was Sie einbeziehen. Für komplexe Skills können Sie auch [unterstützende Dateien hinzufügen](#add-supporting-files), um den Hauptskill fokussiert zu halten.

170 

171### Frontmatter-Referenz

172 

173Über den Markdown-Inhalt hinaus können Sie das Skill-Verhalten mit YAML-Frontmatter-Feldern zwischen `---`-Markierungen oben in Ihrer `SKILL.md`-Datei konfigurieren:

174 

175```yaml theme={null}

176---

177name: my-skill

178description: What this skill does

179disable-model-invocation: true

180allowed-tools: Read Grep

181---

182 

183Your skill instructions here...

184```

185 

186Alle Felder sind optional. Nur `description` wird empfohlen, damit Claude weiß, wann der Skill verwendet werden soll.

187 

188| Feld | Erforderlich | Beschreibung |

189| :------------------------- | :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

190| `name` | Nein | Anzeigename für den Skill. Falls weggelassen, wird der Verzeichnisname verwendet. Nur Kleinbuchstaben, Zahlen und Bindestriche (max. 64 Zeichen). |

191| `description` | Empfohlen | Was der Skill tut und wann er verwendet werden soll. Claude verwendet dies, um zu entscheiden, wann der Skill angewendet werden soll. Falls weggelassen, wird der erste Absatz des Markdown-Inhalts verwendet. Front-load den wichtigsten Anwendungsfall: Der kombinierte Text `description` und `when_to_use` wird in der Skill-Auflistung bei 1.536 Zeichen gekürzt, um die Kontextnutzung zu reduzieren. |

192| `when_to_use` | Nein | Zusätzlicher Kontext für den Zeitpunkt, zu dem Claude den Skill aufrufen sollte, z. B. Trigger-Phrasen oder Beispielanfragen. An `description` in der Skill-Auflistung angehängt und zählt zur 1.536-Zeichen-Obergrenze. |

193| `argument-hint` | Nein | Hinweis, der während der Autovervollständigung angezeigt wird, um erwartete Argumente anzuzeigen. Beispiel: `[issue-number]` oder `[filename] [format]`. |

194| `arguments` | Nein | Benannte positionelle Argumente für [`$name`-Substitution](#available-string-substitutions) im Skill-Inhalt. Akzeptiert eine durch Leerzeichen getrennte Zeichenkette oder eine YAML-Liste. Namen werden in Reihenfolge auf Argumentpositionen abgebildet. |

195| `disable-model-invocation` | Nein | Setzen Sie auf `true`, um zu verhindern, dass Claude diesen Skill automatisch lädt. Verwenden Sie für Workflows, die Sie manuell mit `/name` auslösen möchten. Verhindert auch, dass der Skill [in Subagenten vorgeladen wird](/de/sub-agents#preload-skills-into-subagents). Standard: `false`. |

196| `user-invocable` | Nein | Setzen Sie auf `false`, um aus dem `/`-Menü auszublenden. Verwenden Sie für Hintergrundwissen, das Benutzer nicht direkt aufrufen sollten. Standard: `true`. |

197| `allowed-tools` | Nein | Tools, die Claude ohne Genehmigung verwenden kann, wenn dieser Skill aktiv ist. Akzeptiert eine durch Leerzeichen getrennte Zeichenkette oder eine YAML-Liste. |

198| `model` | Nein | Modell, das verwendet werden soll, wenn dieser Skill aktiv ist. Die Überschreibung gilt für den Rest des aktuellen Zuges und wird nicht in den Einstellungen gespeichert; das Sitzungsmodell wird bei Ihrer nächsten Eingabe fortgesetzt. Akzeptiert die gleichen Werte wie [`/model`](/de/model-config) oder `inherit`, um das aktive Modell beizubehalten. |

199| `effort` | Nein | [Anstrengungsstufe](/de/model-config#adjust-effort-level) wenn dieser Skill aktiv ist. Überschreibt die Anstrengungsstufe der Sitzung. Standard: erbt von Sitzung. Optionen: `low`, `medium`, `high`, `xhigh`, `max`; verfügbare Stufen hängen vom Modell ab. |

200| `context` | Nein | Setzen Sie auf `fork`, um in einem verzweigten Subagent-Kontext ausgeführt zu werden. |

201| `agent` | Nein | Welcher Subagent-Typ verwendet werden soll, wenn `context: fork` gesetzt ist. |

202| `hooks` | Nein | Hooks, die auf den Lebenszyklus dieses Skills beschränkt sind. Siehe [Hooks in Skills und Agenten](/de/hooks#hooks-in-skills-and-agents) für das Konfigurationsformat. |

203| `paths` | Nein | Glob-Muster, die begrenzen, wann dieser Skill aktiviert wird. Akzeptiert eine kommagetrennte Zeichenkette oder eine YAML-Liste. Wenn gesetzt, lädt Claude den Skill automatisch nur, wenn mit Dateien arbeitet, die den Mustern entsprechen. Verwendet das gleiche Format wie [pfadspezifische Regeln](/de/memory#path-specific-rules). |

204| `shell` | Nein | Shell, die für `` !`command` `` und ` ```! ` Blöcke in diesem Skill verwendet werden soll. Akzeptiert `bash` (Standard) oder `powershell`. Das Setzen von `powershell` führt Inline-Shell-Befehle über PowerShell unter Windows aus. Erfordert `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. |

205 

206#### Verfügbare String-Substitutionen

207 

208Skills unterstützen String-Substitution für dynamische Werte im Skill-Inhalt:

209 

210| Variable | Beschreibung |

211| :--------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

212| `$ARGUMENTS` | Alle Argumente, die beim Aufrufen des Skills übergeben werden. Wenn `$ARGUMENTS` nicht im Inhalt vorhanden ist, werden Argumente als `ARGUMENTS: <value>` angehängt. |

213| `$ARGUMENTS[N]` | Greifen Sie auf ein bestimmtes Argument nach 0-basiertem Index zu, z. B. `$ARGUMENTS[0]` für das erste Argument. |

214| `$N` | Kurzform für `$ARGUMENTS[N]`, z. B. `$0` für das erste Argument oder `$1` für das zweite. |

215| `$name` | Benanntes Argument, das in der [`arguments`](#frontmatter-reference)-Frontmatter-Liste deklariert ist. Namen werden in Reihenfolge auf Positionen abgebildet, daher wird mit `arguments: [issue, branch]` der Platzhalter `$issue` zum ersten Argument erweitert und `$branch` zum zweiten. |

216| `${CLAUDE_SESSION_ID}` | Die aktuelle Sitzungs-ID. Nützlich zum Protokollieren, Erstellen sitzungsspezifischer Dateien oder Korrelieren der Skill-Ausgabe mit Sitzungen. |

217| `${CLAUDE_EFFORT}` | Die aktuelle Anstrengungsstufe: `low`, `medium`, `high`, `xhigh` oder `max`. Verwenden Sie dies, um Skill-Anweisungen an die aktive Anstrengungseinstellung anzupassen. |

218| `${CLAUDE_SKILL_DIR}` | Das Verzeichnis, das die `SKILL.md`-Datei des Skills enthält. Für Plugin-Skills ist dies das Skill-Unterverzeichnis im Plugin, nicht das Plugin-Root. Verwenden Sie dies in Bash-Injektionsbefehlen, um auf Scripts oder Dateien zu verweisen, die mit dem Skill gebündelt sind, unabhängig vom aktuellen Arbeitsverzeichnis. |

219 

220Indizierte Argumente verwenden Shell-ähnliche Anführungszeichen, daher müssen Sie mehrteilige Werte in Anführungszeichen setzen, um sie als einzelnes Argument zu übergeben. Zum Beispiel macht `/my-skill "hello world" second` `$0` zu `hello world` und `$1` zu `second`. Der `$ARGUMENTS`-Platzhalter wird immer zur vollständigen Argumentzeichenkette erweitert, wie eingegeben.

221 

222**Beispiel mit Substitutionen:**

223 

224```yaml theme={null}

225---

226name: session-logger

227description: Log activity for this session

228---

229 

230Log the following to logs/${CLAUDE_SESSION_ID}.log:

231 

232$ARGUMENTS

233```

234 

235### Unterstützende Dateien hinzufügen

236 

237Skills können mehrere Dateien in ihrem Verzeichnis enthalten. Dies hält `SKILL.md` auf das Wesentliche konzentriert, während Claude detailliertes Referenzmaterial nur bei Bedarf abrufen kann. Große Referenzdokumente, API-Spezifikationen oder Beispielsammlungen müssen nicht jedes Mal geladen werden, wenn der Skill ausgeführt wird.

238 

239```text theme={null}

240my-skill/

241├── SKILL.md (required - overview and navigation)

242├── reference.md (detailed API docs - loaded when needed)

243├── examples.md (usage examples - loaded when needed)

244└── scripts/

245 └── helper.py (utility script - executed, not loaded)

246```

247 

248Verweisen Sie auf unterstützende Dateien von `SKILL.md` aus, damit Claude weiß, was jede Datei enthält und wann sie geladen werden soll:

249 

250```markdown theme={null}

251## Additional resources

252 

253- For complete API details, see [reference.md](reference.md)

254- For usage examples, see [examples.md](examples.md)

255```

256 

257<Tip>Halten Sie `SKILL.md` unter 500 Zeilen. Verschieben Sie detailliertes Referenzmaterial in separate Dateien.</Tip>

258 

259### Steuern Sie, wer einen Skill aufruft

260 

261Standardmäßig können sowohl Sie als auch Claude jeden Skill aufrufen. Sie können `/skill-name` eingeben, um ihn direkt aufzurufen, und Claude kann ihn automatisch laden, wenn er für Ihr Gespräch relevant ist. Zwei Frontmatter-Felder ermöglichen es Ihnen, dies einzuschränken:

262 

263* **`disable-model-invocation: true`**: Nur Sie können den Skill aufrufen. Verwenden Sie dies für Workflows mit Nebenwirkungen oder die Sie zeitlich steuern möchten, wie `/commit`, `/deploy` oder `/send-slack-message`. Sie möchten nicht, dass Claude bereitstellt, weil Ihr Code bereit aussieht.

264 

265* **`user-invocable: false`**: Nur Claude kann den Skill aufrufen. Verwenden Sie dies für Hintergrundwissen, das nicht als Befehl umsetzbar ist. Ein `legacy-system-context`-Skill erklärt, wie ein altes System funktioniert. Claude sollte dies kennen, wenn es relevant ist, aber `/legacy-system-context` ist keine aussagekräftige Aktion für Benutzer.

266 

267Dieses Beispiel erstellt einen Deploy-Skill, den nur Sie auslösen können. Das `disable-model-invocation: true`-Feld verhindert, dass Claude ihn automatisch ausführt:

268 

269```yaml theme={null}

270---

271name: deploy

272description: Deploy the application to production

273disable-model-invocation: true

274---

275 

276Deploy $ARGUMENTS to production:

277 

2781. Run the test suite

2792. Build the application

2803. Push to the deployment target

2814. Verify the deployment succeeded

282```

283 

284Hier ist, wie die beiden Felder Aufrufe und Kontextladung beeinflussen:

285 

286| Frontmatter | Sie können aufrufen | Claude kann aufrufen | Wann in Kontext geladen |

287| :------------------------------- | :------------------ | :------------------- | :--------------------------------------------------------------------------------- |

288| (Standard) | Ja | Ja | Beschreibung immer im Kontext, vollständiger Skill wird beim Aufrufen geladen |

289| `disable-model-invocation: true` | Ja | Nein | Beschreibung nicht im Kontext, vollständiger Skill wird geladen, wenn Sie aufrufen |

290| `user-invocable: false` | Nein | Ja | Beschreibung immer im Kontext, vollständiger Skill wird beim Aufrufen geladen |

291 

292<Note>

293 In einer regulären Sitzung werden Skill-Beschreibungen in den Kontext geladen, damit Claude weiß, was verfügbar ist, aber vollständiger Skill-Inhalt wird nur beim Aufrufen geladen. [Subagenten mit vorgeladenen Skills](/de/sub-agents#preload-skills-into-subagents) funktionieren anders: Der vollständige Skill-Inhalt wird beim Start eingespritzt.

294</Note>

295 

296### Skill-Inhalts-Lebenszyklus

297 

298Wenn Sie oder Claude einen Skill aufrufen, wird der gerenderte `SKILL.md`-Inhalt als einzelne Nachricht in das Gespräch eingegeben und bleibt dort für den Rest der Sitzung. Claude Code liest die Skill-Datei bei späteren Zügen nicht erneut, daher schreiben Sie Anleitung, die während einer Aufgabe gelten sollte, als stehende Anweisungen statt als einmalige Schritte.

299 

300[Auto-Komprimierung](/de/how-claude-code-works#when-context-fills-up) trägt aufgerufene Skills innerhalb eines Token-Budgets weiter. Wenn das Gespräch zusammengefasst wird, um Kontext freizugeben, hängt Claude Code die neueste Aufrufe jedes Skills nach der Zusammenfassung wieder an und behält die ersten 5.000 Token jedes Skills. Wieder angehängte Skills teilen sich ein kombiniertes Budget von 25.000 Token. Claude Code füllt dieses Budget ab dem zuletzt aufgerufenen Skill, sodass ältere Skills vollständig gelöscht werden können, wenn Sie viele in einer Sitzung aufgerufen haben.

301 

302Wenn ein Skill das Verhalten nach der ersten Antwort nicht mehr zu beeinflussen scheint, ist der Inhalt normalerweise immer noch vorhanden und das Modell wählt andere Tools oder Ansätze. Stärken Sie die `description` und Anweisungen des Skills, damit das Modell es weiterhin bevorzugt, oder verwenden Sie [Hooks](/de/hooks), um Verhalten deterministisch zu erzwingen. Wenn der Skill groß ist oder Sie mehrere andere danach aufgerufen haben, rufen Sie ihn nach der Komprimierung erneut auf, um den vollständigen Inhalt wiederherzustellen.

303 

304### Tools für einen Skill vorab genehmigen

305 

306Das `allowed-tools`-Feld gewährt Berechtigung für die aufgelisteten Tools, während der Skill aktiv ist, sodass Claude sie verwenden kann, ohne Sie um Genehmigung zu bitten. Es schränkt nicht ein, welche Tools verfügbar sind: Jedes Tool bleibt aufrufbar, und Ihre [Berechtigungseinstellungen](/de/permissions) regeln weiterhin Tools, die nicht aufgelistet sind.

307 

308Dieser Skill lässt Claude Git-Befehle ohne Genehmigung pro Verwendung ausführen, wenn Sie ihn aufrufen:

309 

310```yaml theme={null}

311---

312name: commit

313description: Stage and commit the current changes

314disable-model-invocation: true

315allowed-tools: Bash(git add *) Bash(git commit *) Bash(git status *)

316---

317```

318 

319Um einen Skill daran zu hindern, bestimmte Tools zu verwenden, fügen Sie stattdessen Ablehnungsregeln in Ihren [Berechtigungseinstellungen](/de/permissions) hinzu.

320 

321### Argumente an Skills übergeben

322 

323Sowohl Sie als auch Claude können Argumente beim Aufrufen eines Skills übergeben. Argumente sind über den `$ARGUMENTS`-Platzhalter verfügbar.

324 

325Dieser Skill behebt ein GitHub-Problem nach Nummer. Der `$ARGUMENTS`-Platzhalter wird durch alles ersetzt, was dem Skill-Namen folgt:

326 

327```yaml theme={null}

328---

329name: fix-issue

330description: Fix a GitHub issue

331disable-model-invocation: true

332---

333 

334Fix GitHub issue $ARGUMENTS following our coding standards.

335 

3361. Read the issue description

3372. Understand the requirements

3383. Implement the fix

3394. Write tests

3405. Create a commit

341```

342 

343Wenn Sie `/fix-issue 123` ausführen, erhält Claude „Fix GitHub issue 123 following our coding standards..."

344 

345Wenn Sie einen Skill mit Argumenten aufrufen, aber der Skill `$ARGUMENTS` nicht enthält, hängt Claude Code `ARGUMENTS: <your input>` am Ende des Skill-Inhalts an, damit Claude immer noch sieht, was Sie eingegeben haben.

346 

347Um auf einzelne Argumente nach Position zuzugreifen, verwenden Sie `$ARGUMENTS[N]` oder die kürzere Form `$N`:

348 

349```yaml theme={null}

350---

351name: migrate-component

352description: Migrate a component from one framework to another

353---

354 

355Migrate the $ARGUMENTS[0] component from $ARGUMENTS[1] to $ARGUMENTS[2].

356Preserve all existing behavior and tests.

357```

358 

359Wenn Sie `/migrate-component SearchBar React Vue` ausführen, wird `$ARGUMENTS[0]` durch `SearchBar`, `$ARGUMENTS[1]` durch `React` und `$ARGUMENTS[2]` durch `Vue` ersetzt. Der gleiche Skill mit der `$N`-Kurzform:

360 

361```yaml theme={null}

362---

363name: migrate-component

364description: Migrate a component from one framework to another

365---

366 

367Migrate the $0 component from $1 to $2.

368Preserve all existing behavior and tests.

369```

370 

371## Fortgeschrittene Muster

372 

373### Dynamischen Kontext einspritzen

374 

375Die `` !`<command>` `` Syntax führt Shell-Befehle aus, bevor der Skill-Inhalt an Claude gesendet wird. Die Befehlsausgabe ersetzt den Platzhalter, sodass Claude tatsächliche Daten erhält, nicht den Befehl selbst.

376 

377Dieser Skill fasst einen Pull Request zusammen, indem er Live-PR-Daten mit der GitHub CLI abruft. Die `` !`gh pr diff` `` und andere Befehle werden zuerst ausgeführt, und ihre Ausgabe wird in den Prompt eingefügt:

378 

379```yaml theme={null}

380---

381name: pr-summary

382description: Summarize changes in a pull request

383context: fork

384agent: Explore

385allowed-tools: Bash(gh *)

386---

387 

388## Pull request context

389- PR diff: !`gh pr diff`

390- PR comments: !`gh pr view --comments`

391- Changed files: !`gh pr diff --name-only`

392 

393## Your task

394Summarize this pull request...

395```

396 

397Wenn dieser Skill ausgeführt wird:

398 

3991. Jeder `` !`<command>` `` wird sofort ausgeführt (bevor Claude etwas sieht)

4002. Die Ausgabe ersetzt den Platzhalter im Skill-Inhalt

4013. Claude erhält den vollständig gerenderten Prompt mit tatsächlichen PR-Daten

402 

403Dies ist Vorverarbeitung, nicht etwas, das Claude ausführt. Claude sieht nur das Endergebnis.

404 

405Für mehrzeilige Befehle verwenden Sie einen Codeblock, der mit ` ```! ` statt der Inline-Form geöffnet wird:

406 

407````markdown theme={null}

408## Environment

409```!

410node --version

411npm --version

412git status --short

413```

414````

415 

416Um dieses Verhalten für Skills und benutzerdefinierte Befehle aus Benutzer-, Projekt-, Plugin- oder [zusätzlichen Verzeichnis](#skills-from-additional-directories)-Quellen zu deaktivieren, setzen Sie `"disableSkillShellExecution": true` in [Einstellungen](/de/settings). Jeder Befehl wird stattdessen durch `[shell command execution disabled by policy]` ersetzt. Gebündelte und verwaltete Skills sind nicht betroffen. Diese Einstellung ist am nützlichsten in [verwalteten Einstellungen](/de/permissions#managed-settings), wo Benutzer sie nicht überschreiben können.

417 

418<Tip>

419 Um [erweitertes Denken](/de/common-workflows#use-extended-thinking-thinking-mode) in einem Skill zu aktivieren, fügen Sie das Wort „ultrathink" irgendwo in Ihren Skill-Inhalt ein.

420</Tip>

421 

422### Skills in einem Subagent ausführen

423 

424Fügen Sie `context: fork` zu Ihrem Frontmatter hinzu, wenn Sie möchten, dass ein Skill isoliert ausgeführt wird. Der Skill-Inhalt wird zum Prompt, der den Subagent antreibt. Er hat keinen Zugriff auf Ihren Gesprächsverlauf.

425 

426<Warning>

427 `context: fork` macht nur Sinn für Skills mit expliziten Anweisungen. Wenn Ihr Skill Richtlinien wie „verwenden Sie diese API-Konventionen" ohne eine Aufgabe enthält, erhält der Subagent die Richtlinien, aber keinen umsetzbaren Prompt, und gibt ohne aussagekräftige Ausgabe zurück.

428</Warning>

429 

430Skills und [Subagenten](/de/sub-agents) funktionieren in zwei Richtungen zusammen:

431 

432| Ansatz | System-Prompt | Aufgabe | Lädt auch |

433| :------------------------- | :-------------------------------------- | :--------------------------- | :----------------------------- |

434| Skill mit `context: fork` | Vom Agent-Typ (`Explore`, `Plan`, etc.) | SKILL.md-Inhalt | CLAUDE.md |

435| Subagent mit `skills`-Feld | Subagent-Markdown-Body | Claudes Delegationsnachricht | Vorgeladene Skills + CLAUDE.md |

436 

437Mit `context: fork` schreiben Sie die Aufgabe in Ihren Skill und wählen einen Agent-Typ aus, um sie auszuführen. Für das Inverse (Definieren eines benutzerdefinierten Subagenten, der Skills als Referenzmaterial verwendet), siehe [Subagenten](/de/sub-agents#preload-skills-into-subagents).

438 

439#### Beispiel: Research-Skill mit Explore-Agent

440 

441Dieser Skill führt Recherchen in einem verzweigten Explore-Agent aus. Der Skill-Inhalt wird zur Aufgabe, und der Agent bietet schreibgeschützte Tools, die für die Codebase-Erkundung optimiert sind:

442 

443```yaml theme={null}

444---

445name: deep-research

446description: Research a topic thoroughly

447context: fork

448agent: Explore

449---

450 

451Research $ARGUMENTS thoroughly:

452 

4531. Find relevant files using Glob and Grep

4542. Read and analyze the code

4553. Summarize findings with specific file references

456```

457 

458Wenn dieser Skill ausgeführt wird:

459 

4601. Ein neuer isolierter Kontext wird erstellt

4612. Der Subagent erhält den Skill-Inhalt als seinen Prompt („Research \$ARGUMENTS thoroughly...")

4623. Das `agent`-Feld bestimmt die Ausführungsumgebung (Modell, Tools und Berechtigungen)

4634. Ergebnisse werden zusammengefasst und an Ihr Hauptgespräch zurückgegeben

464 

465Das `agent`-Feld gibt an, welche Subagent-Konfiguration verwendet werden soll. Optionen umfassen integrierte Agenten (`Explore`, `Plan`, `general-purpose`) oder jeden benutzerdefinierten Subagenten aus `.claude/agents/`. Falls weggelassen, wird `general-purpose` verwendet.

466 

467### Beschränken Sie Claudes Skill-Zugriff

468 

469Standardmäßig kann Claude jeden Skill aufrufen, der nicht `disable-model-invocation: true` gesetzt hat. Skills, die `allowed-tools` definieren, gewähren Claude Zugriff auf diese Tools ohne Genehmigung pro Verwendung, wenn der Skill aktiv ist. Ihre [Berechtigungseinstellungen](/de/permissions) regeln weiterhin das Baseline-Genehmigungsverhalten für alle anderen Tools. Einige integrierte Befehle sind auch über das Skill-Tool verfügbar, einschließlich `/init`, `/review` und `/security-review`. Andere integrierte Befehle wie `/compact` sind nicht verfügbar.

470 

471Drei Möglichkeiten, um zu steuern, welche Skills Claude aufrufen kann:

472 

473**Deaktivieren Sie alle Skills**, indem Sie das Skill-Tool in `/permissions` ablehnen:

474 

475```text theme={null}

476# Add to deny rules:

477Skill

478```

479 

480**Erlauben oder verweigern Sie bestimmte Skills** mit [Berechtigungsregeln](/de/permissions):

481 

482```text theme={null}

483# Allow only specific skills

484Skill(commit)

485Skill(review-pr *)

486 

487# Deny specific skills

488Skill(deploy *)

489```

490 

491Berechtigungssyntax: `Skill(name)` für exakte Übereinstimmung, `Skill(name *)` für Präfixübereinstimmung mit beliebigen Argumenten.

492 

493**Verstecken Sie einzelne Skills**, indem Sie `disable-model-invocation: true` zu ihrem Frontmatter hinzufügen. Dies entfernt den Skill vollständig aus Claudes Kontext.

494 

495<Note>

496 Das `user-invocable`-Feld steuert nur die Menüsichtbarkeit, nicht den Skill-Tool-Zugriff. Verwenden Sie `disable-model-invocation: true`, um die programmgesteuerte Aufrufe zu blockieren.

497</Note>

498 

499## Skills teilen

500 

501Skills können je nach Ihrer Zielgruppe in verschiedenen Bereichen verteilt werden:

502 

503* **Projekt-Skills**: Committen Sie `.claude/skills/` zur Versionskontrolle

504* **Plugins**: Erstellen Sie ein `skills/`-Verzeichnis in Ihrem [Plugin](/de/plugins)

505* **Verwaltet**: Stellen Sie organisationsweit über [verwaltete Einstellungen](/de/settings#settings-files) bereit

506 

507### Visuelle Ausgabe generieren

508 

509Skills können Scripts in jeder Sprache bündeln und ausführen, was Claude Funktionen gibt, die über das hinausgehen, was in einem einzelnen Prompt möglich ist. Ein leistungsstarkes Muster ist die Generierung visueller Ausgabe: interaktive HTML-Dateien, die in Ihrem Browser geöffnet werden, um Daten zu erkunden, zu debuggen oder Berichte zu erstellen.

510 

511Dieses Beispiel erstellt einen Codebase-Explorer: eine interaktive Baumansicht, in der Sie Verzeichnisse erweitern und reduzieren, Dateigröße auf einen Blick sehen und Dateitypen nach Farbe identifizieren können.

512 

513Erstellen Sie das Skill-Verzeichnis:

514 

515```bash theme={null}

516mkdir -p ~/.claude/skills/codebase-visualizer/scripts

517```

518 

519Erstellen Sie `~/.claude/skills/codebase-visualizer/SKILL.md`. Die Beschreibung teilt Claude mit, wann dieser Skill aktiviert werden soll, und die Anweisungen teilen Claude mit, das gebündelte Script auszuführen:

520 

521````yaml theme={null}

522---

523name: codebase-visualizer

524description: Generate an interactive collapsible tree visualization of your codebase. Use when exploring a new repo, understanding project structure, or identifying large files.

525allowed-tools: Bash(python *)

526---

527 

528# Codebase Visualizer

529 

530Generate an interactive HTML tree view that shows your project's file structure with collapsible directories.

531 

532## Usage

533 

534Run the visualization script from your project root:

535 

536```bash

537python ~/.claude/skills/codebase-visualizer/scripts/visualize.py .

538```

539 

540This creates `codebase-map.html` in the current directory and opens it in your default browser.

541 

542## What the visualization shows

543 

544- **Collapsible directories**: Click folders to expand/collapse

545- **File sizes**: Displayed next to each file

546- **Colors**: Different colors for different file types

547- **Directory totals**: Shows aggregate size of each folder

548````

549 

550Erstellen Sie `~/.claude/skills/codebase-visualizer/scripts/visualize.py`. Dieses Script scannt einen Verzeichnisbaum und generiert eine eigenständige HTML-Datei mit:

551 

552* Eine **Zusammenfassungs-Seitenleiste**, die Dateianzahl, Verzeichnisanzahl, Gesamtgröße und Anzahl der Dateitypen anzeigt

553* Ein **Balkendiagramm**, das die Codebasis nach Dateityp aufschlüsselt (Top 8 nach Größe)

554* Einen **zusammenklappbaren Baum**, in dem Sie Verzeichnisse erweitern und reduzieren können, mit farbcodierten Dateityp-Indikatoren

555 

556Das Script erfordert Python, verwendet aber nur integrierte Bibliotheken, daher müssen keine Pakete installiert werden:

557 

558```python expandable theme={null}

559#!/usr/bin/env python3

560"""Generate an interactive collapsible tree visualization of a codebase."""

561 

562import json

563import sys

564import webbrowser

565from pathlib import Path

566from collections import Counter

567 

568IGNORE = {'.git', 'node_modules', '__pycache__', '.venv', 'venv', 'dist', 'build'}

569 

570def scan(path: Path, stats: dict) -> dict:

571 result = {"name": path.name, "children": [], "size": 0}

572 try:

573 for item in sorted(path.iterdir()):

574 if item.name in IGNORE or item.name.startswith('.'):

575 continue

576 if item.is_file():

577 size = item.stat().st_size

578 ext = item.suffix.lower() or '(no ext)'

579 result["children"].append({"name": item.name, "size": size, "ext": ext})

580 result["size"] += size

581 stats["files"] += 1

582 stats["extensions"][ext] += 1

583 stats["ext_sizes"][ext] += size

584 elif item.is_dir():

585 stats["dirs"] += 1

586 child = scan(item, stats)

587 if child["children"]:

588 result["children"].append(child)

589 result["size"] += child["size"]

590 except PermissionError:

591 pass

592 return result

593 

594def generate_html(data: dict, stats: dict, output: Path) -> None:

595 ext_sizes = stats["ext_sizes"]

596 total_size = sum(ext_sizes.values()) or 1

597 sorted_exts = sorted(ext_sizes.items(), key=lambda x: -x[1])[:8]

598 colors = {

599 '.js': '#f7df1e', '.ts': '#3178c6', '.py': '#3776ab', '.go': '#00add8',

600 '.rs': '#dea584', '.rb': '#cc342d', '.css': '#264de4', '.html': '#e34c26',

601 '.json': '#6b7280', '.md': '#083fa1', '.yaml': '#cb171e', '.yml': '#cb171e',

602 '.mdx': '#083fa1', '.tsx': '#3178c6', '.jsx': '#61dafb', '.sh': '#4eaa25',

603 }

604 lang_bars = "".join(

605 f'<div class="bar-row"><span class="bar-label">{ext}</span>'

606 f'<div class="bar" style="width:{(size/total_size)*100}%;background:{colors.get(ext,"#6b7280")}"></div>'

607 f'<span class="bar-pct">{(size/total_size)*100:.1f}%</span></div>'

608 for ext, size in sorted_exts

609 )

610 def fmt(b):

611 if b < 1024: return f"{b} B"

612 if b < 1048576: return f"{b/1024:.1f} KB"

613 return f"{b/1048576:.1f} MB"

614 

615 html = f'''<!DOCTYPE html>

616<html><head>

617 <meta charset="utf-8"><title>Codebase Explorer</title>

618 <style>

619 body {{ font: 14px/1.5 system-ui, sans-serif; margin: 0; background: #1a1a2e; color: #eee; }}

620 .container {{ display: flex; height: 100vh; }}

621 .sidebar {{ width: 280px; background: #252542; padding: 20px; border-right: 1px solid #3d3d5c; overflow-y: auto; flex-shrink: 0; }}

622 .main {{ flex: 1; padding: 20px; overflow-y: auto; }}

623 h1 {{ margin: 0 0 10px 0; font-size: 18px; }}

624 h2 {{ margin: 20px 0 10px 0; font-size: 14px; color: #888; text-transform: uppercase; }}

625 .stat {{ display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid #3d3d5c; }}

626 .stat-value {{ font-weight: bold; }}

627 .bar-row {{ display: flex; align-items: center; margin: 6px 0; }}

628 .bar-label {{ width: 55px; font-size: 12px; color: #aaa; }}

629 .bar {{ height: 18px; border-radius: 3px; }}

630 .bar-pct {{ margin-left: 8px; font-size: 12px; color: #666; }}

631 .tree {{ list-style: none; padding-left: 20px; }}

632 details {{ cursor: pointer; }}

633 summary {{ padding: 4px 8px; border-radius: 4px; }}

634 summary:hover {{ background: #2d2d44; }}

635 .folder {{ color: #ffd700; }}

636 .file {{ display: flex; align-items: center; padding: 4px 8px; border-radius: 4px; }}

637 .file:hover {{ background: #2d2d44; }}

638 .size {{ color: #888; margin-left: auto; font-size: 12px; }}

639 .dot {{ width: 8px; height: 8px; border-radius: 50%; margin-right: 8px; }}

640 </style>

641</head><body>

642 <div class="container">

643 <div class="sidebar">

644 <h1>📊 Summary</h1>

645 <div class="stat"><span>Files</span><span class="stat-value">{stats["files"]:,}</span></div>

646 <div class="stat"><span>Directories</span><span class="stat-value">{stats["dirs"]:,}</span></div>

647 <div class="stat"><span>Total size</span><span class="stat-value">{fmt(data["size"])}</span></div>

648 <div class="stat"><span>File types</span><span class="stat-value">{len(stats["extensions"])}</span></div>

649 <h2>By file type</h2>

650 {lang_bars}

651 </div>

652 <div class="main">

653 <h1>📁 {data["name"]}</h1>

654 <ul class="tree" id="root"></ul>

655 </div>

656 </div>

657 <script>

658 const data = {json.dumps(data)};

659 const colors = {json.dumps(colors)};

660 function fmt(b) {{ if (b < 1024) return b + ' B'; if (b < 1048576) return (b/1024).toFixed(1) + ' KB'; return (b/1048576).toFixed(1) + ' MB'; }}

661 function render(node, parent) {{

662 if (node.children) {{

663 const det = document.createElement('details');

664 det.open = parent === document.getElementById('root');

665 det.innerHTML = `<summary><span class="folder">📁 ${{node.name}}</span><span class="size">${{fmt(node.size)}}</span></summary>`;

666 const ul = document.createElement('ul'); ul.className = 'tree';

667 node.children.sort((a,b) => (b.children?1:0)-(a.children?1:0) || a.name.localeCompare(b.name));

668 node.children.forEach(c => render(c, ul));

669 det.appendChild(ul);

670 const li = document.createElement('li'); li.appendChild(det); parent.appendChild(li);

671 }} else {{

672 const li = document.createElement('li'); li.className = 'file';

673 li.innerHTML = `<span class="dot" style="background:${{colors[node.ext]||'#6b7280'}}"></span>${{node.name}}<span class="size">${{fmt(node.size)}}</span>`;

674 parent.appendChild(li);

675 }}

676 }}

677 data.children.forEach(c => render(c, document.getElementById('root')));

678 </script>

679</body></html>'''

680 output.write_text(html)

681 

682if __name__ == '__main__':

683 target = Path(sys.argv[1] if len(sys.argv) > 1 else '.').resolve()

684 stats = {"files": 0, "dirs": 0, "extensions": Counter(), "ext_sizes": Counter()}

685 data = scan(target, stats)

686 out = Path('codebase-map.html')

687 generate_html(data, stats, out)

688 print(f'Generated {out.absolute()}')

689 webbrowser.open(f'file://{out.absolute()}')

690```

691 

692Um zu testen, öffnen Sie Claude Code in einem beliebigen Projekt und fragen Sie „Visualize this codebase." Claude führt das Script aus, generiert `codebase-map.html` und öffnet es in Ihrem Browser.

693 

694Dieses Muster funktioniert für jede visuelle Ausgabe: Abhängigkeitsgraphen, Test-Coverage-Berichte, API-Dokumentation oder Datenbankschema-Visualisierungen. Das gebündelte Script erledigt die schwere Arbeit, während Claude die Orchestrierung übernimmt.

695 

696## Fehlerbehebung

697 

698### Skill wird nicht ausgelöst

699 

700Wenn Claude Ihren Skill nicht verwendet, wenn erwartet:

701 

7021. Überprüfen Sie, ob die Beschreibung Schlüsselwörter enthält, die Benutzer natürlicherweise sagen würden

7032. Überprüfen Sie, ob der Skill in `What skills are available?` angezeigt wird

7043. Versuchen Sie, Ihre Anfrage umzuformulieren, um die Beschreibung besser zu treffen

7054. Rufen Sie ihn direkt mit `/skill-name` auf, wenn der Skill vom Benutzer aufgerufen werden kann

706 

707### Skill wird zu oft ausgelöst

708 

709Wenn Claude Ihren Skill verwendet, wenn Sie das nicht möchten:

710 

7111. Machen Sie die Beschreibung spezifischer

7122. Fügen Sie `disable-model-invocation: true` hinzu, wenn Sie nur manuelle Aufrufe möchten

713 

714### Skill-Beschreibungen werden gekürzt

715 

716Skill-Beschreibungen werden in den Kontext geladen, damit Claude weiß, was verfügbar ist. Alle Skill-Namen sind immer enthalten, aber wenn Sie viele Skills haben, werden Beschreibungen gekürzt, um in das Zeichenbudget zu passen, was die Schlüsselwörter entfernen kann, die Claude benötigt, um Ihre Anfrage zu erfüllen. Das Budget skaliert dynamisch bei 1% des Kontextfensters, mit einem Fallback von 8.000 Zeichen.

717 

718Um das Limit zu erhöhen, setzen Sie die Umgebungsvariable `SLASH_COMMAND_TOOL_CHAR_BUDGET`. Oder kürzen Sie Beschreibungen an der Quelle: Front-load den wichtigsten Anwendungsfall, da jeder Eintrag unabhängig vom Budget auf 1.536 Zeichen begrenzt ist.

719 

720## Verwandte Ressourcen

721 

722* **[Debuggen Sie Ihre Konfiguration](/de/debug-your-config)**: Diagnostizieren Sie, warum ein Skill nicht angezeigt oder ausgelöst wird

723* **[Subagenten](/de/sub-agents)**: Delegieren Sie Aufgaben an spezialisierte Agenten

724* **[Plugins](/de/plugins)**: Packen und verteilen Sie Skills mit anderen Erweiterungen

725* **[Hooks](/de/hooks)**: Automatisieren Sie Workflows um Tool-Ereignisse

726* **[Memory](/de/memory)**: Verwalten Sie CLAUDE.md-Dateien für persistenten Kontext

727* **[Befehle](/de/commands)**: Referenz für integrierte Befehle und gebündelte Skills

728* **[Berechtigungen](/de/permissions)**: Steuern Sie Tool- und Skill-Zugriff

slack.md +210 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code in Slack

6 

7> Delegieren Sie Codierungsaufgaben direkt aus Ihrem Slack-Arbeitsbereich

8 

9Claude Code in Slack bringt die Leistung von Claude Code direkt in Ihren Slack-Arbeitsbereich. Wenn Sie `@Claude` mit einer Codierungsaufgabe erwähnen, erkennt Claude automatisch die Absicht und erstellt eine Claude Code-Sitzung im Web, sodass Sie Entwicklungsarbeiten delegieren können, ohne Ihre Team-Gespräche zu verlassen.

10 

11Diese Integration basiert auf der bestehenden Claude for Slack-App, fügt aber intelligentes Routing zu Claude Code im Web für codierungsbezogene Anfragen hinzu.

12 

13## Anwendungsfälle

14 

15* **Fehleruntersuchung und -behebung**: Bitten Sie Claude, Fehler zu untersuchen und zu beheben, sobald sie in Slack-Kanälen gemeldet werden.

16* **Schnelle Code-Reviews und Änderungen**: Lassen Sie Claude kleine Funktionen implementieren oder Code basierend auf Team-Feedback umgestalten.

17* **Kollaboratives Debugging**: Wenn Team-Diskussionen wichtigen Kontext bieten (z. B. Fehlerreproduzierungen oder Benutzerberichte), kann Claude diese Informationen nutzen, um seinen Debugging-Ansatz zu informieren.

18* **Parallele Aufgabenausführung**: Starten Sie Codierungsaufgaben in Slack, während Sie andere Arbeiten fortsetzen, und erhalten Sie Benachrichtigungen nach Abschluss.

19 

20## Voraussetzungen

21 

22Bevor Sie Claude Code in Slack verwenden, stellen Sie sicher, dass Sie über Folgendes verfügen:

23 

24| Anforderung | Details |

25| :---------------------- | :----------------------------------------------------------------------------------- |

26| Claude Plan | Pro, Max, Team oder Enterprise mit Claude Code-Zugriff (Premium-Plätze) |

27| Claude Code im Web | Der Zugriff auf [Claude Code im Web](/de/claude-code-on-the-web) muss aktiviert sein |

28| GitHub-Konto | Mit Claude Code im Web verbunden mit mindestens einem authentifizierten Repository |

29| Slack-Authentifizierung | Ihr Slack-Konto ist über die Claude-App mit Ihrem Claude-Konto verknüpft |

30 

31## Einrichten von Claude Code in Slack

32 

33<Steps>

34 <Step title="Installieren Sie die Claude-App in Slack">

35 Ein Workspace-Administrator muss die Claude-App aus dem Slack App Marketplace installieren. Besuchen Sie den [Slack App Marketplace](https://slack.com/marketplace/A08SF47R6P4) und klicken Sie auf „Zu Slack hinzufügen", um den Installationsprozess zu starten.

36 </Step>

37 

38 <Step title="Verbinden Sie Ihr Claude-Konto">

39 Nach der Installation der App authentifizieren Sie Ihr individuelles Claude-Konto:

40 

41 1. Öffnen Sie die Claude-App in Slack, indem Sie auf „Claude" in Ihrem Apps-Bereich klicken

42 2. Navigieren Sie zur Registerkarte „App Home"

43 3. Klicken Sie auf „Verbinden", um Ihr Slack-Konto mit Ihrem Claude-Konto zu verknüpfen

44 4. Schließen Sie den Authentifizierungsfluss in Ihrem Browser ab

45 </Step>

46 

47 <Step title="Konfigurieren Sie Claude Code im Web">

48 Stellen Sie sicher, dass Ihr Claude Code im Web ordnungsgemäß konfiguriert ist:

49 

50 * Besuchen Sie [claude.ai/code](https://claude.ai/code) und melden Sie sich mit dem gleichen Konto an, das Sie mit Slack verbunden haben

51 * Verbinden Sie Ihr GitHub-Konto, falls noch nicht geschehen

52 * Authentifizieren Sie mindestens ein Repository, mit dem Claude arbeiten soll

53 </Step>

54 

55 <Step title="Wählen Sie Ihren Routing-Modus">

56 Nach dem Verbinden Ihrer Konten konfigurieren Sie, wie Claude Ihre Nachrichten in Slack verarbeitet. Navigieren Sie zur Claude App Home in Slack, um die Einstellung **Routing Mode** zu finden.

57 

58 | Modus | Verhalten |

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

60 | **Nur Code** | Claude leitet alle @mentions zu Claude Code-Sitzungen weiter. Am besten für Teams, die Claude in Slack ausschließlich für Entwicklungsaufgaben verwenden. |

61 | **Code + Chat** | Claude analysiert jede Nachricht und leitet intelligent zwischen Claude Code (für Codierungsaufgaben) und Claude Chat (für Schreiben, Analyse und allgemeine Fragen) weiter. Am besten für Teams, die einen einzigen @Claude-Einstiegspunkt für alle Arten von Arbeiten möchten. |

62 

63 <Note>

64 Im Code + Chat-Modus können Sie, wenn Claude eine Nachricht zu Chat leitet, aber Sie wollten eine Codierungssitzung, auf „Als Code erneut versuchen" klicken, um stattdessen eine Claude Code-Sitzung zu erstellen. Wenn es zu Code weitergeleitet wird, aber Sie wollten eine Chat-Sitzung, können Sie diese Option in diesem Thread wählen.

65 </Note>

66 </Step>

67</Steps>

68 

69## Wie es funktioniert

70 

71### Automatische Erkennung

72 

73Wenn Sie @Claude in einem Slack-Kanal oder Thread erwähnen, analysiert Claude automatisch Ihre Nachricht, um festzustellen, ob es sich um eine Codierungsaufgabe handelt. Wenn Claude Codierungsabsicht erkennt, leitet es Ihre Anfrage stattdessen zu Claude Code im Web weiter, anstatt als regulärer Chat-Assistent zu antworten.

74 

75Sie können Claude auch explizit anweisen, eine Anfrage als Codierungsaufgabe zu behandeln, auch wenn es diese nicht automatisch erkennt.

76 

77<Note>

78 Claude Code in Slack funktioniert nur in Kanälen (öffentlich oder privat). Es funktioniert nicht in direkten Nachrichten (DMs).

79</Note>

80 

81### Kontexterfassung

82 

83**Aus Threads**: Wenn Sie Claude in einem Thread @erwähnen, sammelt es Kontext aus allen Nachrichten in diesem Thread, um das vollständige Gespräch zu verstehen.

84 

85**Aus Kanälen**: Wenn es direkt in einem Kanal erwähnt wird, schaut Claude sich aktuelle Kanalnachrichten auf relevanten Kontext an.

86 

87Dieser Kontext hilft Claude, das Problem zu verstehen, das entsprechende Repository auszuwählen und seinen Ansatz zur Aufgabe zu informieren.

88 

89<Warning>

90 Wenn @Claude in Slack aufgerufen wird, erhält Claude Zugriff auf den Gesprächskontext, um Ihre Anfrage besser zu verstehen. Claude kann Anweisungen aus anderen Nachrichten im Kontext befolgen, daher sollten Benutzer sicherstellen, dass sie Claude nur in vertrauenswürdigen Slack-Gesprächen verwenden.

91</Warning>

92 

93### Sitzungsfluss

94 

951. **Initiierung**: Sie @erwähnen Claude mit einer Codierungsanfrage

962. **Erkennung**: Claude analysiert Ihre Nachricht und erkennt Codierungsabsicht

973. **Sitzungserstellung**: Eine neue Claude Code-Sitzung wird auf claude.ai/code erstellt

984. **Fortschritts-Updates**: Claude veröffentlicht Status-Updates in Ihrem Slack-Thread, während die Arbeit fortschreitet

995. **Abschluss**: Nach Abschluss @erwähnt Claude Sie mit einer Zusammenfassung und Aktionsschaltflächen

1006. **Überprüfung**: Klicken Sie auf „Sitzung anzeigen", um das vollständige Transkript zu sehen, oder auf „PR erstellen", um einen Pull Request zu öffnen

101 

102## Benutzeroberflächenelemente

103 

104### App Home

105 

106Die Registerkarte „App Home" zeigt Ihren Verbindungsstatus an und ermöglicht es Ihnen, Ihr Claude-Konto von Slack zu verbinden oder zu trennen.

107 

108### Nachrichtenaktionen

109 

110* **Sitzung anzeigen**: Öffnet die vollständige Claude Code-Sitzung in Ihrem Browser, wo Sie alle durchgeführten Arbeiten sehen, die Sitzung fortsetzen oder zusätzliche Anfragen stellen können.

111* **PR erstellen**: Erstellt einen Pull Request direkt aus den Änderungen der Sitzung.

112* **Als Code erneut versuchen**: Wenn Claude zunächst als Chat-Assistent antwortet, aber Sie wollten eine Codierungssitzung, klicken Sie auf diese Schaltfläche, um die Anfrage als Claude Code-Aufgabe erneut zu versuchen.

113* **Repository ändern**: Ermöglicht es Ihnen, ein anderes Repository auszuwählen, wenn Claude falsch gewählt hat.

114 

115### Repository-Auswahl

116 

117Claude wählt automatisch ein Repository basierend auf dem Kontext aus Ihrem Slack-Gespräch aus. Wenn mehrere Repositories zutreffen könnten, zeigt Claude möglicherweise ein Dropdown-Menü an, mit dem Sie das richtige auswählen können.

118 

119## Zugriff und Berechtigungen

120 

121### Zugriff auf Benutzerebene

122 

123| Zugriffstyp | Anforderung |

124| :-------------------- | :--------------------------------------------------------------------------------- |

125| Claude Code-Sitzungen | Jeder Benutzer führt Sitzungen unter seinem eigenen Claude-Konto aus |

126| Nutzung & Ratenlimits | Sitzungen werden gegen die individuellen Plan-Limits des Benutzers angerechnet |

127| Repository-Zugriff | Benutzer können nur auf Repositories zugreifen, die sie persönlich verbunden haben |

128| Sitzungsverlauf | Sitzungen erscheinen in Ihrem Claude Code-Verlauf auf claude.ai/code |

129 

130### Berechtigungen für Workspace-Administratoren

131 

132Slack-Workspace-Administratoren kontrollieren, ob die Claude-App im Workspace installiert werden kann. Einzelne Benutzer authentifizieren sich dann mit ihren eigenen Claude-Konten, um die Integration zu verwenden.

133 

134## Was wo zugänglich ist

135 

136**In Slack**: Sie sehen Status-Updates, Abschluss-Zusammenfassungen und Aktionsschaltflächen. Das vollständige Transkript wird beibehalten und ist immer zugänglich.

137 

138**Im Web**: Die vollständige Claude Code-Sitzung mit vollständiger Gesprächsverlauf, alle Code-Änderungen, Dateivorgänge und die Möglichkeit, die Sitzung fortzusetzen oder Pull Requests zu erstellen.

139 

140## Best Practices

141 

142### Schreiben effektiver Anfragen

143 

144* **Seien Sie spezifisch**: Geben Sie Dateinamen, Funktionsnamen oder Fehlermeldungen an, wenn relevant.

145* **Geben Sie Kontext**: Erwähnen Sie das Repository oder Projekt, wenn es nicht aus dem Gespräch klar ist.

146* **Definieren Sie Erfolg**: Erklären Sie, wie „fertig" aussieht – sollte Claude Tests schreiben? Dokumentation aktualisieren? Einen PR erstellen?

147* **Verwenden Sie Threads**: Antworten Sie in Threads, wenn Sie über Fehler oder Funktionen diskutieren, damit Claude den vollständigen Kontext sammeln kann.

148 

149### Wann Slack vs. Web verwenden

150 

151**Verwenden Sie Slack, wenn**: Kontext bereits in einer Slack-Diskussion vorhanden ist, Sie eine Aufgabe asynchron starten möchten oder mit Teamkollegen zusammenarbeiten, die Sichtbarkeit benötigen.

152 

153**Verwenden Sie das Web direkt, wenn**: Sie Dateien hochladen müssen, Echtzeit-Interaktion während der Entwicklung möchten oder an längeren, komplexeren Aufgaben arbeiten.

154 

155## Fehlerbehebung

156 

157### Sitzungen starten nicht

158 

1591. Überprüfen Sie, ob Ihr Claude-Konto in der Claude App Home verbunden ist

1602. Überprüfen Sie, ob Sie Claude Code im Web-Zugriff aktiviert haben

1613. Stellen Sie sicher, dass Sie mindestens ein GitHub-Repository mit Claude Code verbunden haben

162 

163### Repository wird nicht angezeigt

164 

1651. Verbinden Sie das Repository in Claude Code im Web unter [claude.ai/code](https://claude.ai/code)

1662. Überprüfen Sie Ihre GitHub-Berechtigungen für dieses Repository

1673. Versuchen Sie, Ihr GitHub-Konto zu trennen und erneut zu verbinden

168 

169### Falsches Repository ausgewählt

170 

1711. Klicken Sie auf die Schaltfläche „Repository ändern", um ein anderes Repository auszuwählen

1722. Geben Sie den Repository-Namen in Ihrer Anfrage an, um eine genauere Auswahl zu erhalten

173 

174### Authentifizierungsfehler

175 

1761. Trennen Sie Ihr Claude-Konto in der App Home und verbinden Sie es erneut

1772. Stellen Sie sicher, dass Sie in Ihrem Browser mit dem richtigen Claude-Konto angemeldet sind

1783. Überprüfen Sie, ob Ihr Claude-Plan Claude Code-Zugriff umfasst

179 

180### Sitzungsablauf

181 

1821. Sitzungen bleiben in Ihrem Claude Code-Verlauf im Web zugänglich

1832. Sie können vergangene Sitzungen von [claude.ai/code](https://claude.ai/code) aus fortsetzen oder referenzieren

184 

185## Aktuelle Einschränkungen

186 

187* **Nur GitHub**: Unterstützt derzeit nur Repositories auf GitHub.

188* **Ein PR gleichzeitig**: Jede Sitzung kann einen Pull Request erstellen.

189* **Ratenlimits gelten**: Sitzungen verwenden die Ratenlimits Ihres individuellen Claude-Plans.

190* **Web-Zugriff erforderlich**: Benutzer müssen Claude Code im Web-Zugriff haben; diejenigen ohne erhalten nur Standard-Claude-Chat-Antworten.

191 

192## Verwandte Ressourcen

193 

194<CardGroup>

195 <Card title="Claude Code im Web" icon="globe" href="/de/claude-code-on-the-web">

196 Erfahren Sie mehr über Claude Code im Web

197 </Card>

198 

199 <Card title="Claude für Slack" icon="slack" href="https://claude.com/claude-and-slack">

200 Allgemeine Claude for Slack-Dokumentation

201 </Card>

202 

203 <Card title="Slack App Marketplace" icon="store" href="https://slack.com/marketplace/A08SF47R6P4">

204 Installieren Sie die Claude-App aus dem Slack Marketplace

205 </Card>

206 

207 <Card title="Claude Help Center" icon="circle-question" href="https://support.claude.com">

208 Erhalten Sie zusätzliche Unterstützung

209 </Card>

210</CardGroup>

statusline.md +1062 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Passen Sie Ihre Statuszeile an

6 

7> Konfigurieren Sie eine benutzerdefinierte Statusleiste zur Überwachung der Kontextfensternutzung, Kosten und Git-Status in Claude Code

8 

9Die Statuszeile ist eine anpassbare Leiste am unteren Rand von Claude Code, die jedes Shell-Skript ausführt, das Sie konfigurieren. Sie empfängt JSON-Sitzungsdaten auf stdin und zeigt alles an, was Ihr Skript ausgibt, und bietet Ihnen eine persistente, auf einen Blick sichtbare Ansicht der Kontextnutzung, Kosten, Git-Status oder alles andere, das Sie verfolgen möchten.

10 

11Statuszeilen sind nützlich, wenn Sie:

12 

13* Die Kontextfensternutzung während der Arbeit überwachen möchten

14* Sitzungskosten verfolgen müssen

15* Über mehrere Sitzungen hinweg arbeiten und diese unterscheiden müssen

16* Git-Branch und Status immer sichtbar haben möchten

17 

18Hier ist ein Beispiel einer [mehrzeiligen Statuszeile](#display-multiple-lines), die Git-Informationen in der ersten Zeile und einen farbcodierten Kontextbalken in der zweiten Zeile anzeigt.

19 

20<Frame>

21 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-multiline.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=60f11387658acc9ff75158ae85f2ac87" alt="Eine mehrzeilige Statuszeile, die Modellname, Verzeichnis, Git-Branch in der ersten Zeile und einen Kontextnutzungs-Fortschrittsbalken mit Kosten und Dauer in der zweiten Zeile anzeigt" width="776" height="212" data-path="images/statusline-multiline.png" />

22</Frame>

23 

24Diese Seite führt Sie durch [das Einrichten einer grundlegenden Statuszeile](#set-up-a-status-line), erklärt [wie die Daten fließen](#how-status-lines-work) von Claude Code zu Ihrem Skript, listet [alle Felder auf, die Sie anzeigen können](#available-data), und bietet [einsatzbereite Beispiele](#examples) für häufige Muster wie Git-Status, Kostenverfolgung und Fortschrittsbalken.

25 

26## Richten Sie eine Statuszeile ein

27 

28Verwenden Sie den [`/statusline` Befehl](#use-the-%2Fstatusline-command), um Claude Code ein Skript für Sie generieren zu lassen, oder [erstellen Sie manuell ein Skript](#manually-configure-a-status-line) und fügen Sie es zu Ihren Einstellungen hinzu.

29 

30### Verwenden Sie den /statusline Befehl

31 

32Der `/statusline` Befehl akzeptiert Anweisungen in natürlicher Sprache, die beschreiben, was Sie angezeigt haben möchten. Claude Code generiert eine Skriptdatei in `~/.claude/` und aktualisiert Ihre Einstellungen automatisch:

33 

34```text theme={null}

35/statusline show model name and context percentage with a progress bar

36```

37 

38### Statuszeile manuell konfigurieren

39 

40Fügen Sie ein `statusLine` Feld zu Ihren Benutzereinstellungen (`~/.claude/settings.json`, wobei `~` Ihr Heimatverzeichnis ist) oder [Projekteinstellungen](/de/settings#settings-files) hinzu. Setzen Sie `type` auf `"command"` und verweisen Sie `command` auf einen Skriptpfad oder einen Inline-Shell-Befehl. Eine vollständige Anleitung zum Erstellen eines Skripts finden Sie unter [Erstellen Sie eine Statuszeile Schritt für Schritt](#build-a-status-line-step-by-step).

41 

42```json theme={null}

43{

44 "statusLine": {

45 "type": "command",

46 "command": "~/.claude/statusline.sh",

47 "padding": 2

48 }

49}

50```

51 

52Das `command` Feld wird in einer Shell ausgeführt, sodass Sie auch Inline-Befehle anstelle einer Skriptdatei verwenden können. Dieses Beispiel verwendet `jq`, um die JSON-Eingabe zu analysieren und den Modellnamen und den Kontextprozentsatz anzuzeigen:

53 

54```json theme={null}

55{

56 "statusLine": {

57 "type": "command",

58 "command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'"

59 }

60}

61```

62 

63Das optionale `padding` Feld fügt zusätzlichen horizontalen Abstand (in Zeichen) zum Inhalt der Statuszeile hinzu. Standardmäßig `0`. Dieser Abstand wird zusätzlich zum integrierten Abstand der Benutzeroberfläche hinzugefügt, sodass er die relative Einrückung steuert, anstatt den absoluten Abstand vom Terminalrand.

64 

65Das optionale `refreshInterval` Feld führt Ihren Befehl zusätzlich zu den [ereignisgesteuerten Aktualisierungen](#how-status-lines-work) alle N Sekunden erneut aus. Das Minimum ist `1`. Setzen Sie dies, wenn Ihre Statuszeile zeitbasierte Daten wie eine Uhr anzeigt, oder wenn Hintergrund-Subagenten den Git-Status ändern, während die Hauptsitzung untätig ist. Lassen Sie es ungesetzt, um nur bei Ereignissen auszuführen.

66 

67Das optionale `hideVimModeIndicator` Feld unterdrückt den integrierten `-- INSERT --` Text unter der Eingabeaufforderung. Setzen Sie dies auf `true`, wenn Ihr Skript [`vim.mode`](#available-data) selbst rendert, sodass der Modus nicht zweimal angezeigt wird.

68 

69### Deaktivieren Sie die Statuszeile

70 

71Führen Sie `/statusline` aus und bitten Sie es, Ihre Statuszeile zu entfernen oder zu löschen (z. B. `/statusline delete`, `/statusline clear`, `/statusline remove it`). Sie können auch das `statusLine` Feld manuell aus Ihrer settings.json löschen.

72 

73## Erstellen Sie eine Statuszeile Schritt für Schritt

74 

75Diese Anleitung zeigt, was unter der Haube passiert, indem Sie manuell eine Statuszeile erstellen, die das aktuelle Modell, das Arbeitsverzeichnis und den Prozentsatz der Kontextfensternutzung anzeigt.

76 

77<Note>Das Ausführen von [`/statusline`](#use-the-statusline-command) mit einer Beschreibung dessen, was Sie möchten, konfiguriert all dies automatisch für Sie.</Note>

78 

79Diese Beispiele verwenden Bash-Skripte, die auf macOS und Linux funktionieren. Unter Windows finden Sie unter [Windows-Konfiguration](#windows-configuration) PowerShell- und Git Bash-Beispiele.

80 

81<Frame>

82 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-quickstart.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=696445e59ca0059213250651ad23db6b" alt="Eine Statuszeile, die Modellname, Verzeichnis und Kontextprozentsatz anzeigt" width="726" height="164" data-path="images/statusline-quickstart.png" />

83</Frame>

84 

85<Steps>

86 <Step title="Erstellen Sie ein Skript, das JSON liest und Ausgabe druckt">

87 Claude Code sendet JSON-Daten über stdin an Ihr Skript. Dieses Skript verwendet [`jq`](https://jqlang.github.io/jq/), einen Befehlszeilen-JSON-Parser, den Sie möglicherweise installieren müssen, um den Modellnamen, das Verzeichnis und den Kontextprozentsatz zu extrahieren, und druckt dann eine formatierte Zeile.

88 

89 Speichern Sie dies unter `~/.claude/statusline.sh` (wobei `~` Ihr Heimatverzeichnis ist, z. B. `/Users/username` auf macOS oder `/home/username` auf Linux):

90 

91 ```bash theme={null}

92 #!/bin/bash

93 # Read JSON data that Claude Code sends to stdin

94 input=$(cat)

95 

96 # Extract fields using jq

97 MODEL=$(echo "$input" | jq -r '.model.display_name')

98 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

99 # The "// 0" provides a fallback if the field is null

100 PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)

101 

102 # Output the status line - ${DIR##*/} extracts just the folder name

103 echo "[$MODEL] 📁 ${DIR##*/} | ${PCT}% context"

104 ```

105 </Step>

106 

107 <Step title="Machen Sie es ausführbar">

108 Markieren Sie das Skript als ausführbar, damit Ihre Shell es ausführen kann:

109 

110 ```bash theme={null}

111 chmod +x ~/.claude/statusline.sh

112 ```

113 </Step>

114 

115 <Step title="Zu Einstellungen hinzufügen">

116 Teilen Sie Claude Code mit, dass es Ihr Skript als Statuszeile ausführen soll. Fügen Sie diese Konfiguration zu `~/.claude/settings.json` hinzu, die `type` auf `"command"` setzt (was bedeutet „diesen Shell-Befehl ausführen") und `command` auf Ihr Skript verweist:

117 

118 ```json theme={null}

119 {

120 "statusLine": {

121 "type": "command",

122 "command": "~/.claude/statusline.sh"

123 }

124 }

125 ```

126 

127 Ihre Statuszeile wird am unteren Rand der Benutzeroberfläche angezeigt. Einstellungen werden automatisch neu geladen, aber Änderungen werden erst bei Ihrer nächsten Interaktion mit Claude Code angezeigt.

128 </Step>

129</Steps>

130 

131## Wie Statuszeilen funktionieren

132 

133Claude Code führt Ihr Skript aus und leitet [JSON-Sitzungsdaten](#available-data) über stdin an es weiter. Ihr Skript liest die JSON, extrahiert das, was es benötigt, und druckt Text auf stdout. Claude Code zeigt alles an, was Ihr Skript druckt.

134 

135**Wann es aktualisiert wird**

136 

137Ihr Skript wird nach jeder neuen Assistentnachricht ausgeführt, wenn sich der Berechtigungsmodus ändert oder wenn der Vim-Modus umgeschaltet wird. Aktualisierungen werden mit 300 ms entprellt, was bedeutet, dass schnelle Änderungen zusammengefasst werden und Ihr Skript einmal ausgeführt wird, wenn sich die Dinge beruhigen. Wenn eine neue Aktualisierung ausgelöst wird, während Ihr Skript noch läuft, wird die laufende Ausführung abgebrochen. Wenn Sie Ihr Skript bearbeiten, werden die Änderungen erst bei Ihrer nächsten Interaktion mit Claude Code angezeigt, die eine Aktualisierung auslöst.

138 

139Diese Trigger können ruhig werden, wenn die Hauptsitzung untätig ist, z. B. während ein Koordinator auf Hintergrund-Subagenten wartet. Um zeitbasierte oder extern bezogene Segmente während untätiger Perioden aktuell zu halten, setzen Sie [`refreshInterval`](#manually-configure-a-status-line), um den Befehl auch auf einem festen Timer erneut auszuführen.

140 

141**Was Ihr Skript ausgeben kann**

142 

143* **Mehrere Zeilen**: Jede `echo` oder `print` Anweisung wird als separate Zeile angezeigt. Siehe das [mehrzeilige Beispiel](#display-multiple-lines).

144* **Farben**: Verwenden Sie [ANSI-Escape-Codes](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) wie `\033[32m` für Grün (Terminal muss diese unterstützen). Siehe das [Git-Status-Beispiel](#git-status-with-colors).

145* **Links**: Verwenden Sie [OSC 8 Escape-Sequenzen](https://en.wikipedia.org/wiki/ANSI_escape_code#OSC), um Text anklickbar zu machen (Cmd+Klick auf macOS, Strg+Klick auf Windows/Linux). Erfordert ein Terminal, das Hyperlinks wie iTerm2, Kitty oder WezTerm unterstützt. Siehe das [anklickbare Links-Beispiel](#clickable-links).

146 

147<Note>Die Statuszeile wird lokal ausgeführt und verbraucht keine API-Token. Sie wird vorübergehend während bestimmter UI-Interaktionen ausgeblendet, einschließlich Autovervollständigungsvorschlägen, dem Hilfemenü und Berechtigungsaufforderungen.</Note>

148 

149## Verfügbare Daten

150 

151Claude Code sendet die folgenden JSON-Felder über stdin an Ihr Skript:

152 

153| Feld | Beschreibung |

154| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

155| `model.id`, `model.display_name` | Aktuelle Modellkennung und Anzeigename |

156| `cwd`, `workspace.current_dir` | Aktuelles Arbeitsverzeichnis. Beide Felder enthalten denselben Wert; `workspace.current_dir` wird für Konsistenz mit `workspace.project_dir` bevorzugt. |

157| `workspace.project_dir` | Verzeichnis, in dem Claude Code gestartet wurde, das sich von `cwd` unterscheiden kann, wenn sich das Arbeitsverzeichnis während einer Sitzung ändert |

158| `workspace.added_dirs` | Zusätzliche Verzeichnisse, die über `/add-dir` oder `--add-dir` hinzugefügt wurden. Leeres Array, wenn keine hinzugefügt wurden |

159| `workspace.git_worktree` | Git-Worktree-Name, wenn sich das aktuelle Verzeichnis in einem verknüpften Worktree befindet, der mit `git worktree add` erstellt wurde. Fehlt im Haupt-Worktree. Wird für jeden Git-Worktree gefüllt, im Gegensatz zu `worktree.*`, das nur auf `--worktree` Sitzungen zutrifft |

160| `cost.total_cost_usd` | Geschätzte Sitzungskosten in USD, berechnet auf der Client-Seite. Kann sich von Ihrer tatsächlichen Rechnung unterscheiden |

161| `cost.total_duration_ms` | Gesamtverstrichene Zeit seit Sitzungsbeginn in Millisekunden |

162| `cost.total_api_duration_ms` | Gesamtzeit, die auf API-Antworten wartet, in Millisekunden |

163| `cost.total_lines_added`, `cost.total_lines_removed` | Geänderte Codezeilen |

164| `context_window.total_input_tokens`, `context_window.total_output_tokens` | Kumulative Token-Zählungen über die Sitzung |

165| `context_window.context_window_size` | Maximale Kontextfenstergröße in Token. Standardmäßig 200.000 oder 1.000.000 für Modelle mit erweitertem Kontext. |

166| `context_window.used_percentage` | Vorberechneter Prozentsatz der Kontextfensternutzung |

167| `context_window.remaining_percentage` | Vorberechneter Prozentsatz des verbleibenden Kontextfensters |

168| `context_window.current_usage` | Token-Zählungen aus dem letzten API-Aufruf, beschrieben in [Kontextfenster-Felder](#context-window-fields) |

169| `exceeds_200k_tokens` | Ob die Gesamttoken-Zählung (Eingabe-, Cache- und Ausgabe-Token kombiniert) aus der letzten API-Antwort 200k überschreitet. Dies ist ein fester Schwellenwert unabhängig von der tatsächlichen Kontextfenstergröße. |

170| `effort.level` | Aktueller Reasoning-Aufwand (`low`, `medium`, `high`, `xhigh` oder `max`). Spiegelt den Live-Sitzungswert wider, einschließlich Änderungen von `/effort` während der Sitzung. Fehlt, wenn das aktuelle Modell den Effort-Parameter nicht unterstützt |

171| `thinking.enabled` | Ob erweitertes Denken für die Sitzung aktiviert ist |

172| `rate_limits.five_hour.used_percentage`, `rate_limits.seven_day.used_percentage` | Prozentsatz des 5-Stunden- oder 7-Tage-Ratenlimits verbraucht, von 0 bis 100 |

173| `rate_limits.five_hour.resets_at`, `rate_limits.seven_day.resets_at` | Unix-Epochensekunden, wenn das 5-Stunden- oder 7-Tage-Ratenlimit-Fenster zurückgesetzt wird |

174| `session_id` | Eindeutige Sitzungskennung |

175| `session_name` | Benutzerdefinierter Sitzungsname, der mit dem `--name` Flag oder `/rename` gesetzt wurde. Fehlt, wenn kein benutzerdefinierter Name gesetzt wurde |

176| `transcript_path` | Pfad zur Gesprächstranskriptdatei |

177| `version` | Claude Code-Version |

178| `output_style.name` | Name des aktuellen Ausgabestils |

179| `vim.mode` | Aktueller Vim-Modus (`NORMAL`, `INSERT`, `VISUAL` oder `VISUAL LINE`), wenn [Vim-Modus](/de/interactive-mode#vim-editor-mode) aktiviert ist |

180| `agent.name` | Agent-Name bei Ausführung mit dem `--agent` Flag oder konfigurierter Agent-Einstellung |

181| `worktree.name` | Name des aktiven Worktree. Nur während `--worktree` Sitzungen vorhanden |

182| `worktree.path` | Absoluter Pfad zum Worktree-Verzeichnis |

183| `worktree.branch` | Git-Branch-Name für den Worktree (z. B. `"worktree-my-feature"`). Fehlt bei Hook-basierten Worktrees |

184| `worktree.original_cwd` | Das Verzeichnis, in dem Claude sich befand, bevor es den Worktree betrat |

185| `worktree.original_branch` | Git-Branch, der vor dem Betreten des Worktree ausgecheckt wurde. Fehlt bei Hook-basierten Worktrees |

186 

187<Accordion title="Vollständiges JSON-Schema">

188 Ihr Statuszeilen-Befehl empfängt diese JSON-Struktur über stdin:

189 

190 ```json theme={null}

191 {

192 "cwd": "/current/working/directory",

193 "session_id": "abc123...",

194 "session_name": "my-session",

195 "transcript_path": "/path/to/transcript.jsonl",

196 "model": {

197 "id": "claude-opus-4-7",

198 "display_name": "Opus"

199 },

200 "workspace": {

201 "current_dir": "/current/working/directory",

202 "project_dir": "/original/project/directory",

203 "added_dirs": [],

204 "git_worktree": "feature-xyz"

205 },

206 "version": "2.1.90",

207 "output_style": {

208 "name": "default"

209 },

210 "cost": {

211 "total_cost_usd": 0.01234,

212 "total_duration_ms": 45000,

213 "total_api_duration_ms": 2300,

214 "total_lines_added": 156,

215 "total_lines_removed": 23

216 },

217 "context_window": {

218 "total_input_tokens": 15234,

219 "total_output_tokens": 4521,

220 "context_window_size": 200000,

221 "used_percentage": 8,

222 "remaining_percentage": 92,

223 "current_usage": {

224 "input_tokens": 8500,

225 "output_tokens": 1200,

226 "cache_creation_input_tokens": 5000,

227 "cache_read_input_tokens": 2000

228 }

229 },

230 "exceeds_200k_tokens": false,

231 "effort": {

232 "level": "high"

233 },

234 "thinking": {

235 "enabled": true

236 },

237 "rate_limits": {

238 "five_hour": {

239 "used_percentage": 23.5,

240 "resets_at": 1738425600

241 },

242 "seven_day": {

243 "used_percentage": 41.2,

244 "resets_at": 1738857600

245 }

246 },

247 "vim": {

248 "mode": "NORMAL"

249 },

250 "agent": {

251 "name": "security-reviewer"

252 },

253 "worktree": {

254 "name": "my-feature",

255 "path": "/path/to/.claude/worktrees/my-feature",

256 "branch": "worktree-my-feature",

257 "original_cwd": "/path/to/project",

258 "original_branch": "main"

259 }

260 }

261 ```

262 

263 **Felder, die möglicherweise fehlen** (nicht in JSON vorhanden):

264 

265 * `session_name`: erscheint nur, wenn ein benutzerdefinierter Name mit `--name` oder `/rename` gesetzt wurde

266 * `workspace.git_worktree`: erscheint nur, wenn sich das aktuelle Verzeichnis in einem verknüpften Git-Worktree befindet

267 * `effort`: erscheint nur, wenn das aktuelle Modell den Reasoning-Effort-Parameter unterstützt

268 * `vim`: erscheint nur, wenn Vim-Modus aktiviert ist

269 * `agent`: erscheint nur bei Ausführung mit dem `--agent` Flag oder konfigurierter Agent-Einstellung

270 * `worktree`: erscheint nur während `--worktree` Sitzungen. Wenn vorhanden, können `branch` und `original_branch` auch bei Hook-basierten Worktrees fehlen

271 * `rate_limits`: erscheint nur für Claude.ai-Abonnenten (Pro/Max) nach der ersten API-Antwort in der Sitzung. Jedes Fenster (`five_hour`, `seven_day`) kann unabhängig fehlen. Verwenden Sie `jq -r '.rate_limits.five_hour.used_percentage // empty'`, um Abwesenheit elegant zu handhaben.

272 

273 **Felder, die `null` sein können**:

274 

275 * `context_window.current_usage`: `null` vor dem ersten API-Aufruf in einer Sitzung

276 * `context_window.used_percentage`, `context_window.remaining_percentage`: können früh in der Sitzung `null` sein

277 

278 Behandeln Sie fehlende Felder mit bedingtem Zugriff und Null-Werte mit Fallback-Standardwerten in Ihren Skripten.

279</Accordion>

280 

281### Kontextfenster-Felder

282 

283Das `context_window` Objekt bietet zwei Möglichkeiten, die Kontextnutzung zu verfolgen:

284 

285* **Kumulative Summen** (`total_input_tokens`, `total_output_tokens`): Summe aller Token über die gesamte Sitzung, nützlich zur Verfolgung des Gesamtverbrauchs

286* **Aktuelle Nutzung** (`current_usage`): Token-Zählungen aus dem letzten API-Aufruf, verwenden Sie dies für einen genauen Kontextprozentsatz, da er den tatsächlichen Kontextzustand widerspiegelt

287 

288Das `current_usage` Objekt enthält:

289 

290* `input_tokens`: Eingabe-Token im aktuellen Kontext

291* `output_tokens`: generierte Ausgabe-Token

292* `cache_creation_input_tokens`: Token, die in den Cache geschrieben wurden

293* `cache_read_input_tokens`: Token, die aus dem Cache gelesen wurden

294 

295Das `used_percentage` Feld wird nur aus Eingabe-Token berechnet: `input_tokens + cache_creation_input_tokens + cache_read_input_tokens`. Es enthält keine `output_tokens`.

296 

297Wenn Sie den Kontextprozentsatz manuell aus `current_usage` berechnen, verwenden Sie die gleiche Eingabe-only-Formel, um `used_percentage` zu entsprechen.

298 

299Das `current_usage` Objekt ist `null` vor dem ersten API-Aufruf in einer Sitzung.

300 

301## Beispiele

302 

303Diese Beispiele zeigen häufige Statuszeilen-Muster. Um ein Beispiel zu verwenden:

304 

3051. Speichern Sie das Skript in einer Datei wie `~/.claude/statusline.sh` (oder `.py`/`.js`)

3062. Machen Sie es ausführbar: `chmod +x ~/.claude/statusline.sh`

3073. Fügen Sie den Pfad zu Ihren [Einstellungen](#manually-configure-a-status-line) hinzu

308 

309Die Bash-Beispiele verwenden [`jq`](https://jqlang.github.io/jq/) zum Analysieren von JSON. Python und Node.js haben integriertes JSON-Parsing.

310 

311### Kontextfensternutzung

312 

313Zeigen Sie das aktuelle Modell und die Kontextfensternutzung mit einem visuellen Fortschrittsbalken an. Jedes Skript liest JSON von stdin, extrahiert das `used_percentage` Feld und erstellt einen 10-Zeichen-Balken, wobei gefüllte Blöcke (▓) die Nutzung darstellen:

314 

315<Frame>

316 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-context-window-usage.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=15b58ab3602f036939145dde3165c6f7" alt="Eine Statuszeile, die Modellname und einen Fortschrittsbalken mit Prozentsatz anzeigt" width="448" height="152" data-path="images/statusline-context-window-usage.png" />

317</Frame>

318 

319<CodeGroup>

320 ```bash Bash theme={null}

321 #!/bin/bash

322 # Read all of stdin into a variable

323 input=$(cat)

324 

325 # Extract fields with jq, "// 0" provides fallback for null

326 MODEL=$(echo "$input" | jq -r '.model.display_name')

327 PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)

328 

329 # Build progress bar: printf -v creates a run of spaces, then

330 # ${var// /▓} replaces each space with a block character

331 BAR_WIDTH=10

332 FILLED=$((PCT * BAR_WIDTH / 100))

333 EMPTY=$((BAR_WIDTH - FILLED))

334 BAR=""

335 [ "$FILLED" -gt 0 ] && printf -v FILL "%${FILLED}s" && BAR="${FILL// /▓}"

336 [ "$EMPTY" -gt 0 ] && printf -v PAD "%${EMPTY}s" && BAR="${BAR}${PAD// /░}"

337 

338 echo "[$MODEL] $BAR $PCT%"

339 ```

340 

341 ```python Python theme={null}

342 #!/usr/bin/env python3

343 import json, sys

344 

345 # json.load reads and parses stdin in one step

346 data = json.load(sys.stdin)

347 model = data['model']['display_name']

348 # "or 0" handles null values

349 pct = int(data.get('context_window', {}).get('used_percentage', 0) or 0)

350 

351 # String multiplication builds the bar

352 filled = pct * 10 // 100

353 bar = '▓' * filled + '░' * (10 - filled)

354 

355 print(f"[{model}] {bar} {pct}%")

356 ```

357 

358 ```javascript Node.js theme={null}

359 #!/usr/bin/env node

360 // Node.js reads stdin asynchronously with events

361 let input = '';

362 process.stdin.on('data', chunk => input += chunk);

363 process.stdin.on('end', () => {

364 const data = JSON.parse(input);

365 const model = data.model.display_name;

366 // Optional chaining (?.) safely handles null fields

367 const pct = Math.floor(data.context_window?.used_percentage || 0);

368 

369 // String.repeat() builds the bar

370 const filled = Math.floor(pct * 10 / 100);

371 const bar = '▓'.repeat(filled) + '░'.repeat(10 - filled);

372 

373 console.log(`[${model}] ${bar} ${pct}%`);

374 });

375 ```

376</CodeGroup>

377 

378### Git-Status mit Farben

379 

380Zeigen Sie Git-Branch mit farbcodierten Indikatoren für bereitgestellte und geänderte Dateien an. Dieses Skript verwendet [ANSI-Escape-Codes](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) für Terminalfarben: `\033[32m` ist Grün, `\033[33m` ist Gelb und `\033[0m` setzt auf Standard zurück.

381 

382<Frame>

383 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-git-context.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=e656f34f90d1d9a1d0e220988914345f" alt="Eine Statuszeile, die Modell, Verzeichnis, Git-Branch und farbcodierte Indikatoren für bereitgestellte und geänderte Dateien anzeigt" width="742" height="178" data-path="images/statusline-git-context.png" />

384</Frame>

385 

386Jedes Skript prüft, ob das aktuelle Verzeichnis ein Git-Repository ist, zählt bereitgestellte und geänderte Dateien und zeigt farbcodierte Indikatoren an:

387 

388<CodeGroup>

389 ```bash Bash theme={null}

390 #!/bin/bash

391 input=$(cat)

392 

393 MODEL=$(echo "$input" | jq -r '.model.display_name')

394 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

395 

396 GREEN='\033[32m'

397 YELLOW='\033[33m'

398 RESET='\033[0m'

399 

400 if git rev-parse --git-dir > /dev/null 2>&1; then

401 BRANCH=$(git branch --show-current 2>/dev/null)

402 STAGED=$(git diff --cached --numstat 2>/dev/null | wc -l | tr -d ' ')

403 MODIFIED=$(git diff --numstat 2>/dev/null | wc -l | tr -d ' ')

404 

405 GIT_STATUS=""

406 [ "$STAGED" -gt 0 ] && GIT_STATUS="${GREEN}+${STAGED}${RESET}"

407 [ "$MODIFIED" -gt 0 ] && GIT_STATUS="${GIT_STATUS}${YELLOW}~${MODIFIED}${RESET}"

408 

409 echo -e "[$MODEL] 📁 ${DIR##*/} | 🌿 $BRANCH $GIT_STATUS"

410 else

411 echo "[$MODEL] 📁 ${DIR##*/}"

412 fi

413 ```

414 

415 ```python Python theme={null}

416 #!/usr/bin/env python3

417 import json, sys, subprocess, os

418 

419 data = json.load(sys.stdin)

420 model = data['model']['display_name']

421 directory = os.path.basename(data['workspace']['current_dir'])

422 

423 GREEN, YELLOW, RESET = '\033[32m', '\033[33m', '\033[0m'

424 

425 try:

426 subprocess.check_output(['git', 'rev-parse', '--git-dir'], stderr=subprocess.DEVNULL)

427 branch = subprocess.check_output(['git', 'branch', '--show-current'], text=True).strip()

428 staged_output = subprocess.check_output(['git', 'diff', '--cached', '--numstat'], text=True).strip()

429 modified_output = subprocess.check_output(['git', 'diff', '--numstat'], text=True).strip()

430 staged = len(staged_output.split('\n')) if staged_output else 0

431 modified = len(modified_output.split('\n')) if modified_output else 0

432 

433 git_status = f"{GREEN}+{staged}{RESET}" if staged else ""

434 git_status += f"{YELLOW}~{modified}{RESET}" if modified else ""

435 

436 print(f"[{model}] 📁 {directory} | 🌿 {branch} {git_status}")

437 except:

438 print(f"[{model}] 📁 {directory}")

439 ```

440 

441 ```javascript Node.js theme={null}

442 #!/usr/bin/env node

443 const { execSync } = require('child_process');

444 const path = require('path');

445 

446 let input = '';

447 process.stdin.on('data', chunk => input += chunk);

448 process.stdin.on('end', () => {

449 const data = JSON.parse(input);

450 const model = data.model.display_name;

451 const dir = path.basename(data.workspace.current_dir);

452 

453 const GREEN = '\x1b[32m', YELLOW = '\x1b[33m', RESET = '\x1b[0m';

454 

455 try {

456 execSync('git rev-parse --git-dir', { stdio: 'ignore' });

457 const branch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();

458 const staged = execSync('git diff --cached --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

459 const modified = execSync('git diff --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

460 

461 let gitStatus = staged ? `${GREEN}+${staged}${RESET}` : '';

462 gitStatus += modified ? `${YELLOW}~${modified}${RESET}` : '';

463 

464 console.log(`[${model}] 📁 ${dir} | 🌿 ${branch} ${gitStatus}`);

465 } catch {

466 console.log(`[${model}] 📁 ${dir}`);

467 }

468 });

469 ```

470</CodeGroup>

471 

472### Kosten- und Dauer-Verfolgung

473 

474Verfolgen Sie die API-Kosten und verstrichene Zeit Ihrer Sitzung. Das `cost.total_cost_usd` Feld sammelt die geschätzten Kosten aller API-Aufrufe in der aktuellen Sitzung. Das `cost.total_duration_ms` Feld misst die Gesamtverstrichene Zeit seit Sitzungsbeginn, während `cost.total_api_duration_ms` nur die Zeit verfolgt, die auf API-Antworten wartet.

475 

476Jedes Skript formatiert Kosten als Währung und konvertiert Millisekunden in Minuten und Sekunden:

477 

478<Frame>

479 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-cost-tracking.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=e3444a51fe6f3440c134bd5f1f08ad29" alt="Eine Statuszeile, die Modellname, Sitzungskosten und Dauer anzeigt" width="588" height="180" data-path="images/statusline-cost-tracking.png" />

480</Frame>

481 

482<CodeGroup>

483 ```bash Bash theme={null}

484 #!/bin/bash

485 input=$(cat)

486 

487 MODEL=$(echo "$input" | jq -r '.model.display_name')

488 COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')

489 DURATION_MS=$(echo "$input" | jq -r '.cost.total_duration_ms // 0')

490 

491 COST_FMT=$(printf '$%.2f' "$COST")

492 DURATION_SEC=$((DURATION_MS / 1000))

493 MINS=$((DURATION_SEC / 60))

494 SECS=$((DURATION_SEC % 60))

495 

496 echo "[$MODEL] 💰 $COST_FMT | ⏱️ ${MINS}m ${SECS}s"

497 ```

498 

499 ```python Python theme={null}

500 #!/usr/bin/env python3

501 import json, sys

502 

503 data = json.load(sys.stdin)

504 model = data['model']['display_name']

505 cost = data.get('cost', {}).get('total_cost_usd', 0) or 0

506 duration_ms = data.get('cost', {}).get('total_duration_ms', 0) or 0

507 

508 duration_sec = duration_ms // 1000

509 mins, secs = duration_sec // 60, duration_sec % 60

510 

511 print(f"[{model}] 💰 ${cost:.2f} | ⏱️ {mins}m {secs}s")

512 ```

513 

514 ```javascript Node.js theme={null}

515 #!/usr/bin/env node

516 let input = '';

517 process.stdin.on('data', chunk => input += chunk);

518 process.stdin.on('end', () => {

519 const data = JSON.parse(input);

520 const model = data.model.display_name;

521 const cost = data.cost?.total_cost_usd || 0;

522 const durationMs = data.cost?.total_duration_ms || 0;

523 

524 const durationSec = Math.floor(durationMs / 1000);

525 const mins = Math.floor(durationSec / 60);

526 const secs = durationSec % 60;

527 

528 console.log(`[${model}] 💰 $${cost.toFixed(2)} | ⏱️ ${mins}m ${secs}s`);

529 });

530 ```

531</CodeGroup>

532 

533### Mehrere Zeilen anzeigen

534 

535Ihr Skript kann mehrere Zeilen ausgeben, um eine reichhaltigere Anzeige zu erstellen. Jede `echo` Anweisung erzeugt eine separate Zeile im Statusbereich.

536 

537<Frame>

538 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-multiline.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=60f11387658acc9ff75158ae85f2ac87" alt="Eine mehrzeilige Statuszeile, die Modellname, Verzeichnis, Git-Branch in der ersten Zeile und einen Kontextnutzungs-Fortschrittsbalken mit Kosten und Dauer in der zweiten Zeile anzeigt" width="776" height="212" data-path="images/statusline-multiline.png" />

539</Frame>

540 

541Dieses Beispiel kombiniert mehrere Techniken: schwellenwertbasierte Farben (Grün unter 70%, Gelb 70-89%, Rot 90%+), einen Fortschrittsbalken und Git-Branch-Informationen. Jede `print` oder `echo` Anweisung erstellt eine separate Zeile:

542 

543<CodeGroup>

544 ```bash Bash theme={null}

545 #!/bin/bash

546 input=$(cat)

547 

548 MODEL=$(echo "$input" | jq -r '.model.display_name')

549 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

550 COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')

551 PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)

552 DURATION_MS=$(echo "$input" | jq -r '.cost.total_duration_ms // 0')

553 

554 CYAN='\033[36m'; GREEN='\033[32m'; YELLOW='\033[33m'; RED='\033[31m'; RESET='\033[0m'

555 

556 # Pick bar color based on context usage

557 if [ "$PCT" -ge 90 ]; then BAR_COLOR="$RED"

558 elif [ "$PCT" -ge 70 ]; then BAR_COLOR="$YELLOW"

559 else BAR_COLOR="$GREEN"; fi

560 

561 FILLED=$((PCT / 10)); EMPTY=$((10 - FILLED))

562 printf -v FILL "%${FILLED}s"; printf -v PAD "%${EMPTY}s"

563 BAR="${FILL// /█}${PAD// /░}"

564 

565 MINS=$((DURATION_MS / 60000)); SECS=$(((DURATION_MS % 60000) / 1000))

566 

567 BRANCH=""

568 git rev-parse --git-dir > /dev/null 2>&1 && BRANCH=" | 🌿 $(git branch --show-current 2>/dev/null)"

569 

570 echo -e "${CYAN}[$MODEL]${RESET} 📁 ${DIR##*/}$BRANCH"

571 COST_FMT=$(printf '$%.2f' "$COST")

572 echo -e "${BAR_COLOR}${BAR}${RESET} ${PCT}% | ${YELLOW}${COST_FMT}${RESET} | ⏱️ ${MINS}m ${SECS}s"

573 ```

574 

575 ```python Python theme={null}

576 #!/usr/bin/env python3

577 import json, sys, subprocess, os

578 

579 data = json.load(sys.stdin)

580 model = data['model']['display_name']

581 directory = os.path.basename(data['workspace']['current_dir'])

582 cost = data.get('cost', {}).get('total_cost_usd', 0) or 0

583 pct = int(data.get('context_window', {}).get('used_percentage', 0) or 0)

584 duration_ms = data.get('cost', {}).get('total_duration_ms', 0) or 0

585 

586 CYAN, GREEN, YELLOW, RED, RESET = '\033[36m', '\033[32m', '\033[33m', '\033[31m', '\033[0m'

587 

588 bar_color = RED if pct >= 90 else YELLOW if pct >= 70 else GREEN

589 filled = pct // 10

590 bar = '█' * filled + '░' * (10 - filled)

591 

592 mins, secs = duration_ms // 60000, (duration_ms % 60000) // 1000

593 

594 try:

595 branch = subprocess.check_output(['git', 'branch', '--show-current'], text=True, stderr=subprocess.DEVNULL).strip()

596 branch = f" | 🌿 {branch}" if branch else ""

597 except:

598 branch = ""

599 

600 print(f"{CYAN}[{model}]{RESET} 📁 {directory}{branch}")

601 print(f"{bar_color}{bar}{RESET} {pct}% | {YELLOW}${cost:.2f}{RESET} | ⏱️ {mins}m {secs}s")

602 ```

603 

604 ```javascript Node.js theme={null}

605 #!/usr/bin/env node

606 const { execSync } = require('child_process');

607 const path = require('path');

608 

609 let input = '';

610 process.stdin.on('data', chunk => input += chunk);

611 process.stdin.on('end', () => {

612 const data = JSON.parse(input);

613 const model = data.model.display_name;

614 const dir = path.basename(data.workspace.current_dir);

615 const cost = data.cost?.total_cost_usd || 0;

616 const pct = Math.floor(data.context_window?.used_percentage || 0);

617 const durationMs = data.cost?.total_duration_ms || 0;

618 

619 const CYAN = '\x1b[36m', GREEN = '\x1b[32m', YELLOW = '\x1b[33m', RED = '\x1b[31m', RESET = '\x1b[0m';

620 

621 const barColor = pct >= 90 ? RED : pct >= 70 ? YELLOW : GREEN;

622 const filled = Math.floor(pct / 10);

623 const bar = '█'.repeat(filled) + '░'.repeat(10 - filled);

624 

625 const mins = Math.floor(durationMs / 60000);

626 const secs = Math.floor((durationMs % 60000) / 1000);

627 

628 let branch = '';

629 try {

630 branch = execSync('git branch --show-current', { encoding: 'utf8', stdio: ['pipe', 'pipe', 'ignore'] }).trim();

631 branch = branch ? ` | 🌿 ${branch}` : '';

632 } catch {}

633 

634 console.log(`${CYAN}[${model}]${RESET} 📁 ${dir}${branch}`);

635 console.log(`${barColor}${bar}${RESET} ${pct}% | ${YELLOW}$${cost.toFixed(2)}${RESET} | ⏱️ ${mins}m ${secs}s`);

636 });

637 ```

638</CodeGroup>

639 

640### Anklickbare Links

641 

642Dieses Beispiel erstellt einen anklickbaren Link zu Ihrem GitHub-Repository. Es liest die Git-Remote-URL, konvertiert das SSH-Format mit `sed` in HTTPS und umhüllt den Repository-Namen mit OSC 8 Escape-Codes. Halten Sie Cmd (macOS) oder Strg (Windows/Linux) gedrückt und klicken Sie, um den Link in Ihrem Browser zu öffnen.

643 

644<Frame>

645 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-links.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=4bcc6e7deb7cf52f41ab85a219b52661" alt="Eine Statuszeile, die einen anklickbaren Link zu einem GitHub-Repository anzeigt" width="726" height="198" data-path="images/statusline-links.png" />

646</Frame>

647 

648Jedes Skript ruft die Git-Remote-URL ab, konvertiert das SSH-Format in HTTPS und umhüllt den Repository-Namen mit OSC 8 Escape-Codes. Die Bash-Version verwendet `printf '%b'`, das Backslash-Escapes zuverlässiger interpretiert als `echo -e` über verschiedene Shells hinweg:

649 

650<CodeGroup>

651 ```bash Bash theme={null}

652 #!/bin/bash

653 input=$(cat)

654 

655 MODEL=$(echo "$input" | jq -r '.model.display_name')

656 

657 # Convert git SSH URL to HTTPS

658 REMOTE=$(git remote get-url origin 2>/dev/null | sed 's/git@github.com:/https:\/\/github.com\//' | sed 's/\.git$//')

659 

660 if [ -n "$REMOTE" ]; then

661 REPO_NAME=$(basename "$REMOTE")

662 # OSC 8 format: \e]8;;URL\a then TEXT then \e]8;;\a

663 # printf %b interprets escape sequences reliably across shells

664 printf '%b' "[$MODEL] 🔗 \e]8;;${REMOTE}\a${REPO_NAME}\e]8;;\a\n"

665 else

666 echo "[$MODEL]"

667 fi

668 ```

669 

670 ```python Python theme={null}

671 #!/usr/bin/env python3

672 import json, sys, subprocess, re, os

673 

674 data = json.load(sys.stdin)

675 model = data['model']['display_name']

676 

677 # Get git remote URL

678 try:

679 remote = subprocess.check_output(

680 ['git', 'remote', 'get-url', 'origin'],

681 stderr=subprocess.DEVNULL, text=True

682 ).strip()

683 # Convert SSH to HTTPS format

684 remote = re.sub(r'^git@github\.com:', 'https://github.com/', remote)

685 remote = re.sub(r'\.git$', '', remote)

686 repo_name = os.path.basename(remote)

687 # OSC 8 escape sequences

688 link = f"\033]8;;{remote}\a{repo_name}\033]8;;\a"

689 print(f"[{model}] 🔗 {link}")

690 except:

691 print(f"[{model}]")

692 ```

693 

694 ```javascript Node.js theme={null}

695 #!/usr/bin/env node

696 const { execSync } = require('child_process');

697 const path = require('path');

698 

699 let input = '';

700 process.stdin.on('data', chunk => input += chunk);

701 process.stdin.on('end', () => {

702 const data = JSON.parse(input);

703 const model = data.model.display_name;

704 

705 try {

706 let remote = execSync('git remote get-url origin', { encoding: 'utf8', stdio: ['pipe', 'pipe', 'ignore'] }).trim();

707 // Convert SSH to HTTPS format

708 remote = remote.replace(/^git@github\.com:/, 'https://github.com/').replace(/\.git$/, '');

709 const repoName = path.basename(remote);

710 // OSC 8 escape sequences

711 const link = `\x1b]8;;${remote}\x07${repoName}\x1b]8;;\x07`;

712 console.log(`[${model}] 🔗 ${link}`);

713 } catch {

714 console.log(`[${model}]`);

715 }

716 });

717 ```

718</CodeGroup>

719 

720### Ratenlimit-Nutzung

721 

722Zeigen Sie die Ratenlimit-Nutzung des Claude.ai-Abonnements in der Statuszeile an. Das `rate_limits` Objekt enthält `five_hour` (5-Stunden-Rollenfenster) und `seven_day` (wöchliche) Fenster. Jedes Fenster bietet `used_percentage` (0-100) und `resets_at` (Unix-Epochensekunden, wenn das Fenster zurückgesetzt wird).

723 

724Dieses Feld ist nur für Claude.ai-Abonnenten (Pro/Max) nach der ersten API-Antwort vorhanden. Jedes Skript behandelt das fehlende Feld elegant:

725 

726<CodeGroup>

727 ```bash Bash theme={null}

728 #!/bin/bash

729 input=$(cat)

730 

731 MODEL=$(echo "$input" | jq -r '.model.display_name')

732 # "// empty" produces no output when rate_limits is absent

733 FIVE_H=$(echo "$input" | jq -r '.rate_limits.five_hour.used_percentage // empty')

734 WEEK=$(echo "$input" | jq -r '.rate_limits.seven_day.used_percentage // empty')

735 

736 LIMITS=""

737 [ -n "$FIVE_H" ] && LIMITS="5h: $(printf '%.0f' "$FIVE_H")%"

738 [ -n "$WEEK" ] && LIMITS="${LIMITS:+$LIMITS }7d: $(printf '%.0f' "$WEEK")%"

739 

740 [ -n "$LIMITS" ] && echo "[$MODEL] | $LIMITS" || echo "[$MODEL]"

741 ```

742 

743 ```python Python theme={null}

744 #!/usr/bin/env python3

745 import json, sys

746 

747 data = json.load(sys.stdin)

748 model = data['model']['display_name']

749 

750 parts = []

751 rate = data.get('rate_limits', {})

752 five_h = rate.get('five_hour', {}).get('used_percentage')

753 week = rate.get('seven_day', {}).get('used_percentage')

754 

755 if five_h is not None:

756 parts.append(f"5h: {five_h:.0f}%")

757 if week is not None:

758 parts.append(f"7d: {week:.0f}%")

759 

760 if parts:

761 print(f"[{model}] | {' '.join(parts)}")

762 else:

763 print(f"[{model}]")

764 ```

765 

766 ```javascript Node.js theme={null}

767 #!/usr/bin/env node

768 let input = '';

769 process.stdin.on('data', chunk => input += chunk);

770 process.stdin.on('end', () => {

771 const data = JSON.parse(input);

772 const model = data.model.display_name;

773 

774 const parts = [];

775 const fiveH = data.rate_limits?.five_hour?.used_percentage;

776 const week = data.rate_limits?.seven_day?.used_percentage;

777 

778 if (fiveH != null) parts.push(`5h: ${Math.round(fiveH)}%`);

779 if (week != null) parts.push(`7d: ${Math.round(week)}%`);

780 

781 console.log(parts.length ? `[${model}] | ${parts.join(' ')}` : `[${model}]`);

782 });

783 ```

784</CodeGroup>

785 

786### Teure Operationen zwischenspeichern

787 

788Ihr Statuszeilen-Skript wird während aktiver Sitzungen häufig ausgeführt. Befehle wie `git status` oder `git diff` können langsam sein, besonders in großen Repositories. Dieses Beispiel speichert Git-Informationen in einer temporären Datei und aktualisiert sie nur alle 5 Sekunden.

789 

790Der Cache-Dateiname muss über Statuszeilen-Invokationen innerhalb einer Sitzung stabil sein, aber eindeutig über Sitzungen hinweg, damit gleichzeitige Sitzungen in verschiedenen Repositories nicht den Cache-Git-Status des anderen lesen. Prozessbasierte Identifikatoren wie `$$`, `os.getpid()` oder `process.pid` ändern sich bei jeder Invokation und besiegen den Cache. Verwenden Sie stattdessen die `session_id` aus der JSON-Eingabe: Sie ist stabil für die Lebensdauer einer Sitzung und eindeutig pro Sitzung.

791 

792Jedes Skript prüft, ob die Cache-Datei fehlt oder älter als 5 Sekunden ist, bevor Git-Befehle ausgeführt werden:

793 

794<CodeGroup>

795 ```bash Bash theme={null}

796 #!/bin/bash

797 input=$(cat)

798 

799 MODEL=$(echo "$input" | jq -r '.model.display_name')

800 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

801 SESSION_ID=$(echo "$input" | jq -r '.session_id')

802 

803 CACHE_FILE="/tmp/statusline-git-cache-$SESSION_ID"

804 CACHE_MAX_AGE=5 # seconds

805 

806 cache_is_stale() {

807 [ ! -f "$CACHE_FILE" ] || \

808 # stat -f %m is macOS, stat -c %Y is Linux

809 [ $(($(date +%s) - $(stat -f %m "$CACHE_FILE" 2>/dev/null || stat -c %Y "$CACHE_FILE" 2>/dev/null || echo 0))) -gt $CACHE_MAX_AGE ]

810 }

811 

812 if cache_is_stale; then

813 if git rev-parse --git-dir > /dev/null 2>&1; then

814 BRANCH=$(git branch --show-current 2>/dev/null)

815 STAGED=$(git diff --cached --numstat 2>/dev/null | wc -l | tr -d ' ')

816 MODIFIED=$(git diff --numstat 2>/dev/null | wc -l | tr -d ' ')

817 echo "$BRANCH|$STAGED|$MODIFIED" > "$CACHE_FILE"

818 else

819 echo "||" > "$CACHE_FILE"

820 fi

821 fi

822 

823 IFS='|' read -r BRANCH STAGED MODIFIED < "$CACHE_FILE"

824 

825 if [ -n "$BRANCH" ]; then

826 echo "[$MODEL] 📁 ${DIR##*/} | 🌿 $BRANCH +$STAGED ~$MODIFIED"

827 else

828 echo "[$MODEL] 📁 ${DIR##*/}"

829 fi

830 ```

831 

832 ```python Python theme={null}

833 #!/usr/bin/env python3

834 import json, sys, subprocess, os, time

835 

836 data = json.load(sys.stdin)

837 model = data['model']['display_name']

838 directory = os.path.basename(data['workspace']['current_dir'])

839 session_id = data['session_id']

840 

841 CACHE_FILE = f"/tmp/statusline-git-cache-{session_id}"

842 CACHE_MAX_AGE = 5 # seconds

843 

844 def cache_is_stale():

845 if not os.path.exists(CACHE_FILE):

846 return True

847 return time.time() - os.path.getmtime(CACHE_FILE) > CACHE_MAX_AGE

848 

849 if cache_is_stale():

850 try:

851 subprocess.check_output(['git', 'rev-parse', '--git-dir'], stderr=subprocess.DEVNULL)

852 branch = subprocess.check_output(['git', 'branch', '--show-current'], text=True).strip()

853 staged = subprocess.check_output(['git', 'diff', '--cached', '--numstat'], text=True).strip()

854 modified = subprocess.check_output(['git', 'diff', '--numstat'], text=True).strip()

855 staged_count = len(staged.split('\n')) if staged else 0

856 modified_count = len(modified.split('\n')) if modified else 0

857 with open(CACHE_FILE, 'w') as f:

858 f.write(f"{branch}|{staged_count}|{modified_count}")

859 except:

860 with open(CACHE_FILE, 'w') as f:

861 f.write("||")

862 

863 with open(CACHE_FILE) as f:

864 branch, staged, modified = f.read().strip().split('|')

865 

866 if branch:

867 print(f"[{model}] 📁 {directory} | 🌿 {branch} +{staged} ~{modified}")

868 else:

869 print(f"[{model}] 📁 {directory}")

870 ```

871 

872 ```javascript Node.js theme={null}

873 #!/usr/bin/env node

874 const { execSync } = require('child_process');

875 const fs = require('fs');

876 const path = require('path');

877 

878 let input = '';

879 process.stdin.on('data', chunk => input += chunk);

880 process.stdin.on('end', () => {

881 const data = JSON.parse(input);

882 const model = data.model.display_name;

883 const dir = path.basename(data.workspace.current_dir);

884 const sessionId = data.session_id;

885 

886 const CACHE_FILE = `/tmp/statusline-git-cache-${sessionId}`;

887 const CACHE_MAX_AGE = 5; // seconds

888 

889 const cacheIsStale = () => {

890 if (!fs.existsSync(CACHE_FILE)) return true;

891 return (Date.now() / 1000) - fs.statSync(CACHE_FILE).mtimeMs / 1000 > CACHE_MAX_AGE;

892 };

893 

894 if (cacheIsStale()) {

895 try {

896 execSync('git rev-parse --git-dir', { stdio: 'ignore' });

897 const branch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();

898 const staged = execSync('git diff --cached --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

899 const modified = execSync('git diff --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

900 fs.writeFileSync(CACHE_FILE, `${branch}|${staged}|${modified}`);

901 } catch {

902 fs.writeFileSync(CACHE_FILE, '||');

903 }

904 }

905 

906 const [branch, staged, modified] = fs.readFileSync(CACHE_FILE, 'utf8').trim().split('|');

907 

908 if (branch) {

909 console.log(`[${model}] 📁 ${dir} | 🌿 ${branch} +${staged} ~${modified}`);

910 } else {

911 console.log(`[${model}] 📁 ${dir}`);

912 }

913 });

914 ```

915</CodeGroup>

916 

917### Windows-Konfiguration

918 

919Unter Windows führt Claude Code Statuszeilen-Befehle über Git Bash aus, wenn Git Bash installiert ist, oder über PowerShell, wenn Git Bash nicht vorhanden ist. Um ein PowerShell-Skript als Statuszeile auszuführen, rufen Sie es über `powershell` auf; dies funktioniert von beiden Shells aus:

920 

921<CodeGroup>

922 ```json settings.json theme={null}

923 {

924 "statusLine": {

925 "type": "command",

926 "command": "powershell -NoProfile -File C:/Users/username/.claude/statusline.ps1"

927 }

928 }

929 ```

930 

931 ```powershell statusline.ps1 theme={null}

932 $input_json = $input | Out-String | ConvertFrom-Json

933 $cwd = $input_json.cwd

934 $model = $input_json.model.display_name

935 $used = $input_json.context_window.used_percentage

936 $dirname = Split-Path $cwd -Leaf

937 

938 if ($used) {

939 Write-Host "$dirname [$model] ctx: $used%"

940 } else {

941 Write-Host "$dirname [$model]"

942 }

943 ```

944</CodeGroup>

945 

946Oder führen Sie ein Bash-Skript direkt aus:

947 

948<CodeGroup>

949 ```json settings.json theme={null}

950 {

951 "statusLine": {

952 "type": "command",

953 "command": "~/.claude/statusline.sh"

954 }

955 }

956 ```

957 

958 ```bash statusline.sh theme={null}

959 #!/usr/bin/env bash

960 input=$(cat)

961 cwd=$(echo "$input" | grep -o '"cwd":"[^"]*"' | cut -d'"' -f4)

962 model=$(echo "$input" | grep -o '"display_name":"[^"]*"' | cut -d'"' -f4)

963 dirname="${cwd##*[/\\]}"

964 echo "$dirname [$model]"

965 ```

966</CodeGroup>

967 

968## Subagent-Statuszeilen

969 

970Die `subagentStatusLine` Einstellung rendert einen benutzerdefinierten Zeilenkörper für jeden [Subagenten](/de/sub-agents), der im Agent-Panel unterhalb der Eingabeaufforderung angezeigt wird. Verwenden Sie sie, um die Standard-`name · description · token count` Zeile durch Ihre eigene Formatierung zu ersetzen.

971 

972```json theme={null}

973{

974 "subagentStatusLine": {

975 "type": "command",

976 "command": "~/.claude/subagent-statusline.sh"

977 }

978}

979```

980 

981Der Befehl wird einmal pro Aktualisierungstick mit allen sichtbaren Subagenten-Zeilen ausgeführt, die als einzelnes JSON-Objekt auf stdin übergeben werden. Die Eingabe enthält die [Basis-Hook-Felder](/de/hooks#common-input-fields) plus `columns` (die nutzbare Zeilenbreite) und ein `tasks` Array, wobei jede Aufgabe `id`, `name`, `type`, `status`, `description`, `label`, `startTime`, `tokenCount`, `tokenSamples` und `cwd` hat.

982 

983Schreiben Sie eine JSON-Zeile auf stdout pro Zeile, die Sie überschreiben möchten, in der Form `{"id": "<task id>", "content": "<row body>"}`. Der `content` String wird wie vorhanden gerendert, einschließlich ANSI-Farben und OSC 8 Hyperlinks. Lassen Sie die `id` einer Aufgabe weg, um die Standard-Rendering für diese Zeile zu behalten; geben Sie einen leeren `content` String aus, um sie auszublenden.

984 

985Die gleichen Vertrauens- und `disableAllHooks` Gates, die für `statusLine` gelten, gelten auch hier. Plugins können eine Standard-`subagentStatusLine` in ihrer [`settings.json`](/de/plugins-reference#standard-plugin-layout) versenden.

986 

987## Tipps

988 

989* **Mit Mock-Eingabe testen**: `echo '{"model":{"display_name":"Opus"},"workspace":{"current_dir":"/home/user/project"},"context_window":{"used_percentage":25},"session_id":"test-session-abc"}' | ./statusline.sh`

990* **Ausgabe kurz halten**: Die Statusleiste hat begrenzte Breite, daher kann lange Ausgabe abgeschnitten oder unangenehm umgebrochen werden

991* **Langsame Operationen zwischenspeichern**: Ihr Skript wird während aktiver Sitzungen häufig ausgeführt, daher können Befehle wie `git status` zu Verzögerungen führen. Siehe das [Caching-Beispiel](#cache-expensive-operations) für die Handhabung.

992 

993Community-Projekte wie [ccstatusline](https://github.com/sirmalloc/ccstatusline) und [starship-claude](https://github.com/martinemde/starship-claude) bieten vorkonfigurierte Konfigurationen mit Designs und zusätzlichen Funktionen.

994 

995## Fehlerbehebung

996 

997**Statuszeile wird nicht angezeigt**

998 

999* Überprüfen Sie, dass Ihr Skript ausführbar ist: `chmod +x ~/.claude/statusline.sh`

1000* Überprüfen Sie, dass Ihr Skript auf stdout ausgibt, nicht auf stderr

1001* Führen Sie Ihr Skript manuell aus, um zu überprüfen, dass es Ausgabe erzeugt

1002* Wenn `disableAllHooks` in Ihren Einstellungen auf `true` gesetzt ist, ist die Statuszeile auch deaktiviert. Entfernen Sie diese Einstellung oder setzen Sie sie auf `false`, um sie erneut zu aktivieren.

1003* Führen Sie `claude --debug` aus, um den Exit-Code und stderr aus der ersten Statuszeilen-Invokation in einer Sitzung zu protokollieren

1004* Bitten Sie Claude, Ihre Einstellungsdatei zu lesen und den `statusLine` Befehl direkt auszuführen, um Fehler zu finden

1005 

1006**Statuszeile zeigt `--` oder leere Werte**

1007 

1008* Felder können `null` sein, bevor die erste API-Antwort abgeschlossen ist

1009* Behandeln Sie Null-Werte in Ihrem Skript mit Fallbacks wie `// 0` in jq

1010* Starten Sie Claude Code neu, wenn Werte nach mehreren Nachrichten leer bleiben

1011 

1012**Kontextprozentsatz zeigt unerwartete Werte**

1013 

1014* Verwenden Sie `used_percentage` für genauen Kontextzustand anstelle von kumulativen Summen

1015* Die `total_input_tokens` und `total_output_tokens` sind kumulativ über die Sitzung und können die Kontextfenstergröße überschreiten

1016* Der Kontextprozentsatz kann sich von der `/context` Ausgabe unterscheiden, je nachdem, wann jeder berechnet wird

1017 

1018**OSC 8-Links nicht anklickbar**

1019 

1020* Überprüfen Sie, dass Ihr Terminal OSC 8-Hyperlinks unterstützt (iTerm2, Kitty, WezTerm)

1021 

1022* Terminal.app unterstützt keine anklickbaren Links

1023 

1024* Wenn Link-Text angezeigt wird, aber nicht anklickbar ist, hat Claude Code möglicherweise keine Hyperlink-Unterstützung in Ihrem Terminal erkannt. Dies betrifft häufig Windows Terminal und andere Emulatoren, die nicht in der Auto-Erkennungsliste enthalten sind. Setzen Sie die `FORCE_HYPERLINK` Umgebungsvariable, um die Erkennung zu überschreiben, bevor Sie Claude Code starten:

1025 

1026 ```bash theme={null}

1027 FORCE_HYPERLINK=1 claude

1028 ```

1029 

1030 In PowerShell setzen Sie die Variable zuerst in der aktuellen Sitzung:

1031 

1032 ```powershell theme={null}

1033 $env:FORCE_HYPERLINK = "1"; claude

1034 ```

1035 

1036* SSH- und tmux-Sitzungen können OSC-Sequenzen je nach Konfiguration entfernen

1037 

1038* Wenn Escape-Sequenzen als Literaltext wie `\e]8;;` angezeigt werden, verwenden Sie `printf '%b'` anstelle von `echo -e` für zuverlässigere Escape-Behandlung

1039 

1040**Anzeigeglitches mit Escape-Sequenzen**

1041 

1042* Komplexe Escape-Sequenzen (ANSI-Farben, OSC 8-Links) können gelegentlich zu beschädigter Ausgabe führen, wenn sie mit anderen UI-Aktualisierungen überlappen

1043* Wenn Sie beschädigten Text sehen, versuchen Sie, Ihr Skript auf einfache Textausgabe zu vereinfachen

1044* Mehrzeilige Statuszeilen mit Escape-Codes sind anfälliger für Rendering-Probleme als einzeilige einfache Texte

1045 

1046**Workspace-Vertrauen erforderlich**

1047 

1048* Der Statuszeilen-Befehl wird nur ausgeführt, wenn Sie den Workspace-Vertrauensdialog für das aktuelle Verzeichnis akzeptiert haben. Da `statusLine` einen Shell-Befehl ausführt, erfordert es die gleiche Vertrauensannahme wie Hooks und andere Shell-ausführende Einstellungen.

1049* Wenn Vertrauen nicht akzeptiert wird, sehen Sie stattdessen die Benachrichtigung `statusline skipped · restart to fix`. Starten Sie Claude Code neu und akzeptieren Sie die Vertrauensaufforderung, um es zu aktivieren.

1050 

1051**Skriptfehler oder Hängen**

1052 

1053* Skripte, die mit Nicht-Null-Codes beendet werden oder keine Ausgabe erzeugen, führen dazu, dass die Statuszeile leer wird

1054* Langsame Skripte blockieren die Statuszeilen-Aktualisierung, bis sie abgeschlossen sind. Halten Sie Skripte schnell, um veraltete Ausgabe zu vermeiden.

1055* Wenn eine neue Aktualisierung ausgelöst wird, während ein langsames Skript läuft, wird das laufende Skript abgebrochen

1056* Testen Sie Ihr Skript unabhängig mit Mock-Eingabe, bevor Sie es konfigurieren

1057 

1058**Benachrichtigungen teilen sich die Statuszeilen-Zeile**

1059 

1060* Systembenachrichtigungen wie MCP-Serverfehler und automatische Updates werden auf der rechten Seite derselben Zeile wie Ihre Statuszeile angezeigt. Vorübergehende Benachrichtigungen wie die Kontext-niedrig-Warnung zirkulieren auch durch diesen Bereich.

1061* Das Aktivieren des ausführlichen Modus fügt einen Token-Zähler zu diesem Bereich hinzu

1062* Auf schmalen Terminals können diese Benachrichtigungen Ihre Statuszeilen-Ausgabe abschneiden

sub-agents.md +1011 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Benutzerdefinierte Subagenten erstellen

6 

7> Erstellen und verwenden Sie spezialisierte KI-Subagenten in Claude Code für aufgabenspezifische Workflows und verbesserte Kontextverwaltung.

8 

9Subagenten sind spezialisierte KI-Assistenten, die bestimmte Arten von Aufgaben bearbeiten. Verwenden Sie einen, wenn eine Nebenaufgabe Ihre Hauptkonversation mit Suchergebnissen, Protokollen oder Dateiinhalten überfluten würde, auf die Sie nicht mehr verweisen werden: Der Subagent führt diese Arbeit in seinem eigenen Kontext durch und gibt nur die Zusammenfassung zurück. Definieren Sie einen benutzerdefinierten Subagenten, wenn Sie wiederholt denselben Typ von Worker mit denselben Anweisungen spawnen.

10 

11Jeder Subagent läuft in seinem eigenen Kontextfenster mit einem benutzerdefinierten Systemprompt, spezifischem Werkzeugzugriff und unabhängigen Berechtigungen. Wenn Claude auf eine Aufgabe trifft, die der Beschreibung eines Subagenten entspricht, delegiert es an diesen Subagenten, der unabhängig arbeitet und Ergebnisse zurückgibt. Um die Kontexteinsparungen in der Praxis zu sehen, zeigt die [Kontextfenster-Visualisierung](/de/context-window) eine Sitzung, in der ein Subagent Recherchen in seinem eigenen separaten Fenster durchführt.

12 

13<Note>

14 Wenn Sie mehrere Agenten benötigen, die parallel arbeiten und miteinander kommunizieren, siehe stattdessen [Agent-Teams](/de/agent-teams). Subagenten arbeiten innerhalb einer einzelnen Sitzung; Agent-Teams koordinieren über separate Sitzungen hinweg.

15</Note>

16 

17Subagenten helfen Ihnen:

18 

19* **Kontext bewahren**, indem Sie Exploration und Implementierung aus Ihrer Hauptkonversation heraushalten

20* **Einschränkungen durchsetzen**, indem Sie begrenzen, welche Werkzeuge ein Subagent verwenden kann

21* **Konfigurationen wiederverwenden** über Projekte hinweg mit Subagenten auf Benutzerebene

22* **Verhalten spezialisieren** mit fokussierten Systemprompts für spezifische Domänen

23* **Kosten kontrollieren**, indem Sie Aufgaben an schnellere, günstigere Modelle wie Haiku weiterleiten

24 

25Claude verwendet die Beschreibung jedes Subagenten, um zu entscheiden, wann Aufgaben delegiert werden. Wenn Sie einen Subagenten erstellen, schreiben Sie eine klare Beschreibung, damit Claude weiß, wann er ihn verwenden soll.

26 

27Claude Code enthält mehrere integrierte Subagenten wie **Explore**, **Plan** und **general-purpose**. Sie können auch benutzerdefinierte Subagenten erstellen, um spezifische Aufgaben zu bearbeiten. Diese Seite behandelt:

28 

29* [Integrierte Subagenten](#built-in-subagents)

30* [Wie Sie Ihre eigenen erstellen](#quickstart-create-your-first-subagent)

31* [Vollständige Konfigurationsoptionen](#configure-subagents)

32* [Muster für die Arbeit mit Subagenten](#work-with-subagents)

33* [Gegabelte Subagenten](#fork-the-current-conversation)

34* [Beispiel-Subagenten](#example-subagents)

35 

36## Integrierte Subagenten

37 

38Claude Code enthält integrierte Subagenten, die Claude automatisch bei Bedarf verwendet. Jeder erbt die Berechtigungen der übergeordneten Konversation mit zusätzlichen Werkzeugbeschränkungen.

39 

40<Tabs>

41 <Tab title="Explore">

42 Ein schneller, schreibgeschützter Agent, der für die Suche und Analyse von Codebases optimiert ist.

43 

44 * **Modell**: Haiku (schnell, niedrige Latenz)

45 * **Werkzeuge**: Schreibgeschützte Werkzeuge (kein Zugriff auf Write- und Edit-Werkzeuge)

46 * **Zweck**: Dateiermittlung, Codesuche, Codebase-Exploration

47 

48 Claude delegiert an Explore, wenn es eine Codebase durchsuchen oder verstehen muss, ohne Änderungen vorzunehmen. Dies hält Explorationsergebnisse aus Ihrem Hauptkonversationskontext heraus.

49 

50 Beim Aufrufen von Explore gibt Claude ein Gründlichkeitsniveau an: **quick** für gezielte Lookups, **medium** für ausgewogene Exploration oder **very thorough** für umfassende Analyse.

51 </Tab>

52 

53 <Tab title="Plan">

54 Ein Forschungsagent, der während des [Plan-Modus](/de/common-workflows#use-plan-mode-for-safe-code-analysis) verwendet wird, um Kontext zu sammeln, bevor ein Plan präsentiert wird.

55 

56 * **Modell**: Erbt von Hauptkonversation

57 * **Werkzeuge**: Schreibgeschützte Werkzeuge (kein Zugriff auf Write- und Edit-Werkzeuge)

58 * **Zweck**: Codebase-Recherche für Planung

59 

60 Wenn Sie sich im Plan-Modus befinden und Claude Ihre Codebase verstehen muss, delegiert es die Recherche an den Plan-Subagenten. Dies verhindert unendliche Verschachtelung (Subagenten können keine anderen Subagenten spawnen), während dennoch notwendiger Kontext gesammelt wird.

61 </Tab>

62 

63 <Tab title="General-purpose">

64 Ein fähiger Agent für komplexe, mehrstufige Aufgaben, die sowohl Exploration als auch Aktion erfordern.

65 

66 * **Modell**: Erbt von Hauptkonversation

67 * **Werkzeuge**: Alle Werkzeuge

68 * **Zweck**: Komplexe Recherche, mehrstufige Operationen, Code-Änderungen

69 

70 Claude delegiert an general-purpose, wenn die Aufgabe sowohl Exploration als auch Änderung, komplexes Denken zur Interpretation von Ergebnissen oder mehrere abhängige Schritte erfordert.

71 </Tab>

72 

73 <Tab title="Other">

74 Claude Code enthält zusätzliche Hilfagenten für spezifische Aufgaben. Diese werden normalerweise automatisch aufgerufen, daher müssen Sie sie nicht direkt verwenden.

75 

76 | Agent | Modell | Wann Claude ihn verwendet |

77 | :---------------- | :----- | :--------------------------------------------------------------------- |

78 | statusline-setup | Sonnet | Wenn Sie `/statusline` ausführen, um Ihre Statuszeile zu konfigurieren |

79 | Claude Code Guide | Haiku | Wenn Sie Fragen zu Claude Code-Funktionen stellen |

80 </Tab>

81</Tabs>

82 

83Über diese integrierten Subagenten hinaus können Sie Ihre eigenen mit benutzerdefinierten Prompts, Werkzeugbeschränkungen, Berechtigungsmodi, Hooks und Skills erstellen. Die folgenden Abschnitte zeigen, wie Sie anfangen und Subagenten anpassen.

84 

85## Schnellstart: Erstellen Sie Ihren ersten Subagenten

86 

87Subagenten werden in Markdown-Dateien mit YAML-Frontmatter definiert. Sie können sie [manuell erstellen](#write-subagent-files) oder den `/agents`-Befehl verwenden.

88 

89Diese Anleitung führt Sie durch die Erstellung eines Subagenten auf Benutzerebene mit dem `/agents`-Befehl. Der Subagent überprüft Code und schlägt Verbesserungen für die Codebase vor.

90 

91<Steps>

92 <Step title="Öffnen Sie die Subagenten-Schnittstelle">

93 In Claude Code führen Sie aus:

94 

95 ```text theme={null}

96 /agents

97 ```

98 </Step>

99 

100 <Step title="Wählen Sie einen Ort">

101 Wechseln Sie zur Registerkarte **Library**, wählen Sie **Create new agent**, dann wählen Sie **Personal**. Dies speichert den Subagenten in `~/.claude/agents/`, sodass er in allen Ihren Projekten verfügbar ist.

102 </Step>

103 

104 <Step title="Mit Claude generieren">

105 Wählen Sie **Generate with Claude**. Wenn Sie dazu aufgefordert werden, beschreiben Sie den Subagenten:

106 

107 ```text theme={null}

108 A code improvement agent that scans files and suggests improvements

109 for readability, performance, and best practices. It should explain

110 each issue, show the current code, and provide an improved version.

111 ```

112 

113 Claude generiert die Kennung, Beschreibung und den Systemprompt für Sie.

114 </Step>

115 

116 <Step title="Wählen Sie Werkzeuge">

117 Für einen schreibgeschützten Reviewer deselektieren Sie alles außer **Read-only tools**. Wenn Sie alle Werkzeuge ausgewählt lassen, erbt der Subagent alle Werkzeuge, die der Hauptkonversation zur Verfügung stehen.

118 </Step>

119 

120 <Step title="Wählen Sie Modell">

121 Wählen Sie, welches Modell der Subagent verwendet. Wählen Sie für diesen Beispielagenten **Sonnet**, das Fähigkeit und Geschwindigkeit für die Analyse von Code-Mustern ausgleicht.

122 </Step>

123 

124 <Step title="Wählen Sie eine Farbe">

125 Wählen Sie eine Hintergrundfarbe für den Subagenten. Dies hilft Ihnen, zu identifizieren, welcher Subagent in der Benutzeroberfläche ausgeführt wird.

126 </Step>

127 

128 <Step title="Konfigurieren Sie Speicher">

129 Wählen Sie **User scope**, um dem Subagenten ein [persistentes Speicherverzeichnis](#enable-persistent-memory) unter `~/.claude/agent-memory/` zu geben. Der Subagent verwendet dies, um Erkenntnisse über Konversationen hinweg zu sammeln, wie z. B. Codebase-Muster und wiederkehrende Probleme. Wählen Sie **None**, wenn der Subagent keine Erkenntnisse speichern soll.

130 </Step>

131 

132 <Step title="Speichern und testen Sie">

133 Überprüfen Sie die Konfigurationszusammenfassung. Drücken Sie `s` oder `Enter`, um zu speichern, oder drücken Sie `e`, um zu speichern und die Datei in Ihrem Editor zu bearbeiten. Der Subagent ist sofort verfügbar. Testen Sie ihn:

134 

135 ```text theme={null}

136 Use the code-improver agent to suggest improvements in this project

137 ```

138 

139 Claude delegiert an Ihren neuen Subagenten, der die Codebase durchsucht und Verbesserungsvorschläge zurückgibt.

140 </Step>

141</Steps>

142 

143Sie haben jetzt einen Subagenten, den Sie in jedem Projekt auf Ihrem Computer verwenden können, um Codebases zu analysieren und Verbesserungen vorzuschlagen.

144 

145Sie können Subagenten auch manuell als Markdown-Dateien erstellen, sie über CLI-Flags definieren oder sie über Plugins verteilen. Die folgenden Abschnitte behandeln alle Konfigurationsoptionen.

146 

147## Konfigurieren Sie Subagenten

148 

149### Verwenden Sie den /agents-Befehl

150 

151Der `/agents`-Befehl öffnet eine Schnittstelle mit Registerkarten zur Verwaltung von Subagenten. Die Registerkarte **Running** zeigt aktive Subagenten und ermöglicht es Ihnen, sie zu öffnen oder zu stoppen. Die Registerkarte **Library** ermöglicht es Ihnen:

152 

153* Alle verfügbaren Subagenten anzuzeigen (integriert, Benutzer, Projekt und Plugin)

154* Neue Subagenten mit geführtem Setup oder Claude-Generierung zu erstellen

155* Vorhandene Subagenten-Konfiguration und Werkzeugzugriff zu bearbeiten

156* Benutzerdefinierte Subagenten zu löschen

157* Zu sehen, welche Subagenten aktiv sind, wenn Duplikate vorhanden sind

158 

159Dies ist die empfohlene Methode zum Erstellen und Verwalten von Subagenten. Für manuelle Erstellung oder Automatisierung können Sie auch Subagenten-Dateien direkt hinzufügen.

160 

161Um alle konfigurierten Subagenten von der Befehlszeile aus ohne Starten einer interaktiven Sitzung aufzulisten, führen Sie `claude agents` aus. Dies zeigt Agenten gruppiert nach Quelle und gibt an, welche durch höherrangige Definitionen überschrieben werden.

162 

163### Wählen Sie den Subagenten-Umfang

164 

165Subagenten sind Markdown-Dateien mit YAML-Frontmatter. Speichern Sie sie an verschiedenen Orten je nach Umfang. Wenn mehrere Subagenten denselben Namen haben, gewinnt der höherrangige Ort.

166 

167| Ort | Umfang | Priorität | Wie zu erstellen |

168| :--------------------------- | :---------------------- | :------------- | :----------------------------------------------------------- |

169| Verwaltete Einstellungen | Organisationsweit | 1 (höchste) | Bereitgestellt über [verwaltete Einstellungen](/de/settings) |

170| `--agents` CLI-Flag | Aktuelle Sitzung | 2 | JSON beim Starten von Claude Code übergeben |

171| `.claude/agents/` | Aktuelles Projekt | 3 | Interaktiv oder manuell |

172| `~/.claude/agents/` | Alle Ihre Projekte | 4 | Interaktiv oder manuell |

173| Plugin-Verzeichnis `agents/` | Wo Plugin aktiviert ist | 5 (niedrigste) | Installiert mit [Plugins](/de/plugins) |

174 

175**Projekt-Subagenten** (`.claude/agents/`) sind ideal für Subagenten, die spezifisch für eine Codebase sind. Checken Sie sie in die Versionskontrolle ein, damit Ihr Team sie gemeinsam verwenden und verbessern kann.

176 

177Projekt-Subagenten werden durch Aufwärts-Traversierung vom aktuellen Arbeitsverzeichnis entdeckt. Verzeichnisse, die mit `--add-dir` hinzugefügt werden, [gewähren nur Dateizugriff](/de/permissions#additional-directories-grant-file-access-not-configuration) und werden nicht nach Subagenten durchsucht. Um Subagenten über Projekte hinweg zu teilen, verwenden Sie `~/.claude/agents/` oder ein [Plugin](/de/plugins).

178 

179**Benutzer-Subagenten** (`~/.claude/agents/`) sind persönliche Subagenten, die in allen Ihren Projekten verfügbar sind.

180 

181**CLI-definierte Subagenten** werden als JSON beim Starten von Claude Code übergeben. Sie existieren nur für diese Sitzung und werden nicht auf der Festplatte gespeichert, was sie für schnelle Tests oder Automatisierungsskripte nützlich macht. Sie können mehrere Subagenten in einem einzigen `--agents`-Aufruf definieren:

182 

183```bash theme={null}

184claude --agents '{

185 "code-reviewer": {

186 "description": "Expert code reviewer. Use proactively after code changes.",

187 "prompt": "You are a senior code reviewer. Focus on code quality, security, and best practices.",

188 "tools": ["Read", "Grep", "Glob", "Bash"],

189 "model": "sonnet"

190 },

191 "debugger": {

192 "description": "Debugging specialist for errors and test failures.",

193 "prompt": "You are an expert debugger. Analyze errors, identify root causes, and provide fixes."

194 }

195}'

196```

197 

198Das `--agents`-Flag akzeptiert JSON mit denselben [Frontmatter](#supported-frontmatter-fields)-Feldern wie dateibasierte Subagenten: `description`, `prompt`, `tools`, `disallowedTools`, `model`, `permissionMode`, `mcpServers`, `hooks`, `maxTurns`, `skills`, `initialPrompt`, `memory`, `effort`, `background`, `isolation` und `color`. Verwenden Sie `prompt` für den Systemprompt, äquivalent zum Markdown-Body in dateibasierten Subagenten.

199 

200**Verwaltete Subagenten** werden von Organisationsadministratoren bereitgestellt. Platzieren Sie Markdown-Dateien in `.claude/agents/` im [Verzeichnis der verwalteten Einstellungen](/de/settings#settings-files), wobei Sie das gleiche Frontmatter-Format wie bei Projekt- und Benutzer-Subagenten verwenden. Verwaltete Definitionen haben Vorrang vor Projekt- und Benutzer-Subagenten mit demselben Namen.

201 

202**Plugin-Subagenten** stammen von [Plugins](/de/plugins), die Sie installiert haben. Sie erscheinen in `/agents` neben Ihren benutzerdefinierten Subagenten. Siehe die [Plugin-Komponenten-Referenz](/de/plugins-reference#agents) für Details zum Erstellen von Plugin-Subagenten.

203 

204<Note>

205 Aus Sicherheitsgründen unterstützen Plugin-Subagenten die Frontmatter-Felder `hooks`, `mcpServers` oder `permissionMode` nicht. Diese Felder werden ignoriert, wenn Agenten aus einem Plugin geladen werden. Wenn Sie sie benötigen, kopieren Sie die Agent-Datei in `.claude/agents/` oder `~/.claude/agents/`. Sie können auch Regeln zu [`permissions.allow`](/de/settings#permission-settings) in `settings.json` oder `settings.local.json` hinzufügen, aber diese Regeln gelten für die gesamte Sitzung, nicht nur für den Plugin-Subagenten.

206</Note>

207 

208Subagenten-Definitionen aus einem dieser Umfänge sind auch für [Agent-Teams](/de/agent-teams#use-subagent-definitions-for-teammates) verfügbar: Beim Spawnen eines Teammates können Sie auf einen Subagenten-Typ verweisen und der Teammate erbt seine `tools` und sein `model`, wobei der Body der Definition als zusätzliche Anweisungen an den Systemprompt des Teammates angehängt wird. Siehe [Agent-Teams](/de/agent-teams#use-subagent-definitions-for-teammates) für welche Frontmatter-Felder auf diesem Pfad gelten.

209 

210### Schreiben Sie Subagenten-Dateien

211 

212Subagenten-Dateien verwenden YAML-Frontmatter für die Konfiguration, gefolgt vom Systemprompt in Markdown:

213 

214<Note>

215 Subagenten werden beim Sitzungsstart geladen. Wenn Sie einen Subagenten durch manuelles Hinzufügen einer Datei erstellen, starten Sie Ihre Sitzung neu oder verwenden Sie `/agents`, um ihn sofort zu laden.

216</Note>

217 

218```markdown theme={null}

219---

220name: code-reviewer

221description: Reviews code for quality and best practices

222tools: Read, Glob, Grep

223model: sonnet

224---

225 

226You are a code reviewer. When invoked, analyze the code and provide

227specific, actionable feedback on quality, security, and best practices.

228```

229 

230Das Frontmatter definiert die Metadaten und Konfiguration des Subagenten. Der Body wird zum Systemprompt, der das Verhalten des Subagenten leitet. Subagenten erhalten nur diesen Systemprompt (plus grundlegende Umgebungsdetails wie Arbeitsverzeichnis), nicht den vollständigen Claude Code-Systemprompt.

231 

232Ein Subagent startet im aktuellen Arbeitsverzeichnis der Hauptkonversation. Innerhalb eines Subagenten bleiben `cd`-Befehle nicht zwischen Bash- oder PowerShell-Werkzeugaufrufen bestehen und beeinflussen nicht das Arbeitsverzeichnis der Hauptkonversation. Um dem Subagenten stattdessen eine isolierte Kopie des Repositorys zu geben, setzen Sie [`isolation: worktree`](#supported-frontmatter-fields).

233 

234#### Unterstützte Frontmatter-Felder

235 

236Die folgenden Felder können im YAML-Frontmatter verwendet werden. Nur `name` und `description` sind erforderlich.

237 

238| Feld | Erforderlich | Beschreibung |

239| :---------------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

240| `name` | Ja | Eindeutige Kennung mit Kleinbuchstaben und Bindestrichen |

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

242| `tools` | Nein | [Werkzeuge](#available-tools), die der Subagent verwenden kann. Erbt alle Werkzeuge, wenn weggelassen |

243| `disallowedTools` | Nein | Werkzeuge zum Verweigern, entfernt aus geerbter oder angegebener Liste |

244| `model` | Nein | [Modell](#choose-a-model) zu verwenden: `sonnet`, `opus`, `haiku`, eine vollständige Modell-ID (z. B. `claude-opus-4-7`) oder `inherit`. Standard ist `inherit` |

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

246| `maxTurns` | Nein | Maximale Anzahl von Agenten-Turns, bevor der Subagent stoppt |

247| `skills` | Nein | [Skills](/de/skills) zum Laden in den Kontext des Subagenten beim Start. Der vollständige Skill-Inhalt wird eingespritzt, nicht nur zur Invokation verfügbar gemacht. Subagenten erben keine Skills von der übergeordneten Konversation |

248| `mcpServers` | Nein | [MCP-Server](/de/mcp) verfügbar für diesen Subagenten. Jeder Eintrag ist entweder ein Servername, der auf einen bereits konfigurierten Server verweist (z. B. `"slack"`) oder eine Inline-Definition mit dem Servernamen als Schlüssel und einer vollständigen [MCP-Server-Konfiguration](/de/mcp#installing-mcp-servers) als Wert. Ignoriert für [Plugin-Subagenten](#choose-the-subagent-scope) |

249| `hooks` | Nein | [Lifecycle-Hooks](#define-hooks-for-subagents) mit Umfang auf diesen Subagenten. Ignoriert für [Plugin-Subagenten](#choose-the-subagent-scope) |

250| `memory` | Nein | [Persistenter Speicherumfang](#enable-persistent-memory): `user`, `project` oder `local`. Ermöglicht sitzungsübergreifendes Lernen |

251| `background` | Nein | Auf `true` setzen, um diesen Subagenten immer als [Hintergrundaufgabe](#run-subagents-in-foreground-or-background) auszuführen. Standard: `false` |

252| `effort` | Nein | Aufwandsstufe, wenn dieser Subagent aktiv ist. Überschreibt die Aufwandsstufe der Sitzung. Standard: erbt von Sitzung. Optionen: `low`, `medium`, `high`, `xhigh`, `max`; verfügbare Stufen hängen vom Modell ab |

253| `isolation` | Nein | Auf `worktree` setzen, um den Subagenten in einem temporären [Git-Worktree](/de/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) auszuführen, was ihm eine isolierte Kopie des Repositorys gibt. Der Worktree wird automatisch bereinigt, wenn der Subagent keine Änderungen vornimmt |

254| `color` | Nein | Anzeigefarbe für den Subagenten in der Aufgabenliste und dem Transkript. Akzeptiert `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink` oder `cyan` |

255| `initialPrompt` | Nein | Auto-eingereicht als der erste Benutzer-Turn, wenn dieser Agent als Hauptsitzungs-Agent läuft (über `--agent` oder die `agent`-Einstellung). [Befehle](/de/commands) und [Skills](/de/skills) werden verarbeitet. Vorangestellt zu jedem vom Benutzer bereitgestellten Prompt |

256 

257### Wählen Sie ein Modell

258 

259Das `model`-Feld steuert, welches [KI-Modell](/de/model-config) der Subagent verwendet:

260 

261* **Modell-Alias**: Verwenden Sie einen der verfügbaren Aliase: `sonnet`, `opus` oder `haiku`

262* **Vollständige Modell-ID**: Verwenden Sie eine vollständige Modell-ID wie `claude-opus-4-7` oder `claude-sonnet-4-6`. Akzeptiert dieselben Werte wie das `--model`-Flag

263* **inherit**: Verwenden Sie dasselbe Modell wie die Hauptkonversation

264* **Weggelassen**: Wenn nicht angegeben, wird standardmäßig `inherit` verwendet (verwendet dasselbe Modell wie die Hauptkonversation)

265 

266Wenn Claude einen Subagenten aufruft, kann es auch einen `model`-Parameter für diese spezifische Invokation übergeben. Claude Code löst das Modell des Subagenten in dieser Reihenfolge auf:

267 

2681. Die Umgebungsvariable [`CLAUDE_CODE_SUBAGENT_MODEL`](/de/model-config#environment-variables), falls gesetzt

2692. Der `model`-Parameter pro Invokation

2703. Das `model`-Frontmatter der Subagenten-Definition

2714. Das Modell der Hauptkonversation

272 

273### Kontrollieren Sie Subagenten-Fähigkeiten

274 

275Sie können kontrollieren, was Subagenten durch Werkzeugzugriff, Berechtigungsmodi und bedingte Regeln tun können.

276 

277#### Verfügbare Werkzeuge

278 

279Subagenten können alle [internen Werkzeuge](/de/tools-reference) von Claude Code verwenden. Standardmäßig erben Subagenten alle Werkzeuge von der Hauptkonversation, einschließlich MCP-Werkzeuge.

280 

281Um Werkzeuge einzuschränken, verwenden Sie das `tools`-Feld (Allowlist) oder das `disallowedTools`-Feld (Denylist). Dieses Beispiel verwendet `tools`, um ausschließlich Read, Grep, Glob und Bash zuzulassen. Der Subagent kann keine Dateien bearbeiten, keine Dateien schreiben oder MCP-Werkzeuge verwenden:

282 

283```yaml theme={null}

284---

285name: safe-researcher

286description: Research agent with restricted capabilities

287tools: Read, Grep, Glob, Bash

288---

289```

290 

291Dieses Beispiel verwendet `disallowedTools`, um alle Werkzeuge von der Hauptkonversation zu erben, außer Write und Edit. Der Subagent behält Bash, MCP-Werkzeuge und alles andere:

292 

293```yaml theme={null}

294---

295name: no-writes

296description: Inherits every tool except file writes

297disallowedTools: Write, Edit

298---

299```

300 

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

302 

303#### Beschränken Sie, welche Subagenten gespawnt werden können

304 

305Wenn ein Agent als Hauptthread mit `claude --agent` läuft, kann er Subagenten mit dem Agent-Werkzeug spawnen. Um zu beschränken, welche Subagenten-Typen er spawnen kann, verwenden Sie die `Agent(agent_type)`-Syntax im `tools`-Feld.

306 

307<Note>In Version 2.1.63 wurde das Task-Werkzeug in Agent umbenannt. Vorhandene `Task(...)`-Verweise in Einstellungen und Agent-Definitionen funktionieren weiterhin als Aliase.</Note>

308 

309```yaml theme={null}

310---

311name: coordinator

312description: Coordinates work across specialized agents

313tools: Agent(worker, researcher), Read, Bash

314---

315```

316 

317Dies ist eine Allowlist: Nur die `worker`- und `researcher`-Subagenten können gespawnt werden. Wenn der Agent versucht, einen anderen Typ zu spawnen, schlägt die Anfrage fehl und der Agent sieht nur die zulässigen Typen in seinem Prompt. Um bestimmte Agenten zu blockieren und alle anderen zuzulassen, verwenden Sie stattdessen [`permissions.deny`](#disable-specific-subagents).

318 

319Um das Spawnen eines beliebigen Subagenten ohne Einschränkungen zu ermöglichen, verwenden Sie `Agent` ohne Klammern:

320 

321```yaml theme={null}

322tools: Agent, Read, Bash

323```

324 

325Wenn `Agent` vollständig aus der `tools`-Liste weggelassen wird, kann der Agent keine Subagenten spawnen. Diese Einschränkung gilt nur für Agenten, die als Hauptthread mit `claude --agent` laufen. Subagenten können keine anderen Subagenten spawnen, daher hat `Agent(agent_type)` keine Auswirkung in Subagenten-Definitionen.

326 

327#### Umfang von MCP-Servern auf einen Subagenten

328 

329Verwenden Sie das `mcpServers`-Feld, um einem Subagenten Zugriff auf [MCP](/de/mcp)-Server zu geben, die in der Hauptkonversation nicht verfügbar sind. Inline-Server, die hier definiert sind, werden verbunden, wenn der Subagent startet, und getrennt, wenn er endet. String-Verweise teilen die Verbindung der übergeordneten Sitzung.

330 

331<Note>

332 Das `mcpServers`-Feld gilt in beiden Kontexten, in denen eine Agent-Datei ausgeführt werden kann:

333 

334 * Als Subagent, gespawnt durch das Agent-Werkzeug oder eine @-Erwähnung

335 * Als Hauptsitzung, gestartet mit [`--agent`](#invoke-subagents-explicitly) oder der `agent`-Einstellung

336 

337 Wenn der Agent die Hauptsitzung ist, verbinden sich Inline-Server-Definitionen beim Start zusammen mit Servern aus [`.mcp.json`](/de/mcp) und Einstellungsdateien.

338</Note>

339 

340Jeder Eintrag in der Liste ist entweder eine Inline-Server-Definition oder ein String, der auf einen bereits konfigurierten MCP-Server in Ihrer Sitzung verweist:

341 

342```yaml theme={null}

343---

344name: browser-tester

345description: Tests features in a real browser using Playwright

346mcpServers:

347 # Inline definition: scoped to this subagent only

348 - playwright:

349 type: stdio

350 command: npx

351 args: ["-y", "@playwright/mcp@latest"]

352 # Reference by name: reuses an already-configured server

353 - github

354---

355 

356Use the Playwright tools to navigate, screenshot, and interact with pages.

357```

358 

359Inline-Definitionen verwenden dasselbe Schema wie `.mcp.json`-Server-Einträge (`stdio`, `http`, `sse`, `ws`), mit dem Servernamen als Schlüssel.

360 

361Um einen MCP-Server vollständig aus der Hauptkonversation herauszuhalten und zu vermeiden, dass seine Werkzeugbeschreibungen dort Kontext verbrauchen, definieren Sie ihn inline hier statt in `.mcp.json`. Der Subagent erhält die Werkzeuge; die übergeordnete Konversation nicht.

362 

363#### Berechtigungsmodi

364 

365Das `permissionMode`-Feld steuert, wie der Subagent Berechtigungsaufforderungen bearbeitet. Subagenten erben den Berechtigungskontext von der Hauptkonversation und können den Modus überschreiben, außer wenn der übergeordnete Modus Vorrang hat, wie unten beschrieben.

366 

367| Modus | Verhalten |

368| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |

369| `default` | Standardberechtigungsprüfung mit Aufforderungen |

370| `acceptEdits` | Automatische Akzeptanz von Dateibearbeitungen und häufigen Dateisystem-Befehlen für Pfade im Arbeitsverzeichnis oder `additionalDirectories` |

371| `auto` | [Auto-Modus](/de/permission-modes#eliminate-prompts-with-auto-mode): ein KI-Klassifizierer bewertet Befehle und Schreibvorgänge in geschützten Verzeichnissen |

372| `dontAsk` | Automatische Ablehnung von Berechtigungsaufforderungen (explizit zulässige Werkzeuge funktionieren weiterhin) |

373| `bypassPermissions` | Alle Berechtigungsprüfungen überspringen |

374| `plan` | Plan-Modus (schreibgeschützte Exploration) |

375 

376<Warning>

377 Verwenden Sie `bypassPermissions` mit Vorsicht. Es überspringt Berechtigungsaufforderungen und ermöglicht dem Subagenten, Operationen ohne Genehmigung auszuführen, einschließlich Schreibvorgänge in `.git`, `.claude`, `.vscode`, `.idea` und `.husky`. Entfernungen im Root- und Home-Verzeichnis wie `rm -rf /` werden weiterhin als Schutzschalter aufgefordert. Siehe [Berechtigungsmodi](/de/permission-modes#skip-all-checks-with-bypasspermissions-mode) für Details.

378</Warning>

379 

380Wenn das übergeordnete Element `bypassPermissions` oder `acceptEdits` verwendet, hat dies Vorrang und kann nicht überschrieben werden. Wenn das übergeordnete Element den [Auto-Modus](/de/permission-modes#eliminate-prompts-with-auto-mode) verwendet, erbt der Subagent den Auto-Modus und jedes `permissionMode` in seinem Frontmatter wird ignoriert: der Klassifizierer bewertet die Werkzeugaufrufe des Subagenten mit denselben Block- und Zulassungsregeln wie die übergeordnete Sitzung.

381 

382#### Laden Sie Skills in Subagenten vor

383 

384Verwenden Sie das `skills`-Feld, um Skill-Inhalte beim Start in den Kontext eines Subagenten einzuspeisen. Dies gibt dem Subagenten Domänenwissen, ohne dass er Skills während der Ausführung entdecken und laden muss.

385 

386```yaml theme={null}

387---

388name: api-developer

389description: Implement API endpoints following team conventions

390skills:

391 - api-conventions

392 - error-handling-patterns

393---

394 

395Implement API endpoints. Follow the conventions and patterns from the preloaded skills.

396```

397 

398Der vollständige Inhalt jedes Skills wird in den Kontext des Subagenten eingespritzt, nicht nur zur Invokation verfügbar gemacht. Subagenten erben keine Skills von der übergeordneten Konversation; Sie müssen sie explizit auflisten.

399 

400Sie können keine Skills vorausladen, die [`disable-model-invocation: true`](/de/skills#control-who-invokes-a-skill) setzen, da das Vorausladen aus demselben Satz von Skills stammt, die Claude aufrufen kann. Wenn ein aufgelisteter Skill fehlt oder deaktiviert ist, überspringt Claude Code ihn und protokolliert eine Warnung im Debug-Protokoll.

401 

402<Note>

403 Dies ist das Gegenteil von [Ausführen eines Skills in einem Subagenten](/de/skills#run-skills-in-a-subagent). Mit `skills` in einem Subagenten kontrolliert der Subagent den Systemprompt und lädt Skill-Inhalte. Mit `context: fork` in einem Skill wird der Skill-Inhalt in den von Ihnen angegebenen Agent eingespritzt. Beide verwenden dasselbe zugrunde liegende System.

404</Note>

405 

406#### Aktivieren Sie persistenten Speicher

407 

408Das `memory`-Feld gibt dem Subagenten ein persistentes Verzeichnis, das über Konversationen hinweg bestehen bleibt. Der Subagent verwendet dieses Verzeichnis, um im Laufe der Zeit Wissen aufzubauen, wie z. B. Codebase-Muster, Debugging-Erkenntnisse und architektonische Entscheidungen.

409 

410```yaml theme={null}

411---

412name: code-reviewer

413description: Reviews code for quality and best practices

414memory: user

415---

416 

417You are a code reviewer. As you review code, update your agent memory with

418patterns, conventions, and recurring issues you discover.

419```

420 

421Wählen Sie einen Umfang basierend darauf, wie breit der Speicher angewendet werden sollte:

422 

423| Umfang | Ort | Verwenden Sie, wenn |

424| :-------- | :-------------------------------------------- | :------------------------------------------------------------------------------------------------------------- |

425| `user` | `~/.claude/agent-memory/<name-of-agent>/` | der Subagent Erkenntnisse über alle Projekte hinweg merken sollte |

426| `project` | `.claude/agent-memory/<name-of-agent>/` | das Wissen des Subagenten projektspezifisch ist und über Versionskontrolle teilbar ist |

427| `local` | `.claude/agent-memory-local/<name-of-agent>/` | das Wissen des Subagenten projektspezifisch ist, aber nicht in die Versionskontrolle eingecheckt werden sollte |

428 

429Wenn der Speicher aktiviert ist:

430 

431* Der Systemprompt des Subagenten enthält Anweisungen zum Lesen und Schreiben in das Speicherverzeichnis.

432* Der Systemprompt des Subagenten enthält auch die ersten 200 Zeilen oder 25 KB von `MEMORY.md` im Speicherverzeichnis, je nachdem, was zuerst kommt, mit Anweisungen zur Verwaltung von `MEMORY.md`, wenn es diese Grenze überschreitet.

433* Read-, Write- und Edit-Werkzeuge werden automatisch aktiviert, damit der Subagent seine Speicherdateien verwalten kann.

434 

435##### Tipps zum persistenten Speicher

436 

437* `project` ist der empfohlene Standard-Umfang. Es macht Subagenten-Wissen über Versionskontrolle teilbar. Verwenden Sie `user`, wenn das Wissen des Subagenten über Projekte hinweg breit anwendbar ist, oder `local`, wenn das Wissen nicht in die Versionskontrolle eingecheckt werden sollte.

438* Bitten Sie den Subagenten, seinen Speicher vor dem Start zu konsultieren: "Review this PR, and check your memory for patterns you've seen before."

439* Bitten Sie den Subagenten, seinen Speicher nach Abschluss einer Aufgabe zu aktualisieren: "Now that you're done, save what you learned to your memory." Im Laufe der Zeit baut dies eine Wissensdatenbank auf, die den Subagenten effektiver macht.

440* Fügen Sie Speicheranweisungen direkt in die Markdown-Datei des Subagenten ein, damit er proaktiv seine eigene Wissensdatenbank verwaltet:

441 

442 ```markdown theme={null}

443 Update your agent memory as you discover codepaths, patterns, library

444 locations, and key architectural decisions. This builds up institutional

445 knowledge across conversations. Write concise notes about what you found

446 and where.

447 ```

448 

449#### Bedingte Regeln mit Hooks

450 

451Für dynamischere Kontrolle über die Werkzeugnutzung verwenden Sie `PreToolUse`-Hooks, um Operationen vor ihrer Ausführung zu validieren. Dies ist nützlich, wenn Sie einige Operationen eines Werkzeugs zulassen möchten, während Sie andere blockieren.

452 

453Dieses Beispiel erstellt einen Subagenten, der nur schreibgeschützte Datenbankabfragen zulässt. Der `PreToolUse`-Hook führt das in `command` angegebene Skript vor jeder Bash-Befehlsausführung aus:

454 

455```yaml theme={null}

456---

457name: db-reader

458description: Execute read-only database queries

459tools: Bash

460hooks:

461 PreToolUse:

462 - matcher: "Bash"

463 hooks:

464 - type: command

465 command: "./scripts/validate-readonly-query.sh"

466---

467```

468 

469Claude Code [übergibt Hook-Eingabe als JSON](/de/hooks#pretooluse-input) über stdin an Hook-Befehle. Das Validierungsskript liest dieses JSON, extrahiert den Bash-Befehl und [beendet mit Code 2](/de/hooks#exit-code-2-behavior-per-event), um Schreibvorgänge zu blockieren:

470 

471```bash theme={null}

472#!/bin/bash

473# ./scripts/validate-readonly-query.sh

474 

475INPUT=$(cat)

476COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')

477 

478# Block SQL write operations (case-insensitive)

479if echo "$COMMAND" | grep -iE '\b(INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|TRUNCATE)\b' > /dev/null; then

480 echo "Blocked: Only SELECT queries are allowed" >&2

481 exit 2

482fi

483 

484exit 0

485```

486 

487Siehe [Hook-Eingabe](/de/hooks#pretooluse-input) für das vollständige Eingabeschema und [Exit-Codes](/de/hooks#exit-code-output) für die Auswirkungen von Exit-Codes auf das Verhalten.

488 

489#### Deaktivieren Sie spezifische Subagenten

490 

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

492 

493```json theme={null}

494{

495 "permissions": {

496 "deny": ["Agent(Explore)", "Agent(my-custom-agent)"]

497 }

498}

499```

500 

501Dies funktioniert für integrierte und benutzerdefinierte Subagenten. Sie können auch das `--disallowedTools`-CLI-Flag verwenden:

502 

503```bash theme={null}

504claude --disallowedTools "Agent(Explore)"

505```

506 

507Siehe [Berechtigungsdokumentation](/de/permissions#tool-specific-permission-rules) für weitere Details zu Berechtigungsregeln.

508 

509### Definieren Sie Hooks für Subagenten

510 

511Subagenten können [Hooks](/de/hooks) definieren, die während des Lebenszyklus des Subagenten ausgeführt werden. Es gibt zwei Möglichkeiten, Hooks zu konfigurieren:

512 

5131. **Im Frontmatter des Subagenten**: Definieren Sie Hooks, die nur ausgeführt werden, während dieser Subagent aktiv ist

5142. **In `settings.json`**: Definieren Sie Hooks, die in der Hauptsitzung ausgeführt werden, wenn Subagenten starten oder stoppen

515 

516#### Hooks im Subagenten-Frontmatter

517 

518Definieren Sie Hooks direkt in der Markdown-Datei des Subagenten. Diese Hooks werden nur ausgeführt, während dieser spezifische Subagent aktiv ist, und werden bereinigt, wenn er endet.

519 

520<Note>

521 Frontmatter-Hooks werden ausgelöst, wenn der Agent als Subagent durch das Agent-Werkzeug oder eine @-Erwähnung gespawnt wird, und wenn der Agent als Hauptsitzung über [`--agent`](#invoke-subagents-explicitly) oder die `agent`-Einstellung läuft. Im Hauptsitzungs-Fall werden sie zusammen mit allen Hooks ausgeführt, die in [`settings.json`](/de/hooks) definiert sind.

522</Note>

523 

524Alle [Hook-Ereignisse](/de/hooks#hook-events) werden unterstützt. Die häufigsten Ereignisse für Subagenten sind:

525 

526| Ereignis | Matcher-Eingabe | Wann es ausgelöst wird |

527| :------------ | :-------------- | :------------------------------------------------------------------------ |

528| `PreToolUse` | Werkzeugname | Bevor der Subagent ein Werkzeug verwendet |

529| `PostToolUse` | Werkzeugname | Nachdem der Subagent ein Werkzeug verwendet hat |

530| `Stop` | (keine) | Wenn der Subagent endet (wird zur Laufzeit in `SubagentStop` konvertiert) |

531 

532Dieses Beispiel validiert Bash-Befehle mit dem `PreToolUse`-Hook und führt einen Linter nach Dateibearbeitungen mit `PostToolUse` aus:

533 

534```yaml theme={null}

535---

536name: code-reviewer

537description: Review code changes with automatic linting

538hooks:

539 PreToolUse:

540 - matcher: "Bash"

541 hooks:

542 - type: command

543 command: "./scripts/validate-command.sh $TOOL_INPUT"

544 PostToolUse:

545 - matcher: "Edit|Write"

546 hooks:

547 - type: command

548 command: "./scripts/run-linter.sh"

549---

550```

551 

552Wenn der Agent als Subagent aufgerufen wird, werden `Stop`-Hooks im Frontmatter automatisch in `SubagentStop`-Ereignisse konvertiert.

553 

554#### Hooks auf Projektebene für Subagenten-Ereignisse

555 

556Konfigurieren Sie Hooks in `settings.json`, die auf Subagenten-Lebenszyklus-Ereignisse in der Hauptsitzung reagieren.

557 

558| Ereignis | Matcher-Eingabe | Wann es ausgelöst wird |

559| :-------------- | :-------------- | :------------------------------------------- |

560| `SubagentStart` | Agent-Typname | Wenn ein Subagent mit der Ausführung beginnt |

561| `SubagentStop` | Agent-Typname | Wenn ein Subagent abgeschlossen ist |

562 

563Beide Ereignisse unterstützen Matcher, um bestimmte Agent-Typen nach Name zu adressieren. Dieses Beispiel führt ein Setup-Skript nur aus, wenn der `db-agent`-Subagent startet, und ein Cleanup-Skript, wenn ein beliebiger Subagent stoppt:

564 

565```json theme={null}

566{

567 "hooks": {

568 "SubagentStart": [

569 {

570 "matcher": "db-agent",

571 "hooks": [

572 { "type": "command", "command": "./scripts/setup-db-connection.sh" }

573 ]

574 }

575 ],

576 "SubagentStop": [

577 {

578 "hooks": [

579 { "type": "command", "command": "./scripts/cleanup-db-connection.sh" }

580 ]

581 }

582 ]

583 }

584}

585```

586 

587Siehe [Hooks](/de/hooks) für das vollständige Hook-Konfigurationsformat.

588 

589## Arbeiten Sie mit Subagenten

590 

591### Verstehen Sie automatische Delegation

592 

593Claude delegiert automatisch Aufgaben basierend auf der Aufgabenbeschreibung in Ihrer Anfrage, dem `description`-Feld in Subagenten-Konfigurationen und dem aktuellen Kontext. Um proaktive Delegation zu fördern, fügen Sie Phrasen wie "use proactively" in das `description`-Feld Ihres Subagenten ein.

594 

595### Rufen Sie Subagenten explizit auf

596 

597Wenn automatische Delegation nicht ausreicht, können Sie einen Subagenten selbst anfordern. Drei Muster eskalieren von einem einmaligen Vorschlag zu einem sitzungsweiten Standard:

598 

599* **Natürliche Sprache**: Nennen Sie den Subagenten in Ihrem Prompt; Claude entscheidet, ob delegiert werden soll

600* **@-Erwähnung**: Garantiert, dass der Subagent für eine Aufgabe ausgeführt wird

601* **Sitzungsweit**: Die gesamte Sitzung verwendet den Systemprompt, die Werkzeugbeschränkungen und das Modell dieses Subagenten über das `--agent`-Flag oder die `agent`-Einstellung

602 

603Für natürliche Sprache gibt es keine spezielle Syntax. Nennen Sie den Subagenten und Claude delegiert normalerweise:

604 

605```text theme={null}

606Use the test-runner subagent to fix failing tests

607Have the code-reviewer subagent look at my recent changes

608```

609 

610**@-Erwähnen Sie den Subagenten.** Geben Sie `@` ein und wählen Sie den Subagenten aus der Typeahead-Liste, genauso wie Sie Dateien @-erwähnen. Dies stellt sicher, dass dieser spezifische Subagent ausgeführt wird, anstatt die Wahl Claude zu überlassen:

611 

612```text theme={null}

613@"code-reviewer (agent)" look at the auth changes

614```

615 

616Ihre vollständige Nachricht geht immer noch an Claude, das den Task-Prompt des Subagenten basierend auf Ihrer Anfrage schreibt. Die @-Erwähnung steuert, welcher Subagent Claude aufruft, nicht welchen Prompt er erhält.

617 

618Subagenten, die von einem aktivierten [Plugin](/de/plugins) bereitgestellt werden, erscheinen in der Typeahead-Liste als `<plugin-name>:<agent-name>`. Benannte Hintergrund-Subagenten, die derzeit in der Sitzung ausgeführt werden, erscheinen auch in der Typeahead-Liste und zeigen ihren Status neben dem Namen an. Sie können die Erwähnung auch manuell eingeben, ohne den Picker zu verwenden: `@agent-<name>` für lokale Subagenten oder `@agent-<plugin-name>:<agent-name>` für Plugin-Subagenten.

619 

620**Führen Sie die gesamte Sitzung als Subagent aus.** Übergeben Sie [`--agent <name>`](/de/cli-reference), um eine Sitzung zu starten, in der der Hauptthread selbst den Systemprompt, die Werkzeugbeschränkungen und das Modell dieses Subagenten annimmt:

621 

622```bash theme={null}

623claude --agent code-reviewer

624```

625 

626Der Systemprompt des Subagenten ersetzt den Standard-Claude Code-Systemprompt vollständig, genauso wie [`--system-prompt`](/de/cli-reference) es tut. `CLAUDE.md`-Dateien und Projekt-Memory werden weiterhin durch den normalen Nachrichtenfluss geladen. Der Agent-Name erscheint als `@<name>` in der Startup-Kopfzeile, damit Sie bestätigen können, dass er aktiv ist.

627 

628Dies funktioniert mit integrierten und benutzerdefinierten Subagenten, und die Wahl bleibt bestehen, wenn Sie die Sitzung fortsetzen.

629 

630Für einen von einem Plugin bereitgestellten Subagenten übergeben Sie den scoped Namen: `claude --agent <plugin-name>:<agent-name>`.

631 

632Um es zum Standard für jede Sitzung in einem Projekt zu machen, setzen Sie `agent` in `.claude/settings.json`:

633 

634```json theme={null}

635{

636 "agent": "code-reviewer"

637}

638```

639 

640Das CLI-Flag überschreibt die Einstellung, wenn beide vorhanden sind.

641 

642### Führen Sie Subagenten im Vordergrund oder Hintergrund aus

643 

644Subagenten können im Vordergrund (blockierend) oder Hintergrund (gleichzeitig) ausgeführt werden:

645 

646* **Vordergrund-Subagenten** blockieren die Hauptkonversation bis zur Fertigstellung. Berechtigungsaufforderungen und Klarstellungsfragen (wie [`AskUserQuestion`](/de/tools-reference)) werden an Sie weitergeleitet.

647* **Hintergrund-Subagenten** laufen gleichzeitig, während Sie weiterarbeiten. Vor dem Start fordert Claude Code alle Werkzeugberechtigungen an, die der Subagent benötigt, um sicherzustellen, dass er die erforderlichen Genehmigungen hat. Nach dem Start erbt der Subagent diese Berechtigungen und lehnt automatisch alles ab, was nicht vorab genehmigt wurde. Wenn ein Hintergrund-Subagent Klarstellungsfragen stellen muss, schlägt dieser Werkzeugaufruf fehl, aber der Subagent setzt fort.

648 

649Wenn ein Hintergrund-Subagent aufgrund fehlender Berechtigungen fehlschlägt, können Sie einen neuen Vordergrund-Subagenten mit derselben Aufgabe starten, um es mit interaktiven Aufforderungen erneut zu versuchen.

650 

651Claude entscheidet, ob Subagenten im Vordergrund oder Hintergrund ausgeführt werden, basierend auf der Aufgabe. Sie können auch:

652 

653* Claude bitten, "run this in the background" auszuführen

654* **Ctrl+B** drücken, um eine laufende Aufgabe in den Hintergrund zu verschieben

655 

656Um alle Hintergrund-Aufgaben-Funktionalität zu deaktivieren, setzen Sie die Umgebungsvariable `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` auf `1`. Siehe [Umgebungsvariablen](/de/env-vars).

657 

658Wenn der Fork-Modus aktiviert ist, wird jeder Subagenten-Spawn im Hintergrund ausgeführt, unabhängig vom `background`-Feld. Forks zeigen weiterhin Berechtigungsaufforderungen in Ihrem Terminal an, wenn sie auftreten, anstatt vorab zu genehmigen; benannte Subagenten folgen dem Vorab-Genehmigungsfluss oben.

659 

660### Häufige Muster

661 

662#### Isolieren Sie hochvolumige Operationen

663 

664Eine der effektivsten Verwendungen für Subagenten ist die Isolierung von Operationen, die große Mengen an Ausgaben erzeugen. Das Ausführen von Tests, das Abrufen von Dokumentation oder die Verarbeitung von Protokolldateien kann erheblichen Kontext verbrauchen. Durch die Delegierung an einen Subagenten bleibt die ausführliche Ausgabe im Kontext des Subagenten, während nur die relevante Zusammenfassung zu Ihrer Hauptkonversation zurückkehrt.

665 

666```text theme={null}

667Use a subagent to run the test suite and report only the failing tests with their error messages

668```

669 

670#### Führen Sie parallele Recherche durch

671 

672Für unabhängige Untersuchungen spawnen Sie mehrere Subagenten, um gleichzeitig zu arbeiten:

673 

674```text theme={null}

675Research the authentication, database, and API modules in parallel using separate subagents

676```

677 

678Jeder Subagent erkundet seinen Bereich unabhängig, dann synthetisiert Claude die Erkenntnisse. Dies funktioniert am besten, wenn die Recherchepfade nicht voneinander abhängen.

679 

680<Warning>

681 Wenn Subagenten abgeschlossen sind, kehren ihre Ergebnisse zu Ihrer Hauptkonversation zurück. Das Ausführen vieler Subagenten, die jeweils detaillierte Ergebnisse zurückgeben, kann erheblichen Kontext verbrauchen.

682</Warning>

683 

684Für Aufgaben, die anhaltende Parallelität benötigen oder Ihr Kontextfenster überschreiten, geben [Agent-Teams](/de/agent-teams) jedem Worker seinen eigenen unabhängigen Kontext.

685 

686#### Verketten Sie Subagenten

687 

688Für mehrstufige Workflows bitten Sie Claude, Subagenten nacheinander zu verwenden. Jeder Subagent vervollständigt seine Aufgabe und gibt Ergebnisse an Claude zurück, das dann relevanten Kontext an den nächsten Subagenten übergibt.

689 

690```text theme={null}

691Use the code-reviewer subagent to find performance issues, then use the optimizer subagent to fix them

692```

693 

694### Wählen Sie zwischen Subagenten und Hauptkonversation

695 

696Verwenden Sie die **Hauptkonversation**, wenn:

697 

698* Die Aufgabe häufiges Hin und Her oder iterative Verfeinerung benötigt

699* Mehrere Phasen teilen erheblichen Kontext (Planung → Implementierung → Testen)

700* Sie eine schnelle, gezielte Änderung vornehmen

701* Latenz ist wichtig. Subagenten starten von vorne und benötigen möglicherweise Zeit, um Kontext zu sammeln

702 

703Verwenden Sie **Subagenten**, wenn:

704 

705* Die Aufgabe ausführliche Ausgaben erzeugt, die Sie nicht in Ihrem Hauptkontext benötigen

706* Sie spezifische Werkzeugbeschränkungen oder Berechtigungen durchsetzen möchten

707* Die Arbeit in sich geschlossen ist und eine Zusammenfassung zurückgeben kann

708 

709Erwägen Sie stattdessen [Skills](/de/skills), wenn Sie wiederverwendbare Prompts oder Workflows möchten, die im Kontext der Hauptkonversation ausgeführt werden, anstatt in isoliertem Subagenten-Kontext.

710 

711Für eine schnelle Frage zu etwas, das bereits in Ihrer Konversation ist, verwenden Sie stattdessen [`/btw`](/de/interactive-mode#side-questions-with-%2Fbtw). Es sieht Ihren vollständigen Kontext, hat aber keinen Werkzeugzugriff, und die Antwort wird verworfen, anstatt zur Historie hinzugefügt zu werden.

712 

713<Note>

714 Subagenten können keine anderen Subagenten spawnen. Wenn Ihr Workflow verschachtelte Delegation erfordert, verwenden Sie [Skills](/de/skills) oder [verketten Sie Subagenten](#chain-subagents) von der Hauptkonversation.

715</Note>

716 

717### Verwalten Sie den Subagenten-Kontext

718 

719#### Setzen Sie Subagenten fort

720 

721Jede Subagenten-Invokation erstellt eine neue Instanz mit frischem Kontext. Um die Arbeit eines vorhandenen Subagenten fortzusetzen, anstatt von vorne zu beginnen, bitten Sie Claude, ihn fortzusetzen.

722 

723Fortgesetzte Subagenten behalten ihre vollständige Konversationshistorie, einschließlich aller vorherigen Werkzeugaufrufe, Ergebnisse und Überlegungen. Der Subagent setzt genau dort an, wo er gestoppt hat, anstatt von vorne zu beginnen.

724 

725Wenn ein Subagent abgeschlossen ist, erhält Claude seine Agent-ID. Claude verwendet das `SendMessage`-Werkzeug mit der Agent-ID des Agenten als `to`-Feld, um ihn fortzusetzen. Das `SendMessage`-Werkzeug ist nur verfügbar, wenn [Agent-Teams](/de/agent-teams) über `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` aktiviert sind.

726 

727Um einen Subagenten fortzusetzen, bitten Sie Claude, die vorherige Arbeit fortzusetzen:

728 

729```text theme={null}

730Use the code-reviewer subagent to review the authentication module

731[Agent completes]

732 

733Continue that code review and now analyze the authorization logic

734[Claude resumes the subagent with full context from previous conversation]

735```

736 

737Wenn ein gestoppter Subagent eine `SendMessage` erhält, wird er automatisch im Hintergrund fortgesetzt, ohne dass eine neue `Agent`-Invokation erforderlich ist.

738 

739Sie können Claude auch nach der Agent-ID fragen, wenn Sie sie explizit referenzieren möchten, oder IDs in den Transkriptdateien unter `~/.claude/projects/{project}/{sessionId}/subagents/` finden. Jedes Transkript wird als `agent-{agentId}.jsonl` gespeichert.

740 

741Subagenten-Transkripte bleiben unabhängig von der Hauptkonversation bestehen:

742 

743* **Hauptkonversations-Komprimierung**: Wenn die Hauptkonversation komprimiert wird, sind Subagenten-Transkripte nicht betroffen. Sie werden in separaten Dateien gespeichert.

744* **Sitzungs-Persistenz**: Subagenten-Transkripte bleiben innerhalb ihrer Sitzung bestehen. Sie können [einen Subagenten fortsetzen](#resume-subagents), nachdem Sie Claude Code neu gestartet haben, indem Sie dieselbe Sitzung fortsetzen.

745* **Automatische Bereinigung**: Transkripte werden basierend auf der `cleanupPeriodDays`-Einstellung bereinigt (Standard: 30 Tage).

746 

747#### Auto-Komprimierung

748 

749Subagenten unterstützen automatische Komprimierung mit derselben Logik wie die Hauptkonversation. Standardmäßig wird die Auto-Komprimierung bei ungefähr 95 % Kapazität ausgelöst. Um die Komprimierung früher auszulösen, setzen Sie `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` auf einen niedrigeren Prozentsatz (z. B. `50`). Siehe [Umgebungsvariablen](/de/env-vars) für Details.

750 

751Komprimierungsereignisse werden in Subagenten-Transkriptdateien protokolliert:

752 

753```json theme={null}

754{

755 "type": "system",

756 "subtype": "compact_boundary",

757 "compactMetadata": {

758 "trigger": "auto",

759 "preTokens": 167189

760 }

761}

762```

763 

764Der `preTokens`-Wert zeigt, wie viele Token vor der Komprimierung verwendet wurden.

765 

766## Gegabelte Konversation

767 

768<Note>

769 Gegabelte Subagenten sind experimentell und erfordern Claude Code v2.1.117 oder später. Das Verhalten und die Konfiguration können sich in zukünftigen Versionen ändern. Aktivieren Sie sie, indem Sie die Umgebungsvariable [`CLAUDE_CODE_FORK_SUBAGENT`](/de/env-vars) auf `1` setzen. Die Variable wird im interaktiven Modus und über das SDK oder `claude -p` berücksichtigt.

770</Note>

771 

772Ein Fork ist ein Subagent, der die gesamte bisherige Konversation erbt, anstatt von vorne zu beginnen. Dies lässt die Eingabe-Isolierung fallen, die Subagenten ansonsten bieten: Ein Fork sieht denselben Systemprompt, dieselben Werkzeuge, dasselbe Modell und die Nachrichtenhistorie wie die Hauptsitzung, sodass Sie ihm eine Nebenaufgabe übergeben können, ohne die Situation erneut zu erklären. Die eigenen Werkzeugaufrufe des Forks bleiben weiterhin aus Ihrer Konversation heraus und nur sein endgültiges Ergebnis kommt zurück, sodass Ihr Hauptkontextfenster sauber bleibt. Verwenden Sie einen Fork, wenn ein benannter Subagent zu viel Hintergrund benötigen würde, um nützlich zu sein, oder wenn Sie mehrere Ansätze parallel vom gleichen Ausgangspunkt aus versuchen möchten.

773 

774Die Aktivierung des Fork-Modus ändert Claude Code auf drei Arten:

775 

776* Claude spawnt einen Fork, wann immer es sonst den [allgemeinen](#built-in-subagents)-Subagenten verwenden würde. Benannte Subagenten wie Explore werden weiterhin wie zuvor gespawnt.

777* Jeder Subagenten-Spawn wird im [Hintergrund](#run-subagents-in-foreground-or-background) ausgeführt, unabhängig davon, ob es sich um einen Fork oder einen benannten Subagenten handelt. Setzen Sie `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` auf `1`, um Spawns synchron zu halten.

778* Der `/fork`-Befehl spawnt einen Fork, anstatt als Alias für [`/branch`](/de/commands) zu fungieren.

779 

780Sie können einen Fork selbst mit `/fork` gefolgt von einer Direktive starten. Claude Code benennt den Fork aus den ersten Worten der Direktive. Das folgende Beispiel gabelt die Konversation, um Testfälle zu entwerfen, während Sie mit der Implementierung in der Hauptsitzung fortfahren:

781 

782```text theme={null}

783/fork draft unit tests for the parser changes so far

784```

785 

786Der Fork erscheint in einem Panel unter Ihrer Eingabeaufforderung und läuft im Hintergrund, während Sie weiterarbeiten. Wenn er fertig ist, kommt sein Ergebnis als Nachricht in Ihrer Hauptkonversation an. Der nächste Abschnitt behandelt die Panel-Steuerelemente zum Beobachten und Lenken von Forks während ihrer Ausführung.

787 

788### Beobachten und lenken Sie laufende Forks

789 

790Laufende Forks erscheinen in einem Panel unter der Eingabeaufforderung, mit einer Zeile für die Hauptsitzung und einer für jeden Fork. Verwenden Sie diese Tasten, um mit dem Panel zu interagieren:

791 

792| Taste | Aktion |

793| :-------- | :------------------------------------------------------------------------------ |

794| `↑` / `↓` | Zwischen Zeilen wechseln |

795| `Enter` | Öffnen Sie das Transkript des ausgewählten Forks und senden Sie ihm Folgefragen |

796| `x` | Schließen Sie einen fertigen Fork oder stoppen Sie einen laufenden |

797| `Esc` | Fokus zurück zur Eingabeaufforderung |

798 

799### Wie sich Forks von benannten Subagenten unterscheiden

800 

801Ein Fork erbt alles, was die Hauptsitzung zum Zeitpunkt des Spawnens hat. Ein benannter Subagent startet von seiner eigenen Definition.

802 

803| | Fork | Benannter Subagent |

804| :------------------------- | :------------------------------------------ | :------------------------------------------------------------------------------------------------------ |

805| Kontext | Vollständige Konversationshistorie | Frischer Kontext mit dem Prompt, den Sie übergeben |

806| Systemprompt und Werkzeuge | Gleich wie Hauptsitzung | Aus der [Definitionsdatei](#write-subagent-files) des Subagenten |

807| Modell | Gleich wie Hauptsitzung | Aus dem `model`-Feld des Subagenten |

808| Berechtigungen | Aufforderungen erscheinen in Ihrem Terminal | [Vorab genehmigt](#run-subagents-in-foreground-or-background) vor dem Start, dann automatisch abgelehnt |

809| Prompt-Cache | Mit Hauptsitzung geteilt | Separater Cache |

810 

811Da der Systemprompt und die Werkzeugdefinitionen eines Forks identisch mit dem übergeordneten Element sind, wird seine erste Anfrage den Prompt-Cache des übergeordneten Elements wiederverwenden. Dies macht das Forking billiger als das Spawnen eines frischen Subagenten für Aufgaben, die denselben Kontext benötigen.

812 

813Wenn Claude einen Fork durch das Agent-Werkzeug spawnt, kann es `isolation: "worktree"` übergeben, sodass die Dateibearbeitungen des Forks in einen separaten Git-Worktree geschrieben werden, anstatt in Ihren Checkout.

814 

815### Einschränkungen

816 

817Das Setzen von `CLAUDE_CODE_FORK_SUBAGENT=1` aktiviert den Fork-Modus in interaktiven Sitzungen, im [nicht-interaktiven Modus](/de/headless) und im Agent SDK. Ein Fork kann keine weiteren Forks spawnen.

818 

819## Beispiel-Subagenten

820 

821Diese Beispiele demonstrieren effektive Muster für die Erstellung von Subagenten. Verwenden Sie sie als Ausgangspunkte oder generieren Sie eine angepasste Version mit Claude.

822 

823<Tip>

824 **Best Practices:**

825 

826 * **Entwerfen Sie fokussierte Subagenten:** Jeder Subagent sollte bei einer spezifischen Aufgabe hervorragend sein

827 * **Schreiben Sie detaillierte Beschreibungen:** Claude verwendet die Beschreibung, um zu entscheiden, wann delegiert werden soll

828 * **Begrenzen Sie den Werkzeugzugriff:** Gewähren Sie nur notwendige Berechtigungen für Sicherheit und Fokus

829 * **Checken Sie in die Versionskontrolle ein:** Teilen Sie Projekt-Subagenten mit Ihrem Team

830</Tip>

831 

832### Code-Reviewer

833 

834Ein schreibgeschützter Subagent, der Code überprüft, ohne ihn zu ändern. Dieses Beispiel zeigt, wie man einen fokussierten Subagenten mit begrenztem Werkzeugzugriff (kein Edit oder Write) und einem detaillierten Prompt entwirft, der genau angibt, worauf zu achten ist und wie die Ausgabe formatiert wird.

835 

836```markdown theme={null}

837---

838name: code-reviewer

839description: Expert code review specialist. Proactively reviews code for quality, security, and maintainability. Use immediately after writing or modifying code.

840tools: Read, Grep, Glob, Bash

841model: inherit

842---

843 

844You are a senior code reviewer ensuring high standards of code quality and security.

845 

846When invoked:

8471. Run git diff to see recent changes

8482. Focus on modified files

8493. Begin review immediately

850 

851Review checklist:

852- Code is clear and readable

853- Functions and variables are well-named

854- No duplicated code

855- Proper error handling

856- No exposed secrets or API keys

857- Input validation implemented

858- Good test coverage

859- Performance considerations addressed

860 

861Provide feedback organized by priority:

862- Critical issues (must fix)

863- Warnings (should fix)

864- Suggestions (consider improving)

865 

866Include specific examples of how to fix issues.

867```

868 

869### Debugger

870 

871Ein Subagent, der sowohl Probleme analysieren als auch beheben kann. Im Gegensatz zum Code-Reviewer enthält dieser Edit, da das Beheben von Bugs die Änderung von Code erfordert. Der Prompt bietet einen klaren Workflow von der Diagnose zur Verifizierung.

872 

873```markdown theme={null}

874---

875name: debugger

876description: Debugging specialist for errors, test failures, and unexpected behavior. Use proactively when encountering any issues.

877tools: Read, Edit, Bash, Grep, Glob

878---

879 

880You are an expert debugger specializing in root cause analysis.

881 

882When invoked:

8831. Capture error message and stack trace

8842. Identify reproduction steps

8853. Isolate the failure location

8864. Implement minimal fix

8875. Verify solution works

888 

889Debugging process:

890- Analyze error messages and logs

891- Check recent code changes

892- Form and test hypotheses

893- Add strategic debug logging

894- Inspect variable states

895 

896For each issue, provide:

897- Root cause explanation

898- Evidence supporting the diagnosis

899- Specific code fix

900- Testing approach

901- Prevention recommendations

902 

903Focus on fixing the underlying issue, not the symptoms.

904```

905 

906### Data Scientist

907 

908Ein domänenspezifischer Subagent für Datenanalyse-Arbeiten. Dieses Beispiel zeigt, wie man Subagenten für spezialisierte Workflows außerhalb typischer Coding-Aufgaben erstellt. Es setzt explizit `model: sonnet` für fähigere Analysen.

909 

910```markdown theme={null}

911---

912name: data-scientist

913description: Data analysis expert for SQL queries, BigQuery operations, and data insights. Use proactively for data analysis tasks and queries.

914tools: Bash, Read, Write

915model: sonnet

916---

917 

918You are a data scientist specializing in SQL and BigQuery analysis.

919 

920When invoked:

9211. Understand the data analysis requirement

9222. Write efficient SQL queries

9233. Use BigQuery command line tools (bq) when appropriate

9244. Analyze and summarize results

9255. Present findings clearly

926 

927Key practices:

928- Write optimized SQL queries with proper filters

929- Use appropriate aggregations and joins

930- Include comments explaining complex logic

931- Format results for readability

932- Provide data-driven recommendations

933 

934For each analysis:

935- Explain the query approach

936- Document any assumptions

937- Highlight key findings

938- Suggest next steps based on data

939 

940Always ensure queries are efficient and cost-effective.

941```

942 

943### Datenbankabfrage-Validator

944 

945Ein Subagent, der Bash-Zugriff zulässt, aber Befehle validiert, um nur schreibgeschützte SQL-Abfragen zu ermöglichen. Dieses Beispiel zeigt, wie man `PreToolUse`-Hooks für bedingte Validierung verwendet, wenn Sie feinere Kontrolle benötigen, als das `tools`-Feld bietet.

946 

947```markdown theme={null}

948---

949name: db-reader

950description: Execute read-only database queries. Use when analyzing data or generating reports.

951tools: Bash

952hooks:

953 PreToolUse:

954 - matcher: "Bash"

955 hooks:

956 - type: command

957 command: "./scripts/validate-readonly-query.sh"

958---

959 

960You are a database analyst with read-only access. Execute SELECT queries to answer questions about the data.

961 

962When asked to analyze data:

9631. Identify which tables contain the relevant data

9642. Write efficient SELECT queries with appropriate filters

9653. Present results clearly with context

966 

967You cannot modify data. If asked to INSERT, UPDATE, DELETE, or modify schema, explain that you only have read access.

968```

969 

970Claude Code [übergibt Hook-Eingabe als JSON](/de/hooks#pretooluse-input) über stdin an Hook-Befehle. Das Validierungsskript liest dieses JSON, extrahiert den auszuführenden Befehl und prüft ihn gegen eine Liste von SQL-Schreibvorgängen. Wenn ein Schreibvorgang erkannt wird, [beendet das Skript mit Code 2](/de/hooks#exit-code-2-behavior-per-event), um die Ausführung zu blockieren, und gibt eine Fehlermeldung an Claude über stderr zurück.

971 

972Erstellen Sie das Validierungsskript überall in Ihrem Projekt. Der Pfad muss dem `command`-Feld in Ihrer Hook-Konfiguration entsprechen:

973 

974```bash theme={null}

975#!/bin/bash

976# Blocks SQL write operations, allows SELECT queries

977 

978# Read JSON input from stdin

979INPUT=$(cat)

980 

981# Extract the command field from tool_input using jq

982COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')

983 

984if [ -z "$COMMAND" ]; then

985 exit 0

986fi

987 

988# Block write operations (case-insensitive)

989if echo "$COMMAND" | grep -iE '\b(INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|TRUNCATE|REPLACE|MERGE)\b' > /dev/null; then

990 echo "Blocked: Write operations not allowed. Use SELECT queries only." >&2

991 exit 2

992fi

993 

994exit 0

995```

996 

997Machen Sie das Skript ausführbar:

998 

999```bash theme={null}

1000chmod +x ./scripts/validate-readonly-query.sh

1001```

1002 

1003Der Hook empfängt JSON über stdin mit dem Bash-Befehl in `tool_input.command`. Exit-Code 2 blockiert die Operation und leitet die Fehlermeldung an Claude weiter. Siehe [Hooks](/de/hooks#exit-code-output) für Details zu Exit-Codes und [Hook-Eingabe](/de/hooks#pretooluse-input) für das vollständige Eingabeschema.

1004 

1005## Nächste Schritte

1006 

1007Jetzt, da Sie Subagenten verstehen, erkunden Sie diese verwandten Funktionen:

1008 

1009* [Verteilen Sie Subagenten mit Plugins](/de/plugins), um Subagenten über Teams oder Projekte hinweg zu teilen

1010* [Führen Sie Claude Code programmgesteuert aus](/de/headless) mit dem Agent SDK für CI/CD und Automatisierung

1011* [Verwenden Sie MCP-Server](/de/mcp), um Subagenten Zugriff auf externe Werkzeuge und Daten zu geben

terminal-config.md +307 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Konfigurieren Sie Ihr Terminal für Claude Code

6 

7> Beheben Sie Shift+Enter für Zeilenumbrüche, erhalten Sie einen Terminalton, wenn Claude fertig ist, konfigurieren Sie tmux, passen Sie das Farbschema an, und aktivieren Sie den Vim-Modus in der Claude Code CLI.

8 

9Claude Code funktioniert in jedem Terminal ohne Konfiguration. Diese Seite ist für den Fall, dass etwas nicht so funktioniert, wie Sie es erwarten. Finden Sie Ihr Symptom unten. Wenn alles bereits richtig funktioniert, benötigen Sie diese Seite nicht.

10 

11* [Shift+Enter sendet statt einen Zeilenumbruch einzufügen](#enter-multiline-prompts)

12* [Option-Taste-Verknüpfungen funktionieren nicht auf macOS](#enable-option-key-shortcuts-on-macos)

13* [Kein Ton oder Benachrichtigung, wenn Claude fertig ist](#get-a-terminal-bell-or-notification)

14* [Sie führen Claude Code in tmux aus](#configure-tmux)

15* [Die Anzeige flimmert oder die Scrollposition springt](#switch-to-fullscreen-rendering)

16* [Sie möchten Vim-Tasten in der Eingabeaufforderung](#edit-prompts-with-vim-keybindings)

17 

18Diese Seite behandelt das Konfigurieren Ihres Terminals, um die richtigen Signale an Claude Code zu senden. Um zu ändern, auf welche Tasten Claude Code selbst reagiert, siehe stattdessen [Tastenbelegungen](/de/keybindings).

19 

20## Mehrzeilige Eingabeaufforderungen eingeben

21 

22Durch Drücken von Enter wird Ihre Nachricht gesendet. Um einen Zeilenumbruch ohne Absenden hinzuzufügen, drücken Sie Ctrl+J, oder geben Sie `\` ein und drücken dann Enter. Beide funktionieren in jedem Terminal ohne Setup.

23 

24In den meisten Terminals können Sie auch Shift+Enter drücken, aber die Unterstützung variiert je nach Terminal-Emulator:

25 

26| Terminal | Shift+Enter für Zeilenumbruch |

27| :------------------------------------------------------------------------------ | :-------------------------------------------------------- |

28| Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal | Funktioniert ohne Setup |

29| VS Code, Cursor, Windsurf, Alacritty, Zed | Führen Sie `/terminal-setup` einmal aus |

30| Windows Terminal, gnome-terminal, JetBrains IDEs wie PyCharm und Android Studio | Nicht verfügbar; verwenden Sie Ctrl+J oder `\` dann Enter |

31 

32Für VS Code, Cursor, Windsurf, Alacritty und Zed schreibt `/terminal-setup` Shift+Enter und andere Tastenbelegungen in die Konfigurationsdatei des Terminals. In VS Code, Cursor und Windsurf wird auch `terminal.integrated.mouseWheelScrollSensitivity` in den Editor-Einstellungen für sanfteres Scrollen im [Vollbildmodus](/de/fullscreen) gesetzt. Vorhandene Bindungen und Einstellungen bleiben erhalten; wenn Sie eine Meldung wie `VSCode terminal Shift+Enter key binding already configured` sehen, wurde keine Änderung vorgenommen. Führen Sie `/terminal-setup` direkt im Host-Terminal aus, nicht in tmux oder screen, da es in die Konfiguration des Host-Terminals schreiben muss.

33 

34Wenn Sie in tmux ausgeführt werden, erfordert Shift+Enter auch die [tmux-Konfiguration unten](#configure-tmux), selbst wenn das äußere Terminal es unterstützt.

35 

36Um Zeilenumbruch an eine andere Taste zu binden oder das Verhalten zu tauschen, sodass Enter einen Zeilenumbruch einfügt und Shift+Enter sendet, ordnen Sie die Aktionen `chat:newline` und `chat:submit` in Ihrer [Tastenbelegungsdatei](/de/keybindings) zu.

37 

38## Aktivieren Sie Option-Taste-Verknüpfungen auf macOS

39 

40Einige Claude Code-Verknüpfungen verwenden die Option-Taste, z. B. Option+Enter für einen Zeilenumbruch oder Option+P zum Wechsel von Modellen. Auf macOS senden die meisten Terminals die Option-Taste standardmäßig nicht als Modifizierer, daher funktionieren diese Verknüpfungen nicht, bis Sie sie aktivieren. Die Terminal-Einstellung dafür wird normalerweise als „Option als Meta-Taste verwenden" bezeichnet; Meta ist der historische Unix-Name für die Taste, die jetzt Option oder Alt genannt wird.

41 

42<Tabs>

43 <Tab title="Apple Terminal">

44 Öffnen Sie Einstellungen → Profile → Tastatur und aktivieren Sie 'Option als Meta-Taste verwenden".

45 

46 Wenn Sie die erste Eingabeaufforderung von Claude Code akzeptiert haben, die „Option+Enter für Zeilenumbrüche und visuellen Ton" angeboten hat, ist dies bereits erledigt. Diese Eingabeaufforderung führt `/terminal-setup` für Sie aus, das Option als Meta aktiviert und den Audioton auf einen visuellen Bildschirmblitz in Ihrem Apple Terminal-Profil umschaltet.

47 </Tab>

48 

49 <Tab title="iTerm2">

50 Öffnen Sie Einstellungen → Profile → Tasten → Allgemein und stellen Sie die linke Option-Taste und die rechte Option-Taste auf 'Esc+" ein.

51 

52 Das Ausführen von `/terminal-setup` in iTerm2 aktiviert „Anwendungen im Terminal können auf die Zwischenablage zugreifen" unter Einstellungen → Allgemein → Auswahl, damit der Befehl `/copy` in Ihre Systemzwischenablage schreiben kann. Der Befehl erkennt iTerm2 auch, wenn er von innerhalb von tmux ausgeführt wird. Starten Sie iTerm2 neu, damit die Änderung wirksam wird.

53 </Tab>

54 

55 <Tab title="VS Code">

56 Fügen Sie `"terminal.integrated.macOptionIsMeta": true` zu Ihren VS Code-Einstellungen hinzu.

57 </Tab>

58</Tabs>

59 

60Für Ghostty, Kitty und andere Terminals suchen Sie nach einer Option-als-Alt- oder Option-als-Meta-Einstellung in der Konfigurationsdatei des Terminals.

61 

62## Erhalten Sie einen Terminalton oder eine Benachrichtigung

63 

64Wenn Claude eine Aufgabe abschließt oder bei einer Berechtigungsaufforderung pausiert, wird ein Benachrichtigungsereignis ausgelöst. Wenn Sie dies als Terminalton oder Desktop-Benachrichtigung anzeigen, können Sie zu anderen Arbeiten wechseln, während eine lange Aufgabe ausgeführt wird.

65 

66Standardmäßig sendet Claude Code eine Desktop-Benachrichtigung nur in Ghostty, Kitty und iTerm2. In anderen Terminals setzen Sie [`preferredNotifChannel`](/de/settings#available-settings) auf `"terminal_bell"`, um stattdessen den Terminalton zu aktivieren, oder konfigurieren Sie einen [Benachrichtigungshook](#play-a-sound-with-a-notification-hook) für einen benutzerdefinierten Ton oder Befehl.

67 

68Die Desktop-Benachrichtigung erreicht Ihren lokalen Computer über SSH, sodass eine Remote-Sitzung Sie immer noch benachrichtigen kann. Ghostty und Kitty leiten sie ohne weitere Einrichtung an Ihr Betriebssystem-Benachrichtigungscenter weiter. iTerm2 erfordert, dass Sie die Weiterleitung aktivieren:

69 

70<Steps>

71 <Step title="Öffnen Sie iTerm2-Benachrichtigungseinstellungen">

72 Gehen Sie zu Einstellungen → Profile → Terminal.

73 </Step>

74 

75 <Step title="Aktivieren Sie Benachrichtigungen">

76 Aktivieren Sie „Notification Center Alerts", klicken Sie dann auf „Filter Alerts" und aktivieren Sie „Send escape sequence-generated alerts".

77 </Step>

78</Steps>

79 

80Wenn Benachrichtigungen immer noch nicht angezeigt werden, bestätigen Sie, dass Ihre Terminalanwendung in Ihren Betriebssystemeinstellungen Benachrichtigungsberechtigung hat, und wenn Sie in tmux ausgeführt werden, [aktivieren Sie Passthrough](#configure-tmux).

81 

82### Spielen Sie einen Ton mit einem Benachrichtigungshook ab

83 

84In jedem Terminal können Sie einen [Benachrichtigungshook](/de/hooks-guide#get-notified-when-claude-needs-input) konfigurieren, um einen Ton abzuspielen oder einen benutzerdefinierten Befehl auszuführen, wenn Claude Ihre Aufmerksamkeit benötigt. Hooks werden neben der Desktop-Benachrichtigung ausgeführt, nicht als Ersatz, sodass Terminals, die keine Desktop-Benachrichtigung erhalten, wie Warp oder das in VS Code integrierte Terminal, einen Hook verwenden oder `preferredNotifChannel` stattdessen auf `"terminal_bell"` setzen können.

85 

86Das folgende Beispiel spielt einen Systemton auf macOS ab. Der verlinkte Leitfaden enthält Desktop-Benachrichtigungsbefehle für macOS, Linux und Windows.

87 

88```json ~/.claude/settings.json theme={null}

89{

90 "hooks": {

91 "Notification": [

92 {

93 "hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]

94 }

95 ]

96 }

97}

98```

99 

100## Konfigurieren Sie tmux

101 

102Wenn Claude Code in tmux ausgeführt wird, brechen zwei Dinge standardmäßig: Shift+Enter sendet statt einen Zeilenumbruch einzufügen, und Desktop-Benachrichtigungen und die [Fortschrittsleiste](/de/settings#available-settings) erreichen niemals das äußere Terminal. Fügen Sie diese Zeilen zu `~/.tmux.conf` hinzu und führen Sie dann `tmux source-file ~/.tmux.conf` aus, um sie auf den laufenden Server anzuwenden:

103 

104```bash ~/.tmux.conf theme={null}

105set -g allow-passthrough on

106set -s extended-keys on

107set -as terminal-features 'xterm*:extkeys'

108```

109 

110Die `allow-passthrough`-Zeile ermöglicht es, dass Benachrichtigungen und Fortschrittsaktualisierungen iTerm2, Ghostty oder Kitty erreichen, anstatt von tmux verschluckt zu werden. Die `extended-keys`-Zeilen ermöglichen es tmux, Shift+Enter von einfachem Enter zu unterscheiden, sodass die Zeilenumbruch-Verknüpfung funktioniert.

111 

112## Passen Sie das Farbschema an

113 

114Verwenden Sie den Befehl `/theme` oder die Designauswahl in `/config`, um ein Claude Code-Design auszuwählen, das Ihrem Terminal entspricht. Wenn Sie die Auto-Option auswählen, wird der helle oder dunkle Hintergrund Ihres Terminals erkannt, sodass das Design den Änderungen des Betriebssystem-Erscheinungsbilds folgt, wenn Ihr Terminal dies tut. Claude Code steuert nicht das Farbschema des Terminals selbst, das von der Terminalanwendung festgelegt wird.

115 

116Um anzupassen, was am unteren Rand der Benutzeroberfläche angezeigt wird, konfigurieren Sie eine [benutzerdefinierte Statuszeile](/de/statusline), die das aktuelle Modell, das Arbeitsverzeichnis, den Git-Branch oder andere Kontextinformationen anzeigt.

117 

118### Erstellen Sie ein benutzerdefiniertes Design

119 

120<Note>

121 Benutzerdefinierte Designs erfordern Claude Code v2.1.118 oder später.

122</Note>

123 

124Zusätzlich zu den integrierten Voreinstellungen listet `/theme` alle benutzerdefinierten Designs auf, die Sie definiert haben, sowie alle Designs, die von installierten [Plugins](/de/plugins-reference#themes) beigetragen wurden. Wählen Sie **Neues benutzerdefiniertes Design…** am Ende der Liste aus, um eines interaktiv zu erstellen: Sie benennen das Design und wählen dann einzelne Farbtoken aus, um sie zu überschreiben. Drücken Sie `Ctrl+E`, während ein benutzerdefiniertes Design hervorgehoben ist, um es zu bearbeiten.

125 

126Jedes benutzerdefinierte Design ist eine JSON-Datei in `~/.claude/themes/`. Der Dateiname ohne die `.json`-Erweiterung ist der Slug des Designs, und das Auswählen des Designs speichert `custom:<slug>` als Ihre Design-Einstellung. Die Datei hat drei optionale Felder:

127 

128| Feld | Typ | Beschreibung |

129| :---------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

130| `name` | string | Anzeigebezeichnung in `/theme`. Standardmäßig der Dateiname-Slug |

131| `base` | string | Integrierte Voreinstellung, von der das Design ausgeht: `dark`, `light`, `dark-daltonized`, `light-daltonized`, `dark-ansi` oder `light-ansi`. Standardmäßig `dark` |

132| `overrides` | object | Zuordnung von Farbtoken-Namen zu Farbwerten. Token, die hier nicht aufgelistet sind, fallen auf die Basisvoreinstellung zurück |

133 

134Farbwerte akzeptieren `#rrggbb`, `#rgb`, `rgb(r,g,b)`, `ansi256(n)` oder `ansi:<name>`, wobei `<name>` einer der 16 standardmäßigen ANSI-Farbnamen wie `red` oder `cyanBright` ist. Unbekannte Token und ungültige Farbwerte werden ignoriert, sodass ein Tippfehler das Rendering nicht beschädigen kann.

135 

136Das folgende Beispiel definiert ein Design, das die dunkle Voreinstellung beibehält, aber die Eingabeaufforderungs-Akzentfarbe, Fehlertext und Erfolgstexte umfärbt:

137 

138```json ~/.claude/themes/dracula.json theme={null}

139{

140 "name": "Dracula",

141 "base": "dark",

142 "overrides": {

143 "claude": "#bd93f9",

144 "error": "#ff5555",

145 "success": "#50fa7b"

146 }

147}

148```

149 

150Claude Code überwacht `~/.claude/themes/` und lädt neu, wenn sich eine Datei ändert, sodass Änderungen, die in Ihrem Editor vorgenommen werden, auf eine laufende Sitzung angewendet werden, ohne dass ein Neustart erforderlich ist.

151 

152Die Referenz unten behandelt die Token, die Sie in `overrides` festlegen können. Der interaktive Editor in `/theme` zeigt die gleichen Token mit einer Live-Vorschau an, plus einige wenige Einzelzweck-Akzente wie Onboarding-Bildschirmfarben, die hier weggelassen sind.

153 

154<Accordion title="Farbtoken-Referenz">

155 Das folgende Beispiel kombiniert Token aus mehreren der folgenden Gruppen: der Brand-Akzent, der Plan Mode-Rahmen, die Diff-Hintergründe und der Vollbildmeldungs-Hintergrund.

156 

157 ```json ~/.claude/themes/midnight.json theme={null}

158 {

159 "name": "Midnight",

160 "base": "dark",

161 "overrides": {

162 "claude": "#a78bfa",

163 "planMode": "#38bdf8",

164 "diffAdded": "#14532d",

165 "diffRemoved": "#7f1d1d",

166 "userMessageBackground": "#1e1b4b"

167 }

168 }

169 ```

170 

171 #### Text- und Akzentfarben

172 

173 Steuern Sie den primären Brand-Akzent und die Vordergrund-Textschattierungen, die in der gesamten Benutzeroberfläche verwendet werden.

174 

175 | Token | Steuert |

176 | :------------ | :------------------------------------------------------------------------------- |

177 | `claude` | Primärer Brand-Akzent, verwendet für den Spinner und die Assistenten-Bezeichnung |

178 | `text` | Standard-Vordergrundtext |

179 | `inverseText` | Text, der auf einem farbigen Hintergrund gezeichnet wird, z. B. Statusabzeichen |

180 | `inactive` | Sekundärer Text wie Hinweise, Zeitstempel und deaktivierte Elemente |

181 | `subtle` | Schwache Rahmen und de-betonte sekundäre Texte |

182 | `suggestion` | Autovervollständigungs-Vorschläge und Auswahlhervorhebung in Auswahlfeldern |

183 | `permission` | Dialograhmen, einschließlich Berechtigungsaufforderungen und Auswahlfelder |

184 | `remember` | Speicher- und `CLAUDE.md`-Indikatoren |

185 

186 #### Statusfarben

187 

188 Signalisieren Sie Erfolgs-, Fehler- und Warnzustände über Meldungen und Indikatoren.

189 

190 | Token | Steuert |

191 | :-------- | :----------------------------------------------------- |

192 | `success` | Erfolgsmeldungen und bestandene Überprüfungen |

193 | `error` | Fehlermeldungen und Fehler |

194 | `warning` | Warnungen, Vorsichtsmeldungen und der Auto Mode-Rahmen |

195 | `merged` | Zusammengeführter Pull Request-Status |

196 

197 #### Eingabefeld und Modusindikatoren

198 

199 Legen Sie die Eingabefeld-Rahmenfarbe und den Akzent fest, der angezeigt wird, während ein Berechtigungsmodus oder Indikator aktiv ist.

200 

201 | Token | Steuert |

202 | :------------- | :------------------------------------------------------- |

203 | `promptBorder` | Eingabefeld-Rahmen im Standard-Berechtigungsmodus |

204 | `planMode` | Plan Mode-Akzent und Rahmen |

205 | `autoAccept` | Accept-edits Mode-Akzent und Rahmen |

206 | `bashBorder` | Eingabefeld-Rahmen beim Eingeben eines `!` Shell-Befehls |

207 | `ide` | IDE-Verbindungsindikator |

208 | `fastMode` | Fast Mode-Indikator |

209 

210 #### Diff-Rendering

211 

212 Färben Sie hinzugefügte und entfernte Code in Dateibearbeitungen und Überprüfungen.

213 

214 | Token | Steuert |

215 | :------------------ | :---------------------------------------------------------------------- |

216 | `diffAdded` | Hintergrund hinzugefügter Zeilen |

217 | `diffRemoved` | Hintergrund entfernter Zeilen |

218 | `diffAddedDimmed` | Hintergrund des unveränderten Kontexts in der Nähe hinzugefügter Zeilen |

219 | `diffRemovedDimmed` | Hintergrund des unveränderten Kontexts in der Nähe entfernter Zeilen |

220 | `diffAddedWord` | Hervorhebung auf Wortebene innerhalb einer hinzugefügten Zeile |

221 | `diffRemovedWord` | Hervorhebung auf Wortebene innerhalb einer entfernten Zeile |

222 

223 #### Vollbildmodus

224 

225 Gilt nur im [Vollbild-Rendering-Modus](/de/fullscreen), in dem Meldungen einen Hintergrund-Füllung haben.

226 

227 | Token | Steuert |

228 | :--------------------------- | :---------------------------------------------------------------------------- |

229 | `userMessageBackground` | Hintergrund hinter Ihren Meldungen im Transkript |

230 | `userMessageBackgroundHover` | Hintergrund hinter einer Meldung beim Hovern oder Erweitern |

231 | `messageActionsBackground` | Hintergrund hinter der ausgewählten Meldung, wenn die Aktionsleiste offen ist |

232 | `bashMessageBackgroundColor` | Hintergrund hinter `!` Shell-Befehls-Einträgen im Transkript |

233 | `memoryBackgroundColor` | Hintergrund hinter `#` Speicher-Einträgen im Transkript |

234 | `selectionBg` | Hintergrund von Text, der mit der Maus ausgewählt wurde |

235 

236 #### Nutzungsmesser und Sprecherbeschriftungen

237 

238 Passen Sie die Leiste an, die in der `/usage`-Ansicht angezeigt wird, und die Beschriftungen, die Ihre Meldungen von Claudes unterscheiden.

239 

240 | Token | Steuert |

241 | :----------------- | :-------------------------------------------------------- |

242 | `rate_limit_fill` | Gefüllter Teil des Nutzungsmessers |

243 | `rate_limit_empty` | Ungefüllter Teil des Nutzungsmessers |

244 | `briefLabelYou` | Farbe der `You`-Beschriftung auf Ihren Meldungen |

245 | `briefLabelClaude` | Farbe der `Claude`-Beschriftung auf Assistenten-Meldungen |

246 

247 #### Shimmer-Varianten und Subagent-Farben

248 

249 Mehrere Token haben eine gepaarte Shimmer-Variante, die die hellere Farbe liefert, die im animierten Farbverlauf des Spinners verwendet wird. Überschreiben Sie den Shimmer zusammen mit seinem Basis-Token, wenn die Animation nicht übereinstimmend aussieht.

250 

251 * `claude` und `claudeShimmer`

252 * `warning` und `warningShimmer`

253 * `permission` und `permissionShimmer`

254 * `promptBorder` und `promptBorderShimmer`

255 * `inactive` und `inactiveShimmer`

256 * `fastMode` und `fastModeShimmer`

257 

258 Jeder [Subagent](/de/sub-agents) und jede parallele Aufgabe wird in einer von acht benannten Farben angezeigt, damit Sie sie im Transkript unterscheiden können. Die Token-Namen folgen dem Muster `<color>_FOR_SUBAGENTS_ONLY`, wobei `<color>` `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink` oder `cyan` ist. Überschreiben Sie diese, um zu ändern, wie jede benannte Farbe aussieht. Beispielsweise wird ein Subagent mit `color: blue` in seiner Definition mit dem Wert `blue_FOR_SUBAGENTS_ONLY` gezeichnet.

259 

260 Das Schlüsselwort [`ultrathink`](/de/model-config#use-ultrathink-for-one-off-deep-reasoning) und [`ultraplan`](/de/ultraplan) in der Eingabeaufforderung werden mit einem siebenfarbigen Regenbogenfarbverlauf gerendert. Die Token-Namen folgen dem Muster `rainbow_<color>` und `rainbow_<color>_shimmer`, wobei `<color>` `red`, `orange`, `yellow`, `green`, `blue`, `indigo` oder `violet` ist.

261</Accordion>

262 

263## Wechseln Sie zum Vollbildrendering

264 

265Wenn die Anzeige flimmert oder die Scrollposition springt, während Claude arbeitet, wechseln Sie zum [Vollbildrendering-Modus](/de/fullscreen). Es zeichnet auf einen separaten Bildschirm, den das Terminal für Vollbild-Apps reserviert, anstatt an Ihren normalen Scrollback anzuhängen, was die Speichernutzung flach hält und Mausunterstützung zum Scrollen und Auswählen hinzufügt. In diesem Modus scrollen Sie mit der Maus oder PageUp in Claude Code, nicht mit dem nativen Scrollback Ihres Terminals; siehe die [Vollbildseite](/de/fullscreen#search-and-review-the-conversation) für die Suche und das Kopieren.

266 

267Führen Sie `/tui fullscreen` aus, um in der aktuellen Sitzung mit Ihrem Gespräch intakt zu wechseln. Um es zur Standardeinstellung zu machen, setzen Sie die Umgebungsvariable `CLAUDE_CODE_NO_FLICKER`, bevor Sie Claude Code starten:

268 

269<CodeGroup>

270 ```bash Bash and Zsh theme={null}

271 CLAUDE_CODE_NO_FLICKER=1 claude

272 ```

273 

274 ```powershell PowerShell theme={null}

275 $env:CLAUDE_CODE_NO_FLICKER = "1"; claude

276 ```

277 

278 ```json ~/.claude/settings.json theme={null}

279 {

280 "env": {

281 "CLAUDE_CODE_NO_FLICKER": "1"

282 }

283 }

284 ```

285</CodeGroup>

286 

287## Großen Inhalt einfügen

288 

289Wenn Sie mehr als 10.000 Zeichen in die Eingabeaufforderung einfügen, reduziert Claude Code die Eingabe auf einen `[Pasted text]`-Platzhalter, damit das Eingabefeld verwendbar bleibt. Der vollständige Inhalt wird immer noch an Claude gesendet, wenn Sie absenden.

290 

291Das integrierte VS Code-Terminal kann Zeichen aus sehr großen Einfügungen verlieren, bevor sie Claude Code erreichen, daher bevorzugen Sie dort dateibasierte Workflows. Für sehr große Eingaben wie ganze Dateien oder lange Protokolle schreiben Sie den Inhalt in eine Datei und bitten Claude, diese zu lesen, anstatt einzufügen. Dies hält das Gesprächstranskript lesbar und ermöglicht es Claude, die Datei in späteren Zügen nach Pfad zu referenzieren.

292 

293## Bearbeiten Sie Eingabeaufforderungen mit Vim-Tastenbelegungen

294 

295Claude Code enthält einen Vim-ähnlichen Bearbeitungsmodus für die Eingabeaufforderungseingabe. Aktivieren Sie ihn über `/config` → Editor-Modus, oder indem Sie [`editorMode`](/de/settings#available-settings) auf `"vim"` in `~/.claude/settings.json` setzen. Setzen Sie den Editor-Modus zurück auf `normal`, um ihn auszuschalten.

296 

297Der Vim-Modus unterstützt eine Teilmenge von NORMAL- und VISUAL-Modus-Bewegungen und Operatoren, wie z. B. `hjkl`-Navigation, `v`/`V`-Auswahl und `d`/`c`/`y` mit Textobjekten. Siehe die [Vim-Editor-Modus-Referenz](/de/interactive-mode#vim-editor-mode) für die vollständige Schlüsseltabelle. Vim-Bewegungen können nicht über die Tastenbelegungsdatei neu zugeordnet werden.

298 

299Das Drücken von Enter sendet Ihre Eingabeaufforderung immer noch im INSERT-Modus, anders als Standard-Vim. Verwenden Sie `o` oder `O` im NORMAL-Modus oder Ctrl+J, um stattdessen einen Zeilenumbruch einzufügen.

300 

301## Verwandte Ressourcen

302 

303* [Interaktiver Modus](/de/interactive-mode): vollständige Tastaturverknüpfungs-Referenz und die Vim-Schlüsseltabelle

304* [Tastenbelegungen](/de/keybindings): ordnen Sie jede Claude Code-Verknüpfung neu zu, einschließlich Enter und Shift+Enter

305* [Vollbildrendering](/de/fullscreen): Details zum Scrollen, Suchen und Kopieren im Vollbildmodus

306* [Hooks-Leitfaden](/de/hooks-guide): weitere Benachrichtigungshook-Beispiele für Linux und Windows

307* [Fehlerbehebung](/de/troubleshooting): Behebungen für Probleme außerhalb der Terminalkonfiguration

third-party-integrations.md +262 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Übersicht zur Enterprise-Bereitstellung

6 

7> Erfahren Sie, wie Claude Code mit verschiedenen Drittanbieterdiensten und Infrastrukturen integriert werden kann, um Enterprise-Bereitstellungsanforderungen zu erfüllen.

8 

9Organisationen können Claude Code direkt über Anthropic oder über einen Cloud-Anbieter bereitstellen. Diese Seite hilft Ihnen, die richtige Konfiguration auszuwählen.

10 

11## Bereitstellungsoptionen vergleichen

12 

13Für die meisten Organisationen bieten Claude for Teams oder Claude for Enterprise die beste Erfahrung. Teammitglieder erhalten Zugriff auf sowohl Claude Code als auch Claude im Web mit einem einzigen Abonnement, zentralisierte Abrechnung und ohne erforderliche Infrastruktureinrichtung.

14 

15**Claude for Teams** ist Self-Service und umfasst Zusammenarbeitsfunktionen, Admin-Tools und Abrechnungsverwaltung. Am besten für kleinere Teams, die schnell starten möchten.

16 

17**Claude for Enterprise** fügt SSO und Domain-Erfassung, rollenbasierte Berechtigungen, Compliance-API-Zugriff und verwaltete Richtlinieneinstellungen für die Bereitstellung von organisationsweiten Claude Code-Konfigurationen hinzu. Am besten für größere Organisationen mit Sicherheits- und Compliance-Anforderungen.

18 

19Erfahren Sie mehr über [Team-Pläne](https://support.claude.com/en/articles/9266767-what-is-the-team-plan) und [Enterprise-Pläne](https://support.claude.com/en/articles/9797531-what-is-the-enterprise-plan).

20 

21Wenn Ihre Organisation spezifische Infrastrukturanforderungen hat, vergleichen Sie die folgenden Optionen:

22 

23<table>

24 <thead>

25 <tr>

26 <th>Funktion</th>

27 <th>Claude for Teams/Enterprise</th>

28 <th>Anthropic Console</th>

29 <th>Amazon Bedrock</th>

30 <th>Google Vertex AI</th>

31 <th>Microsoft Foundry</th>

32 </tr>

33 </thead>

34 

35 <tbody>

36 <tr>

37 <td>Am besten für</td>

38 <td>Die meisten Organisationen (empfohlen)</td>

39 <td>Einzelne Entwickler</td>

40 <td>AWS-native Bereitstellungen</td>

41 <td>GCP-native Bereitstellungen</td>

42 <td>Azure-native Bereitstellungen</td>

43 </tr>

44 

45 <tr>

46 <td>Abrechnung</td>

47 <td><strong>Teams:</strong> 150 USD/Platz (Premium) mit PAYG verfügbar<br /><strong>Enterprise:</strong> <a href="https://claude.com/contact-sales?utm_source=claude_code&utm_medium=docs&utm_content=third_party_enterprise">Kontaktieren Sie den Vertrieb</a></td>

48 <td>PAYG</td>

49 <td>PAYG über AWS</td>

50 <td>PAYG über GCP</td>

51 <td>PAYG über Azure</td>

52 </tr>

53 

54 <tr>

55 <td>Regionen</td>

56 <td>Unterstützte [Länder](https://www.anthropic.com/supported-countries)</td>

57 <td>Unterstützte [Länder](https://www.anthropic.com/supported-countries)</td>

58 <td>Mehrere AWS [Regionen](https://docs.aws.amazon.com/bedrock/latest/userguide/models-regions.html)</td>

59 <td>Mehrere GCP [Regionen](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations)</td>

60 <td>Mehrere Azure [Regionen](https://azure.microsoft.com/en-us/explore/global-infrastructure/products-by-region/)</td>

61 </tr>

62 

63 <tr>

64 <td>Prompt caching</td>

65 <td>Standardmäßig aktiviert</td>

66 <td>Standardmäßig aktiviert</td>

67 <td>Standardmäßig aktiviert</td>

68 <td>Standardmäßig aktiviert</td>

69 <td>Standardmäßig aktiviert</td>

70 </tr>

71 

72 <tr>

73 <td>Authentifizierung</td>

74 <td>Claude.ai SSO oder E-Mail</td>

75 <td>API-Schlüssel</td>

76 <td>API-Schlüssel oder AWS-Anmeldedaten</td>

77 <td>GCP-Anmeldedaten</td>

78 <td>API-Schlüssel oder Microsoft Entra ID</td>

79 </tr>

80 

81 <tr>

82 <td>Kostenverfolgung</td>

83 <td>Nutzungs-Dashboard</td>

84 <td>Nutzungs-Dashboard</td>

85 <td>AWS Cost Explorer</td>

86 <td>GCP Billing</td>

87 <td>Azure Cost Management</td>

88 </tr>

89 

90 <tr>

91 <td>Umfasst Claude im Web</td>

92 <td>Ja</td>

93 <td>Nein</td>

94 <td>Nein</td>

95 <td>Nein</td>

96 <td>Nein</td>

97 </tr>

98 

99 <tr>

100 <td>Enterprise-Funktionen</td>

101 <td>Teamverwaltung, SSO, Nutzungsüberwachung</td>

102 <td>Keine</td>

103 <td>IAM-Richtlinien, CloudTrail</td>

104 <td>IAM-Rollen, Cloud Audit Logs</td>

105 <td>RBAC-Richtlinien, Azure Monitor</td>

106 </tr>

107 </tbody>

108</table>

109 

110Wählen Sie eine Bereitstellungsoption aus, um Setupanweisungen anzuzeigen:

111 

112* [Claude for Teams oder Enterprise](/de/authentication#claude-for-teams-or-enterprise)

113* [Anthropic Console](/de/authentication#claude-console-authentication)

114* [Amazon Bedrock](/de/amazon-bedrock)

115* [Google Vertex AI](/de/google-vertex-ai)

116* [Microsoft Foundry](/de/microsoft-foundry)

117 

118## Proxys und Gateways konfigurieren

119 

120Die meisten Organisationen können einen Cloud-Anbieter direkt ohne zusätzliche Konfiguration nutzen. Möglicherweise müssen Sie jedoch einen Unternehmens-Proxy oder LLM-Gateway konfigurieren, wenn Ihre Organisation spezifische Netzwerk- oder Verwaltungsanforderungen hat. Dies sind unterschiedliche Konfigurationen, die zusammen verwendet werden können:

121 

122* **Unternehmens-Proxy**: Leitet Datenverkehr über einen HTTP/HTTPS-Proxy weiter. Verwenden Sie dies, wenn Ihre Organisation verlangt, dass der gesamte ausgehende Datenverkehr einen Proxy-Server für Sicherheitsüberwachung, Compliance oder Netzwerkrichtliniendurchsetzung durchläuft. Konfigurieren Sie mit den Umgebungsvariablen `HTTPS_PROXY` oder `HTTP_PROXY`. Erfahren Sie mehr in [Enterprise-Netzwerkkonfiguration](/de/network-config).

123* **LLM-Gateway**: Ein Dienst, der sich zwischen Claude Code und dem Cloud-Anbieter befindet, um Authentifizierung und Routing zu verwalten. Verwenden Sie dies, wenn Sie eine zentralisierte Nutzungsverfolgung über Teams, benutzerdefinierte Ratenbegrenzung oder Budgets oder zentralisierte Authentifizierungsverwaltung benötigen. Konfigurieren Sie mit den Umgebungsvariablen `ANTHROPIC_BASE_URL`, `ANTHROPIC_BEDROCK_BASE_URL` oder `ANTHROPIC_VERTEX_BASE_URL`. Erfahren Sie mehr in [LLM-Gateway-Konfiguration](/de/llm-gateway).

124 

125Die folgenden Beispiele zeigen die Umgebungsvariablen, die in Ihrer Shell oder Shell-Profildatei (`.bashrc`, `.zshrc`) gesetzt werden sollen. Siehe [Einstellungen](/de/settings) für andere Konfigurationsmethoden.

126 

127### Amazon Bedrock

128 

129<Tabs>

130 <Tab title="Unternehmens-Proxy">

131 Leiten Sie Bedrock-Datenverkehr über Ihren Unternehmens-Proxy weiter, indem Sie die folgenden [Umgebungsvariablen](/de/env-vars) setzen:

132 

133 ```bash theme={null}

134 # Enable Bedrock

135 export CLAUDE_CODE_USE_BEDROCK=1

136 export AWS_REGION=us-east-1

137 

138 # Configure corporate proxy

139 export HTTPS_PROXY='https://proxy.example.com:8080'

140 ```

141 </Tab>

142 

143 <Tab title="LLM-Gateway">

144 Leiten Sie Bedrock-Datenverkehr über Ihr LLM-Gateway weiter, indem Sie die folgenden [Umgebungsvariablen](/de/env-vars) setzen:

145 

146 ```bash theme={null}

147 # Enable Bedrock

148 export CLAUDE_CODE_USE_BEDROCK=1

149 

150 # Configure LLM gateway

151 export ANTHROPIC_BEDROCK_BASE_URL='https://your-llm-gateway.com/bedrock'

152 export CLAUDE_CODE_SKIP_BEDROCK_AUTH=1 # If gateway handles AWS auth

153 ```

154 </Tab>

155</Tabs>

156 

157### Microsoft Foundry

158 

159<Tabs>

160 <Tab title="Unternehmens-Proxy">

161 Leiten Sie Foundry-Datenverkehr über Ihren Unternehmens-Proxy weiter, indem Sie die folgenden [Umgebungsvariablen](/de/env-vars) setzen:

162 

163 ```bash theme={null}

164 # Enable Microsoft Foundry

165 export CLAUDE_CODE_USE_FOUNDRY=1

166 export ANTHROPIC_FOUNDRY_RESOURCE=your-resource

167 export ANTHROPIC_FOUNDRY_API_KEY=your-api-key # Or omit for Entra ID auth

168 

169 # Configure corporate proxy

170 export HTTPS_PROXY='https://proxy.example.com:8080'

171 ```

172 </Tab>

173 

174 <Tab title="LLM-Gateway">

175 Leiten Sie Foundry-Datenverkehr über Ihr LLM-Gateway weiter, indem Sie die folgenden [Umgebungsvariablen](/de/env-vars) setzen:

176 

177 ```bash theme={null}

178 # Enable Microsoft Foundry

179 export CLAUDE_CODE_USE_FOUNDRY=1

180 

181 # Configure LLM gateway

182 export ANTHROPIC_FOUNDRY_BASE_URL='https://your-llm-gateway.com'

183 export CLAUDE_CODE_SKIP_FOUNDRY_AUTH=1 # If gateway handles Azure auth

184 ```

185 </Tab>

186</Tabs>

187 

188### Google Vertex AI

189 

190<Tabs>

191 <Tab title="Unternehmens-Proxy">

192 Leiten Sie Vertex AI-Datenverkehr über Ihren Unternehmens-Proxy weiter, indem Sie die folgenden [Umgebungsvariablen](/de/env-vars) setzen:

193 

194 ```bash theme={null}

195 # Enable Vertex

196 export CLAUDE_CODE_USE_VERTEX=1

197 export CLOUD_ML_REGION=us-east5

198 export ANTHROPIC_VERTEX_PROJECT_ID=your-project-id

199 

200 # Configure corporate proxy

201 export HTTPS_PROXY='https://proxy.example.com:8080'

202 ```

203 </Tab>

204 

205 <Tab title="LLM-Gateway">

206 Leiten Sie Vertex AI-Datenverkehr über Ihr LLM-Gateway weiter, indem Sie die folgenden [Umgebungsvariablen](/de/env-vars) setzen:

207 

208 ```bash theme={null}

209 # Enable Vertex

210 export CLAUDE_CODE_USE_VERTEX=1

211 

212 # Configure LLM gateway

213 export ANTHROPIC_VERTEX_BASE_URL='https://your-llm-gateway.com/vertex'

214 export CLAUDE_CODE_SKIP_VERTEX_AUTH=1 # If gateway handles GCP auth

215 ```

216 </Tab>

217</Tabs>

218 

219<Tip>

220 Verwenden Sie `/status` in Claude Code, um zu überprüfen, ob Ihre Proxy- und Gateway-Konfiguration korrekt angewendet wird.

221</Tip>

222 

223## Best Practices für Organisationen

224 

225### Investieren Sie in Dokumentation und Memory

226 

227Wir empfehlen dringend, in Dokumentation zu investieren, damit Claude Code Ihre Codebasis versteht. Organisationen können CLAUDE.md-Dateien auf mehreren Ebenen bereitstellen:

228 

229* **Organisationsweit**: Bereitstellen in Systemverzeichnissen wie `/Library/Application Support/ClaudeCode/CLAUDE.md` (macOS) für unternehmensweite Standards

230* **Repository-Ebene**: Erstellen Sie `CLAUDE.md`-Dateien in Repository-Wurzeln mit Projektarchitektur, Build-Befehlen und Beitragsleitlinien. Checken Sie diese in die Versionskontrolle ein, damit alle Benutzer davon profitieren

231 

232Erfahren Sie mehr in [Memory und CLAUDE.md-Dateien](/de/memory).

233 

234### Vereinfachen Sie die Bereitstellung

235 

236Wenn Sie eine benutzerdefinierte Entwicklungsumgebung haben, stellen wir fest, dass die Schaffung einer „Ein-Klick"-Möglichkeit zur Installation von Claude Code der Schlüssel zum Wachstum der Akzeptanz in einer Organisation ist.

237 

238### Beginnen Sie mit gesteuerter Nutzung

239 

240Ermutigen Sie neue Benutzer, Claude Code für Codebasis-Fragen oder bei kleineren Fehlerbehebungen oder Funktionsanfragen zu versuchen. Bitten Sie Claude Code, einen Plan zu erstellen. Überprüfen Sie Claudes Vorschläge und geben Sie Feedback, wenn es nicht stimmt. Mit der Zeit, wenn Benutzer dieses neue Paradigma besser verstehen, werden sie effektiver darin, Claude Code agentischer laufen zu lassen.

241 

242### Pinnen Sie Modellversionen für Cloud-Anbieter

243 

244Wenn Sie über [Bedrock](/de/amazon-bedrock), [Vertex AI](/de/google-vertex-ai) oder [Foundry](/de/microsoft-foundry) bereitstellen, pinnen Sie spezifische Modellversionen mit `ANTHROPIC_DEFAULT_OPUS_MODEL`, `ANTHROPIC_DEFAULT_SONNET_MODEL` und `ANTHROPIC_DEFAULT_HAIKU_MODEL`. Ohne Pinning werden Claude Code-Aliase zur neuesten Version aufgelöst, was Benutzer unterbrechen kann, wenn Anthropic ein neues Modell veröffentlicht, das noch nicht in Ihrem Konto aktiviert ist. Siehe [Modellkonfiguration](/de/model-config#pin-models-for-third-party-deployments) für Details.

245 

246### Konfigurieren Sie Sicherheitsrichtlinien

247 

248Sicherheitsteams können verwaltete Berechtigungen für das konfigurieren, was Claude Code darf und nicht darf, was nicht durch lokale Konfiguration überschrieben werden kann. [Erfahren Sie mehr](/de/security).

249 

250### Nutzen Sie MCP für Integrationen

251 

252MCP ist eine großartige Möglichkeit, Claude Code mehr Informationen zu geben, z. B. die Verbindung mit Ticketverwaltungssystemen oder Fehlerprotokollen. Wir empfehlen, dass ein zentrales Team MCP-Server konfiguriert und eine `.mcp.json`-Konfiguration in die Codebasis eincheckt, damit alle Benutzer davon profitieren. [Erfahren Sie mehr](/de/mcp).

253 

254Bei Anthropic vertrauen wir Claude Code, um die Entwicklung in jeder Anthropic-Codebasis zu unterstützen. Wir hoffen, dass Sie Claude Code genauso gerne verwenden wie wir.

255 

256## Nächste Schritte

257 

258Nachdem Sie eine Bereitstellungsoption ausgewählt und den Zugriff für Ihr Team konfiguriert haben:

259 

2601. **Rollout für Ihr Team**: Teilen Sie Installationsanweisungen mit und lassen Sie Teammitglieder [Claude Code installieren](/de/setup) und sich mit ihren Anmeldedaten authentifizieren.

2612. **Richten Sie gemeinsame Konfiguration ein**: Erstellen Sie eine [CLAUDE.md-Datei](/de/memory) in Ihren Repositories, um Claude Code dabei zu helfen, Ihre Codebasis und Codierungsstandards zu verstehen.

2623. **Konfigurieren Sie Berechtigungen**: Überprüfen Sie [Sicherheitseinstellungen](/de/security), um zu definieren, was Claude Code in Ihrer Umgebung darf und nicht darf.

tools-reference.md +148 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Werkzeugreferenz

6 

7> Vollständige Referenz für die Werkzeuge, die Claude Code verwenden kann, einschließlich Berechtigungsanforderungen.

8 

9Claude Code hat Zugriff auf eine Reihe von integrierten Werkzeugen, die ihm helfen, Ihre Codebasis zu verstehen und zu ändern. Die Werkzeugnamen sind die genauen Zeichenketten, die Sie in [Berechtigungsregeln](/de/permissions#tool-specific-permission-rules), [Subagent-Werkzeuglisten](/de/sub-agents) und [Hook-Matchern](/de/hooks) verwenden. Um ein Werkzeug vollständig zu deaktivieren, fügen Sie seinen Namen zum `deny`-Array in Ihren [Berechtigungseinstellungen](/de/permissions#tool-specific-permission-rules) hinzu.

10 

11Um benutzerdefinierte Werkzeuge hinzuzufügen, verbinden Sie einen [MCP-Server](/de/mcp). Um Claude mit wiederverwendbaren Prompt-basierten Workflows zu erweitern, schreiben Sie einen [Skill](/de/skills), der über das vorhandene `Skill`-Werkzeug ausgeführt wird, anstatt einen neuen Werkzeugeintrag hinzuzufügen.

12 

13| Werkzeug | Beschreibung | Berechtigung erforderlich |

14| :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------ |

15| `Agent` | Erzeugt einen [Subagenten](/de/sub-agents) mit eigenem Kontextfenster zur Bewältigung einer Aufgabe | Nein |

16| `AskUserQuestion` | Stellt Multiple-Choice-Fragen, um Anforderungen zu sammeln oder Mehrdeutigkeiten zu klären | Nein |

17| `Bash` | Führt Shell-Befehle in Ihrer Umgebung aus. Siehe [Bash-Werkzeugverhalten](#bash-tool-behavior) | Ja |

18| `CronCreate` | Plant eine wiederkehrende oder einmalige Eingabeaufforderung innerhalb der aktuellen Sitzung. Aufgaben sind sitzungsbezogen und werden bei `--resume` oder `--continue` wiederhergestellt, wenn sie nicht abgelaufen sind. Siehe [geplante Aufgaben](/de/scheduled-tasks) | Nein |

19| `CronDelete` | Bricht eine geplante Aufgabe nach ID ab | Nein |

20| `CronList` | Listet alle geplanten Aufgaben in der Sitzung auf | Nein |

21| `Edit` | Nimmt gezielte Änderungen an bestimmten Dateien vor | Ja |

22| `EnterPlanMode` | Wechselt in Plan Mode, um einen Ansatz vor dem Codieren zu entwerfen | Nein |

23| `EnterWorktree` | Erstellt einen isolierten [Git Worktree](/de/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) und wechselt hinein. Übergeben Sie einen `path`, um stattdessen in einen vorhandenen Worktree des aktuellen Repositorys zu wechseln, anstatt einen neuen zu erstellen. Nicht für Subagenten verfügbar | Nein |

24| `ExitPlanMode` | Präsentiert einen Plan zur Genehmigung und beendet Plan Mode | Ja |

25| `ExitWorktree` | Beendet eine Worktree-Sitzung und kehrt zum ursprünglichen Verzeichnis zurück. Nicht für Subagenten verfügbar | Nein |

26| `Glob` | Findet Dateien basierend auf Musterabgleich | Nein |

27| `Grep` | Sucht nach Mustern in Dateiinhalten | Nein |

28| `ListMcpResourcesTool` | Listet Ressourcen auf, die von verbundenen [MCP-Servern](/de/mcp) bereitgestellt werden | Nein |

29| `LSP` | Code-Intelligenz über Sprachserver: Sprung zu Definitionen, Suche nach Referenzen, Meldung von Typfehlern und Warnungen. Siehe [LSP-Werkzeugverhalten](#lsp-tool-behavior) | Nein |

30| `Monitor` | Führt einen Befehl im Hintergrund aus und gibt jede Ausgabezeile an Claude zurück, damit er auf Protokolleinträge, Dateiänderungen oder abgerufene Status während des Gesprächs reagieren kann. Siehe [Monitor-Werkzeug](#monitor-tool) | Ja |

31| `NotebookEdit` | Ändert Jupyter-Notebook-Zellen | Ja |

32| `PowerShell` | Führt PowerShell-Befehle nativ aus. Siehe [PowerShell-Werkzeug](#powershell-tool) für Verfügbarkeit | Ja |

33| `Read` | Liest den Inhalt von Dateien | Nein |

34| `ReadMcpResourceTool` | Liest eine bestimmte MCP-Ressource nach URI | Nein |

35| `SendMessage` | Sendet eine Nachricht an einen [Agent-Team](/de/agent-teams)-Mitarbeiter oder [setzt einen Subagenten](/de/sub-agents#resume-subagents) nach seiner Agent-ID fort. Gestoppte Subagenten werden automatisch im Hintergrund fortgesetzt. Nur verfügbar, wenn `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` gesetzt ist | Nein |

36| `Skill` | Führt einen [Skill](/de/skills#control-who-invokes-a-skill) innerhalb des Hauptgesprächs aus | Ja |

37| `TaskCreate` | Erstellt eine neue Aufgabe in der Aufgabenliste | Nein |

38| `TaskGet` | Ruft vollständige Details für eine bestimmte Aufgabe ab | Nein |

39| `TaskList` | Listet alle Aufgaben mit ihrem aktuellen Status auf | Nein |

40| `TaskOutput` | (Veraltet) Ruft Ausgabe von einer Hintergrundaufgabe ab. Bevorzugen Sie `Read` auf dem Ausgabedateipfad der Aufgabe | Nein |

41| `TaskStop` | Beendet eine laufende Hintergrundaufgabe nach ID | Nein |

42| `TaskUpdate` | Aktualisiert Aufgabenstatus, Abhängigkeiten, Details oder löscht Aufgaben | Nein |

43| `TeamCreate` | Erstellt ein [Agent-Team](/de/agent-teams) mit mehreren Mitarbeitern. Nur verfügbar, wenn `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` gesetzt ist | Nein |

44| `TeamDelete` | Löst ein Agent-Team auf und bereinigt Mitarbeiterprozesse. Nur verfügbar, wenn `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` gesetzt ist | Nein |

45| `TodoWrite` | Verwaltet die Sitzungs-Aufgabenliste. Verfügbar im nicht-interaktiven Modus und im [Agent SDK](/de/headless); interaktive Sitzungen verwenden stattdessen TaskCreate, TaskGet, TaskList und TaskUpdate | Nein |

46| `ToolSearch` | Sucht nach verschobenen Werkzeugen und lädt sie, wenn [Tool-Suche](/de/mcp#scale-with-mcp-tool-search) aktiviert ist | Nein |

47| `WebFetch` | Ruft Inhalte von einer angegebenen URL ab | Ja |

48| `WebSearch` | Führt Web-Suchen durch | Ja |

49| `Write` | Erstellt oder überschreibt Dateien | Ja |

50 

51Berechtigungsregeln können mit `/permissions` oder in [Berechtigungseinstellungen](/de/settings#available-settings) konfiguriert werden. Siehe auch [Werkzeugspezifische Berechtigungsregeln](/de/permissions#tool-specific-permission-rules).

52 

53## Bash-Werkzeugverhalten

54 

55Das Bash-Werkzeug führt jeden Befehl in einem separaten Prozess mit folgendem Persistenzverhalten aus:

56 

57* Wenn Claude `cd` in der Hauptsitzung ausführt, wird das neue Arbeitsverzeichnis zu späteren Bash-Befehlen übertragen, solange es sich im Projektverzeichnis oder einem [zusätzlichen Arbeitsverzeichnis](/de/permissions#working-directories) befindet, das Sie mit `--add-dir`, `/add-dir` oder `additionalDirectories` in den Einstellungen hinzugefügt haben. Subagent-Sitzungen übertragen niemals Arbeitsverzeichnisänderungen.

58 * Wenn `cd` außerhalb dieser Verzeichnisse landet, setzt Claude Code auf das Projektverzeichnis zurück und fügt `Shell cwd was reset to <dir>` zum Werkzeugergebnis hinzu.

59 * Um diese Übertragung zu deaktivieren, damit jeder Bash-Befehl im Projektverzeichnis startet, setzen Sie `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.

60* Umgebungsvariablen bleiben nicht erhalten. Ein `export` in einem Befehl ist im nächsten nicht verfügbar.

61 

62Aktivieren Sie Ihre virtualenv- oder Conda-Umgebung, bevor Sie Claude Code starten. Um Umgebungsvariablen über Bash-Befehle hinweg persistent zu machen, setzen Sie [`CLAUDE_ENV_FILE`](/de/env-vars) auf ein Shell-Skript, bevor Sie Claude Code starten, oder verwenden Sie einen [SessionStart-Hook](/de/hooks#persist-environment-variables), um ihn dynamisch zu füllen.

63 

64## LSP-Werkzeugverhalten

65 

66Das LSP-Werkzeug gibt Claude Code-Intelligenz von einem laufenden Sprachserver. Nach jeder Dateiänderung meldet es automatisch Typfehler und Warnungen, damit Claude Probleme ohne einen separaten Build-Schritt beheben kann. Claude kann es auch direkt aufrufen, um Code zu navigieren:

67 

68* Sprung zu einer Symbol-Definition

69* Suche nach allen Referenzen zu einem Symbol

70* Typinformationen an einer Position abrufen

71* Symbole in einer Datei oder im Workspace auflisten

72* Implementierungen einer Schnittstelle finden

73* Aufrufen-Hierarchien verfolgen

74 

75Das Werkzeug ist inaktiv, bis Sie ein [Code-Intelligence-Plugin](/de/discover-plugins#code-intelligence) für Ihre Sprache installieren. Das Plugin bündelt die Sprachserver-Konfiguration, und Sie installieren die Server-Binärdatei separat.

76 

77## Monitor-Werkzeug

78 

79<Note>

80 Das Monitor-Werkzeug erfordert Claude Code v2.1.98 oder später.

81</Note>

82 

83Das Monitor-Werkzeug ermöglicht es Claude, etwas im Hintergrund zu beobachten und zu reagieren, wenn es sich ändert, ohne das Gespräch zu unterbrechen. Bitten Sie Claude:

84 

85* Eine Protokolldatei zu verfolgen und Fehler zu kennzeichnen, wenn sie erscheinen

86* Eine PR oder CI-Job abzufragen und zu melden, wenn sich ihr Status ändert

87* Ein Verzeichnis auf Dateiänderungen zu überwachen

88* Ausgabe von einem beliebigen langfristigen Skript zu verfolgen, auf das Sie es hinweisen

89 

90Claude schreibt ein kleines Skript für die Überwachung, führt es im Hintergrund aus und empfängt jede Ausgabezeile, wenn sie ankommt. Sie arbeiten weiter in der gleichen Sitzung und Claude interveniert, wenn ein Ereignis eintritt. Beenden Sie eine Überwachung, indem Sie Claude auffordern, sie zu stornieren, oder indem Sie die Sitzung beenden.

91 

92Monitor verwendet die gleichen [Berechtigungsregeln wie Bash](/de/permissions#tool-specific-permission-rules), daher gelten `allow`- und `deny`-Muster, die Sie für Bash festgelegt haben, auch hier. Es ist nicht auf Amazon Bedrock, Google Vertex AI oder Microsoft Foundry verfügbar. Es ist auch nicht verfügbar, wenn `DISABLE_TELEMETRY` oder `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` gesetzt ist.

93 

94Plugins können Monitore deklarieren, die automatisch starten, wenn das Plugin aktiv ist, anstatt Claude zu bitten, sie zu starten. Siehe [Plugin-Monitore](/de/plugins-reference#monitors).

95 

96## PowerShell-Werkzeug

97 

98Das PowerShell-Werkzeug ermöglicht es Claude, PowerShell-Befehle nativ auszuführen. Unter Windows bedeutet dies, dass Befehle in PowerShell ausgeführt werden, anstatt sie über Git Bash zu leiten. Unter Windows ohne Git Bash ist das Werkzeug automatisch aktiviert. Unter Windows mit installiertem Git Bash wird das Werkzeug schrittweise eingeführt. Unter Linux, macOS und WSL ist das Werkzeug optional.

99 

100### Aktivieren Sie das PowerShell-Werkzeug

101 

102Setzen Sie `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` in Ihrer Umgebung oder in `settings.json`:

103 

104```json theme={null}

105{

106 "env": {

107 "CLAUDE_CODE_USE_POWERSHELL_TOOL": "1"

108 }

109}

110```

111 

112Unter Windows setzen Sie die Variable auf `0`, um sich von der Einführung abzumelden. Unter Linux, macOS und WSL erfordert das Werkzeug PowerShell 7 oder später: Installieren Sie `pwsh` und stellen Sie sicher, dass es sich auf Ihrem `PATH` befindet.

113 

114Unter Windows erkennt Claude Code `pwsh.exe` für PowerShell 7+ automatisch mit einem Fallback auf `powershell.exe` für PowerShell 5.1. Wenn das Werkzeug aktiviert ist, behandelt Claude PowerShell als die primäre Shell. Das Bash-Werkzeug bleibt für POSIX-Skripte verfügbar, wenn Git Bash installiert ist.

115 

116### Shell-Auswahl in Einstellungen, Hooks und Skills

117 

118Drei zusätzliche Einstellungen steuern, wo PowerShell verwendet wird:

119 

120* `"defaultShell": "powershell"` in [`settings.json`](/de/settings#available-settings): leitet interaktive `!`-Befehle durch PowerShell. Erfordert, dass das PowerShell-Werkzeug aktiviert ist.

121* `"shell": "powershell"` auf einzelnen [Command-Hooks](/de/hooks#command-hook-fields): führt diesen Hook in PowerShell aus. Hooks starten PowerShell direkt, daher funktioniert dies unabhängig von `CLAUDE_CODE_USE_POWERSHELL_TOOL`.

122* `shell: powershell` in [Skill-Frontmatter](/de/skills#frontmatter-reference): führt `` !`command` ``-Blöcke in PowerShell aus. Erfordert, dass das PowerShell-Werkzeug aktiviert ist.

123 

124Das gleiche Verhalten zum Zurücksetzen des Arbeitsverzeichnisses in der Hauptsitzung, das im Abschnitt zum Bash-Werkzeug beschrieben ist, gilt für PowerShell-Befehle, einschließlich der Umgebungsvariable `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR`.

125 

126### Vorschau-Einschränkungen

127 

128Das PowerShell-Werkzeug hat während der Vorschau die folgenden bekannten Einschränkungen:

129 

130* PowerShell-Profile werden nicht geladen

131* Unter Windows wird Sandboxing nicht unterstützt

132 

133## Überprüfen Sie, welche Werkzeuge verfügbar sind

134 

135Ihr genaues Werkzeugsatz hängt von Ihrem Anbieter, Ihrer Plattform und Ihren Einstellungen ab. Um zu überprüfen, was in einer laufenden Sitzung geladen ist, fragen Sie Claude direkt:

136 

137```text theme={null}

138What tools do you have access to?

139```

140 

141Claude gibt eine Zusammenfassung im Gesprächsstil. Für genaue MCP-Werkzeugnamen führen Sie `/mcp` aus.

142 

143## Siehe auch

144 

145* [MCP-Server](/de/mcp): Fügen Sie benutzerdefinierte Werkzeuge durch Verbindung externer Server hinzu

146* [Berechtigungen](/de/permissions): Berechtigungssystem, Regelsyntax und werkzeugspezifische Muster

147* [Subagents](/de/sub-agents): Konfigurieren Sie Werkzeugzugriff für Subagents

148* [Hooks](/de/hooks-guide): Führen Sie benutzerdefinierte Befehle vor oder nach der Werkzeugausführung aus

troubleshooting.md +121 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Fehlerbehebung

6 

7> Beheben Sie hohe CPU- oder Speichernutzung, Hänger, Auto-Compact-Thrashing und Suchprobleme in Claude Code und finden Sie die richtige Seite für andere Probleme.

8 

9Diese Seite behandelt Leistungs-, Stabilitäts- und Suchprobleme, sobald Claude Code läuft. Für andere Probleme beginnen Sie mit der Seite, die zu Ihrer Situation passt:

10 

11| Symptom | Gehen Sie zu |

12| :--------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------- |

13| `command not found`, Installation schlägt fehl, PATH-Probleme, `EACCES`, TLS-Fehler | [Fehlerbehebung bei Installation und Anmeldung](/de/troubleshoot-install) |

14| Anmeldeschleifen, OAuth-Fehler, `403 Forbidden`, „Organisation deaktiviert", Bedrock/Vertex/Foundry-Anmeldedaten | [Fehlerbehebung bei Installation und Anmeldung](/de/troubleshoot-install#login-and-authentication) |

15| Einstellungen werden nicht angewendet, Hooks werden nicht ausgelöst, MCP-Server werden nicht geladen | [Debuggen Sie Ihre Konfiguration](/de/debug-your-config) |

16| `API Error: 5xx`, `529 Overloaded`, `429`, Request-Validierungsfehler | [Fehlerreferenz](/de/errors) |

17| `model not found` oder `you may not have access to it` | [Fehlerreferenz](/de/errors#theres-an-issue-with-the-selected-model) |

18| VS Code-Erweiterung verbindet sich nicht oder erkennt Claude nicht | [VS Code-Integration](/de/vs-code#fix-common-issues) |

19| JetBrains-Plugin oder IDE wird nicht erkannt | [JetBrains-Integration](/de/jetbrains#troubleshooting) |

20| Hohe CPU oder Speicher, langsame Antworten, Hänger, Suche findet Dateien nicht | [Leistung und Stabilität](#performance-and-stability) unten |

21 

22Wenn Sie sich nicht sicher sind, welcher Fall zutrifft, führen Sie `/doctor` in Claude Code aus, um eine automatisierte Überprüfung Ihrer Installation, Einstellungen, MCP-Server und Kontextnutzung durchzuführen. Wenn `claude` überhaupt nicht startet, führen Sie stattdessen `claude doctor` aus Ihrer Shell aus.

23 

24## Leistung und Stabilität

25 

26Diese Abschnitte behandeln Probleme im Zusammenhang mit Ressourcennutzung, Reaktionsfähigkeit und Suchverhalten.

27 

28### Hohe CPU- oder Speichernutzung

29 

30Claude Code ist für die Zusammenarbeit mit den meisten Entwicklungsumgebungen konzipiert, kann aber bei der Verarbeitung großer Codebases erhebliche Ressourcen verbrauchen. Wenn Sie Leistungsprobleme haben:

31 

321. Verwenden Sie `/compact` regelmäßig, um die Kontextgröße zu reduzieren

332. Schließen und starten Sie Claude Code zwischen großen Aufgaben neu

343. Erwägen Sie, große Build-Verzeichnisse zu Ihrer `.gitignore`-Datei hinzuzufügen

35 

36Wenn die Speichernutzung nach diesen Schritten hoch bleibt, führen Sie `/heapdump` aus, um einen JavaScript-Heap-Snapshot und eine Speicheraufschlüsselung auf `~/Desktop` zu schreiben. Auf Linux ohne Desktop-Ordner werden die Dateien in Ihr Home-Verzeichnis geschrieben.

37 

38Die Aufschlüsselung zeigt Resident Set Size, JS Heap, Array Buffers und nicht berechneten nativen Speicher, was hilft zu identifizieren, ob das Wachstum in JavaScript-Objekten oder in nativem Code liegt. Um Retainer zu überprüfen, öffnen Sie die `.heapsnapshot`-Datei in Chrome DevTools unter Memory → Load. Fügen Sie beide Dateien bei, wenn Sie ein Speicherproblem auf [GitHub](https://github.com/anthropics/claude-code/issues) melden.

39 

40### Auto-Kompaktierung stoppt mit einem Thrashing-Fehler

41 

42Wenn Sie `Autocompact is thrashing: the context refilled to the limit...` sehen, war die automatische Kompaktierung erfolgreich, aber eine Datei oder ein Tool-Output hat das Kontextfenster sofort mehrmals hintereinander gefüllt. Claude Code stoppt die Wiederholung, um zu vermeiden, dass API-Aufrufe auf einer Schleife verschwendet werden, die keinen Fortschritt macht.

43 

44Um sich zu erholen:

45 

461. Bitten Sie Claude, die übergroße Datei in kleineren Chunks zu lesen, z. B. einen bestimmten Zeilenbereich oder eine Funktion, statt der ganzen Datei

472. Führen Sie `/compact` mit einem Fokus aus, der die große Ausgabe löscht, z. B. `/compact keep only the plan and the diff`

483. Verschieben Sie die Arbeit mit großen Dateien zu einem [Subagenten](/de/sub-agents), damit er in einem separaten Kontextfenster ausgeführt wird

494. Führen Sie `/clear` aus, wenn das frühere Gespräch nicht mehr benötigt wird

50 

51### Befehl hängt oder friert ein

52 

53Wenn Claude Code nicht reagiert:

54 

551. Drücken Sie Strg+C, um zu versuchen, den aktuellen Vorgang abzubrechen

562. Wenn nicht reagiert, müssen Sie möglicherweise das Terminal schließen und neu starten

57 

58Das Neustarten verliert Ihre Konversation nicht. Führen Sie `claude --resume` im selben Verzeichnis aus, um die Sitzung fortzusetzen.

59 

60### Such- und Erkennungsprobleme

61 

62Wenn das Such-Tool, `@file`-Erwähnungen, benutzerdefinierte Agenten oder benutzerdefinierte Skills Dateien nicht finden, kann die gebündelte `ripgrep`-Binärdatei auf Ihrem System möglicherweise nicht ausgeführt werden. Installieren Sie das `ripgrep`-Paket Ihrer Plattform und teilen Sie Claude Code mit, es stattdessen zu verwenden:

63 

64<Tabs>

65 <Tab title="macOS">

66 ```bash theme={null}

67 brew install ripgrep

68 ```

69 </Tab>

70 

71 <Tab title="Ubuntu/Debian">

72 ```bash theme={null}

73 sudo apt install ripgrep

74 ```

75 </Tab>

76 

77 <Tab title="Alpine">

78 ```bash theme={null}

79 apk add ripgrep

80 ```

81 </Tab>

82 

83 <Tab title="Arch">

84 ```bash theme={null}

85 pacman -S ripgrep

86 ```

87 </Tab>

88 

89 <Tab title="Windows">

90 ```powershell theme={null}

91 winget install BurntSushi.ripgrep.MSVC

92 ```

93 </Tab>

94</Tabs>

95 

96Setzen Sie dann `USE_BUILTIN_RIPGREP=0` in Ihrer [Umgebung](/de/env-vars).

97 

98### Langsame oder unvollständige Suchergebnisse auf WSL

99 

100Leistungseinbußen beim Lesen von Festplatten beim [Arbeiten über Dateisysteme auf WSL](https://learn.microsoft.com/en-us/windows/wsl/filesystems) können zu weniger als erwarteten Übereinstimmungen führen, wenn Sie Claude Code auf WSL verwenden. Die Suche funktioniert immer noch, gibt aber weniger Ergebnisse zurück als auf einem nativen Dateisystem.

101 

102<Note>

103 `/doctor` zeigt in diesem Fall die Suche als OK an.

104</Note>

105 

106**Lösungen:**

107 

1081. **Senden Sie spezifischere Suchen**: Reduzieren Sie die Anzahl der durchsuchten Dateien, indem Sie Verzeichnisse oder Dateitypen angeben: 'Search for JWT validation logic in the auth-service package" oder „Find use of md5 hash in JS files".

109 

1102. **Verschieben Sie das Projekt auf das Linux-Dateisystem**: Stellen Sie sicher, dass sich Ihr Projekt auf dem Linux-Dateisystem (`/home/`) statt auf dem Windows-Dateisystem (`/mnt/c/`) befindet.

111 

1123. **Verwenden Sie stattdessen natives Windows**: Erwägen Sie, Claude Code nativ unter Windows statt über WSL auszuführen, um eine bessere Dateisystem-Leistung zu erzielen.

113 

114## Weitere Hilfe erhalten

115 

116Wenn Sie Probleme haben, die hier nicht behandelt werden:

117 

1181. Führen Sie `/doctor` aus, um Installationsintegrität, Einstellungsgültigkeit, MCP-Konfiguration und Kontextnutzung in einem Durchgang zu überprüfen

1192. Verwenden Sie den `/feedback`-Befehl in Claude Code, um Probleme direkt an Anthropic zu melden

1203. Überprüfen Sie das [GitHub-Repository](https://github.com/anthropics/claude-code) auf bekannte Probleme

1214. Fragen Sie Claude direkt nach seinen Fähigkeiten und Funktionen. Claude hat integrierten Zugriff auf seine Dokumentation.

ultraplan.md +84 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Mit Ultraplan in der Cloud planen

6 

7> Starten Sie einen Plan von Ihrer CLI aus, entwerfen Sie ihn auf Claude Code im Web und führen Sie ihn dann remote aus oder zurück in Ihrem Terminal

8 

9<Note>

10 Ultraplan befindet sich in der Forschungsvorschau und erfordert Claude Code v2.1.91 oder später. Verhalten und Funktionen können sich basierend auf Feedback ändern.

11</Note>

12 

13Ultraplan übergibt eine Planungsaufgabe von Ihrer lokalen CLI an eine [Claude Code im Web](/de/claude-code-on-the-web)-Sitzung, die im [Plan Mode](/de/permission-modes#analyze-before-you-edit-with-plan-mode) ausgeführt wird. Claude entwirft den Plan in der Cloud, während Sie weiterhin in Ihrem Terminal arbeiten. Wenn der Plan fertig ist, öffnen Sie ihn in Ihrem Browser, um Kommentare zu bestimmten Abschnitten zu hinterlassen, Überarbeitungen anzufordern und auszuwählen, wo er ausgeführt werden soll.

14 

15Dies ist nützlich, wenn Sie eine umfangreichere Überprüfungsoberfläche benötigen, als das Terminal bietet:

16 

17* **Gezieltes Feedback**: Kommentieren Sie einzelne Abschnitte des Plans, anstatt auf das Ganze zu antworten

18* **Freihändiger Entwurf**: Der Plan wird remote generiert, sodass Ihr Terminal für andere Arbeiten frei bleibt

19* **Flexible Ausführung**: Genehmigen Sie den Plan zur Ausführung im Web und öffnen Sie einen Pull Request, oder senden Sie ihn zurück an Ihr Terminal

20 

21Ultraplan erfordert ein [Claude Code im Web](/de/claude-code-on-the-web)-Konto und ein GitHub-Repository. Da es auf der Cloud-Infrastruktur von Anthropic ausgeführt wird, ist es nicht verfügbar, wenn Sie Amazon Bedrock, Google Cloud Vertex AI oder Microsoft Foundry verwenden. Die Cloud-Sitzung wird in der Standard-[Cloud-Umgebung](/de/claude-code-on-the-web#the-cloud-environment) Ihres Kontos ausgeführt. Wenn Sie noch keine Cloud-Umgebung haben, erstellt Ultraplan beim ersten Start automatisch eine.

22 

23## Ultraplan von der CLI aus starten

24 

25Von Ihrer lokalen CLI-Sitzung aus können Sie Ultraplan auf drei Arten starten:

26 

27* **Befehl**: Führen Sie `/ultraplan` gefolgt von Ihrer Eingabeaufforderung aus

28* **Schlüsselwort**: Fügen Sie das Wort `ultraplan` überall in einer normalen Eingabeaufforderung ein

29* **Aus einem lokalen Plan**: Wenn Claude einen lokalen Plan fertigstellt und den Genehmigungsdialog anzeigt, wählen Sie **Nein, mit Ultraplan auf Claude Code im Web verfeinern**, um den Entwurf zur Cloud zur weiteren Iteration zu senden

30 

31Um beispielsweise eine Service-Migration mit dem Befehl zu planen:

32 

33```

34/ultraplan migrate the auth service from sessions to JWTs

35```

36 

37Die Befehls- und Schlüsselwortpfade öffnen einen Bestätigungsdialog vor dem Start. Der lokale Plan-Pfad überspringt diesen Dialog, da diese Auswahl bereits als Bestätigung dient. Wenn [Remote Control](/de/remote-control) aktiv ist, wird die Verbindung getrennt, wenn Ultraplan startet, da beide Funktionen die claude.ai/code-Schnittstelle belegen und nur eine gleichzeitig verbunden sein kann.

38 

39Nachdem die Cloud-Sitzung startet, zeigt die Eingabeaufforderung Ihrer CLI einen Statusindikator an, während die Remote-Sitzung funktioniert:

40 

41| Status | Bedeutung |

42| :----------------------------- | :-------------------------------------------------------------------------- |

43| `◇ ultraplan` | Claude recherchiert Ihre Codebasis und entwirft den Plan |

44| `◇ ultraplan needs your input` | Claude hat eine Klärungsfrage; öffnen Sie den Sitzungslink, um zu antworten |

45| `◆ ultraplan ready` | Der Plan ist bereit zur Überprüfung in Ihrem Browser |

46 

47Führen Sie `/tasks` aus und wählen Sie den Ultraplan-Eintrag, um eine Detailansicht mit dem Sitzungslink, der Agent-Aktivität und einer **Stop ultraplan**-Aktion zu öffnen. Das Beenden archiviert die Cloud-Sitzung und löscht den Indikator; nichts wird in Ihrem Terminal gespeichert.

48 

49## Überprüfen und überarbeiten Sie den Plan in Ihrem Browser

50 

51Wenn sich der Status zu `◆ ultraplan ready` ändert, öffnen Sie den Sitzungslink, um den Plan auf claude.ai anzuzeigen. Der Plan wird in einer dedizierten Überprüfungsansicht angezeigt:

52 

53* **Inline-Kommentare**: Markieren Sie einen beliebigen Abschnitt und hinterlassen Sie einen Kommentar, damit Claude ihn bearbeitet

54* **Emoji-Reaktionen**: Reagieren Sie auf einen Abschnitt, um Zustimmung oder Bedenken zu signalisieren, ohne einen vollständigen Kommentar zu schreiben

55* **Gliederungs-Seitenleiste**: Springen Sie zwischen Abschnitten des Plans

56 

57Wenn Sie Claude auffordern, Ihre Kommentare zu bearbeiten, überarbeitet er den Plan und präsentiert einen aktualisierten Entwurf. Sie können so oft iterieren, wie nötig, bevor Sie auswählen, wo Sie ihn ausführen möchten.

58 

59## Wählen Sie aus, wo Sie ausführen möchten

60 

61Wenn der Plan richtig aussieht, wählen Sie im Browser aus, ob Claude ihn in derselben Cloud-Sitzung implementiert oder ihn zurück an Ihr wartendes Terminal sendet.

62 

63### Im Web ausführen

64 

65Wählen Sie **Genehmigen Sie Claudes Plan und starten Sie das Codieren** in Ihrem Browser, damit Claude ihn in derselben Claude Code im Web-Sitzung implementiert. Ihr Terminal zeigt eine Bestätigung an, der Statusindikator wird gelöscht und die Arbeit wird in der Cloud fortgesetzt. Wenn die Implementierung abgeschlossen ist, [überprüfen Sie die Unterschiede](/de/claude-code-on-the-web#review-changes) und erstellen Sie einen Pull Request über die Web-Schnittstelle.

66 

67### Senden Sie den Plan zurück an Ihr Terminal

68 

69Wählen Sie **Plan genehmigen und zurück zum Terminal teleportieren** in Ihrem Browser, um den Plan lokal mit vollständigem Zugriff auf Ihre Umgebung zu implementieren. Diese Option wird angezeigt, wenn die Sitzung von Ihrer CLI aus gestartet wurde und das Terminal noch abgefragt wird. Die Web-Sitzung wird archiviert, sodass sie nicht parallel weiterarbeitet.

70 

71Ihr Terminal zeigt den Plan in einem Dialog mit dem Titel **Ultraplan genehmigt** mit drei Optionen:

72 

73* **Hier implementieren**: Injizieren Sie den Plan in Ihre aktuelle Konversation und fahren Sie fort, wo Sie aufgehört haben

74* **Neue Sitzung starten**: Löschen Sie die aktuelle Konversation und beginnen Sie neu mit nur dem Plan als Kontext

75* **Abbrechen**: Speichern Sie den Plan in einer Datei, ohne ihn auszuführen; Claude gibt den Dateipfad aus, damit Sie später darauf zurückgreifen können

76 

77Wenn Sie eine neue Sitzung starten, gibt Claude oben einen `claude --resume`-Befehl aus, damit Sie später zu Ihrer vorherigen Konversation zurückkehren können.

78 

79## Verwandte Ressourcen

80 

81* [Claude Code im Web](/de/claude-code-on-the-web): die Cloud-Infrastruktur, auf der Ultraplan ausgeführt wird

82* [Plan Mode](/de/permission-modes#analyze-before-you-edit-with-plan-mode): wie die Planung in einer lokalen Sitzung funktioniert

83* [Fehler mit Ultrareview finden](/de/ultrareview): das Code-Review-Gegenstück zu Ultraplan zum Abfangen von Problemen vor dem Merge

84* [Remote Control](/de/remote-control): Verwenden Sie die claude.ai/code-Schnittstelle mit einer Sitzung, die auf Ihrem eigenen Computer ausgeführt wird

ultrareview.md +108 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Bugs mit Ultrareview finden

6 

7> Führen Sie eine tiefe, Multi-Agent-Code-Review in der Cloud mit /ultrareview durch, um Bugs vor dem Merge zu finden und zu verifizieren.

8 

9<Note>

10 Ultrareview ist eine Research-Preview-Funktion, die in Claude Code v2.1.86 und später verfügbar ist. Die Funktion, Preisgestaltung und Verfügbarkeit können sich basierend auf Feedback ändern.

11</Note>

12 

13Ultrareview ist eine tiefe Code-Review, die auf Claude Code in der Web-Infrastruktur ausgeführt wird. Wenn Sie `/ultrareview` ausführen, startet Claude Code eine Flotte von Reviewer-Agenten in einer Remote-Sandbox, um Bugs in Ihrem Branch oder Pull Request zu finden.

14 

15Im Vergleich zu einer lokalen `/review` bietet Ultrareview:

16 

17* **Höhere Signalqualität**: Jeder gemeldete Fund wird unabhängig reproduziert und verifiziert, sodass sich die Ergebnisse auf echte Bugs konzentrieren und nicht auf Stilvorschläge

18* **Breitere Abdeckung**: Viele Reviewer-Agenten erkunden die Änderung parallel, was Probleme aufdeckt, die eine einmalige Review übersehen könnte

19* **Keine lokale Ressourcennutzung**: Die Review läuft vollständig in einer Remote-Sandbox, sodass Ihr Terminal für andere Arbeiten frei bleibt, während sie läuft

20 

21Ultrareview erfordert eine Authentifizierung mit einem Claude.ai-Konto, da es auf Claude Code in der Web-Infrastruktur ausgeführt wird. Wenn Sie nur mit einem API-Schlüssel angemeldet sind, führen Sie `/login` aus und authentifizieren Sie sich zuerst mit Claude.ai. Ultrareview ist nicht verfügbar, wenn Sie Claude Code mit Amazon Bedrock, Google Cloud Vertex AI oder Microsoft Foundry verwenden, und es ist nicht für Organisationen verfügbar, die Zero Data Retention aktiviert haben.

22 

23## Ultrareview von der CLI ausführen

24 

25Starten Sie eine Review aus einem beliebigen Git-Repository in der Claude Code CLI.

26 

27```text theme={null}

28/ultrareview

29```

30 

31Ohne Argumente überprüft Ultrareview den Diff zwischen Ihrem aktuellen Branch und dem Standard-Branch, einschließlich aller nicht committeter und gestaged Changes in Ihrem Working Tree. Claude Code bündelt den Repository-Status und lädt ihn in eine Remote-Sandbox für die Review hoch.

32 

33Um stattdessen einen GitHub Pull Request zu überprüfen, übergeben Sie die PR-Nummer.

34 

35```text theme={null}

36/ultrareview 1234

37```

38 

39Im PR-Modus klont die Remote-Sandbox den Pull Request direkt von GitHub, anstatt Ihren lokalen Working Tree zu bündeln. Der PR-Modus erfordert ein `github.com`-Remote im Repository.

40 

41<Tip>

42 Wenn Ihr Repository zu groß zum Bündeln ist, fordert Claude Code Sie auf, stattdessen den PR-Modus zu verwenden. Pushen Sie Ihren Branch und öffnen Sie einen Draft PR, führen Sie dann `/ultrareview <PR-number>` aus.

43</Tip>

44 

45Vor dem Start zeigt Claude Code einen Bestätigungsdialog mit dem Review-Umfang (einschließlich der Datei- und Zeilenanzahl bei der Überprüfung eines Branches), Ihren verbleibenden kostenlosen Durchläufen und den geschätzten Kosten an. Nach der Bestätigung läuft die Review im Hintergrund weiter und Sie können Ihre Sitzung weiterhin nutzen. Der Befehl wird nur ausgeführt, wenn Sie ihn mit `/ultrareview` aufrufen; Claude startet nicht automatisch eine Ultrareview.

46 

47## Preisgestaltung und kostenlose Durchläufe

48 

49Ultrareview ist eine Premium-Funktion, die gegen zusätzliche Nutzung statt gegen die in Ihrem Plan enthaltene Nutzung abgerechnet wird.

50 

51| Plan | Kostenlose Durchläufe enthalten | Nach kostenlosen Durchläufen |

52| ------------------- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |

53| Pro | 3 kostenlose Durchläufe bis 5. Mai 2026 | abgerechnet als [zusätzliche Nutzung](https://support.claude.com/de/articles/12429409-extra-usage-for-paid-claude-plans) |

54| Max | 3 kostenlose Durchläufe bis 5. Mai 2026 | abgerechnet als [zusätzliche Nutzung](https://support.claude.com/de/articles/12429409-extra-usage-for-paid-claude-plans) |

55| Team und Enterprise | keine | abgerechnet als [zusätzliche Nutzung](https://support.claude.com/de/articles/12429409-extra-usage-for-paid-claude-plans) |

56 

57Pro- und Max-Abonnenten erhalten drei kostenlose Ultrareview-Durchläufe, um die Funktion zu testen. Diese drei Durchläufe sind eine einmalige Zuteilung pro Konto, werden nicht erneuert und verfallen am 5. Mai 2026. Nachdem Sie alle drei verwendet haben oder nachdem der Zeitraum der kostenlosen Durchläufe endet, wird jede Review als zusätzliche Nutzung abgerechnet und kostet typischerweise 5 bis 20 Dollar, je nach Größe der Änderung. Ein Durchlauf zählt, sobald die Remote-Sitzung startet, daher verbraucht eine Review, die Sie frühzeitig beenden oder die nicht vollständig abgeschlossen wird, immer noch einen kostenlosen Durchlauf. Bei einer kostenpflichtigen Review wird zusätzliche Nutzung nur für den Teil abgerechnet, der ausgeführt wurde.

58 

59Da Ultrareview außerhalb der kostenlosen Durchläufe immer als zusätzliche Nutzung abgerechnet wird, muss Ihr Konto oder Ihre Organisation zusätzliche Nutzung aktiviert haben, bevor Sie eine kostenpflichtige Review starten können. Wenn zusätzliche Nutzung nicht aktiviert ist, blockiert Claude Code den Start und verlinkt Sie zu den Abrechnungseinstellungen, wo Sie sie aktivieren können. Sie können auch `/extra-usage` ausführen, um Ihre aktuelle Einstellung zu überprüfen oder zu ändern.

60 

61## Eine laufende Review verfolgen

62 

63Eine Review dauert normalerweise 5 bis 10 Minuten. Die Review läuft als Hintergrundaufgabe, sodass Sie in Ihrer Sitzung weiterarbeiten, andere Befehle starten oder das Terminal vollständig schließen können.

64 

65Verwenden Sie `/tasks`, um laufende und abgeschlossene Reviews anzuzeigen, die Detailansicht für eine Review zu öffnen oder eine laufende Review zu stoppen. Das Stoppen einer Review archiviert die Cloud-Sitzung, und teilweise Ergebnisse werden nicht zurückgegeben. Wenn die Review abgeschlossen ist, erscheinen die verifizierten Ergebnisse als Benachrichtigung in Ihrer Sitzung. Jedes Ergebnis enthält den Dateispeicherort und eine Erklärung des Problems, sodass Sie Claude direkt bitten können, es zu beheben.

66 

67## Ultrareview nicht-interaktiv ausführen

68 

69Verwenden Sie den Unterbefehl `claude ultrareview`, um eine Ultrareview von CI oder einem Skript ohne eine interaktive Sitzung zu starten. Der Unterbefehl startet die gleiche Review wie `/ultrareview`, blockiert, bis die Remote-Review abgeschlossen ist, gibt die Ergebnisse auf stdout aus und beendet sich mit Code 0 bei Erfolg oder 1 bei Fehler.

70 

71```bash theme={null}

72claude ultrareview

73claude ultrareview 1234

74claude ultrareview origin/main

75```

76 

77Ohne Argumente überprüft der Unterbefehl den Diff zwischen Ihrem aktuellen Branch und dem Standard-Branch. Übergeben Sie eine PR-Nummer, um einen Pull Request zu überprüfen, oder übergeben Sie einen Base-Branch, um stattdessen den Diff gegen diesen Branch zu überprüfen. Das Aufrufen des Unterbefehls gilt als Zustimmung zu der Abrechnungs- und Bedingungseingabeaufforderung, die der interaktive Befehl anzeigt.

78 

79Fortschrittsmeldungen und die Live-Sitzungs-URL gehen zu stderr, sodass stdout analysierbar bleibt. Verwenden Sie diese Flags, um die Ausgabe und das Timeout zu steuern:

80 

81| Flag | Beschreibung |

82| --------------------- | ----------------------------------------------------------------------------- |

83| `--json` | Geben Sie die rohe `bugs.json`-Nutzlast statt der formatierten Ergebnisse aus |

84| `--timeout <minutes>` | Maximale Minuten zum Warten auf den Abschluss der Review. Standard ist 30 |

85 

86Das Ausführen von `claude ultrareview` erfordert die gleiche Authentifizierung und zusätzliche Nutzungskonfiguration wie `/ultrareview`. Der Unterbefehl beendet sich mit Code 0, wenn die Review mit oder ohne Ergebnisse abgeschlossen ist, Code 1, wenn die Review nicht gestartet werden kann, die Remote-Sitzung fehlschlägt oder das Timeout abläuft, und Code 130, wenn sie mit Strg+C unterbrochen wird. Die Remote-Review läuft weiter, wenn Sie den Unterbefehl unterbrechen; folgen Sie der auf stderr gedruckten Sitzungs-URL, um sie im Browser zu beobachten.

87 

88Für automatische Reviews bei GitHub Pull Requests integriert sich [Code Review](/de/code-review) direkt mit Ihrem Repository und veröffentlicht Ergebnisse als Inline-PR-Kommentare ohne einen CLI-Schritt.

89 

90## Wie Ultrareview mit /review verglichen wird

91 

92Beide Befehle überprüfen Code, zielen aber auf verschiedene Phasen Ihres Workflows ab.

93 

94| | `/review` | `/ultrareview` |

95| ------------- | ---------------------------------------- | --------------------------------------------------------------------------------------- |

96| Läuft | lokal in Ihrer Sitzung | remote in einer Cloud-Sandbox |

97| Tiefe | einmalige Review | Multi-Agent-Flotte mit unabhängiger Verifizierung |

98| Dauer | Sekunden bis wenige Minuten | ungefähr 5 bis 10 Minuten |

99| Kosten | zählt zur normalen Nutzung | kostenlose Durchläufe, dann ungefähr 5 bis 20 Dollar pro Review als zusätzliche Nutzung |

100| Am besten für | schnelles Feedback während der Iteration | Pre-Merge-Sicherheit bei wesentlichen Änderungen |

101 

102Verwenden Sie `/review` für schnelles Feedback während der Arbeit. Verwenden Sie `/ultrareview` vor dem Merge einer wesentlichen Änderung, wenn Sie einen tieferen Durchgang wünschen, der Probleme erfasst, die eine einzelne Review übersehen könnte.

103 

104## Verwandte Ressourcen

105 

106* [Claude Code im Web](/de/claude-code-on-the-web): Erfahren Sie, wie Remote-Sitzungen und Cloud-Sandboxes funktionieren

107* [Planen Sie komplexe Änderungen mit Ultraplan](/de/ultraplan): das Planungs-Gegenstück zu Ultrareview für vorausschauende Designarbeiten

108* [Verwalten Sie Kosten effektiv](/de/costs): Verfolgen Sie die Nutzung und legen Sie Ausgabenlimits fest

voice-dictation.md +191 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Spracherfassung

6 

7> Sprechen Sie Ihre Eingabeaufforderungen in der Claude Code CLI mit Halten-zum-Aufnehmen oder Tippen-zum-Aufnehmen Spracherfassung.

8 

9Sprechen Sie Ihre Eingabeaufforderungen, anstatt sie in der Claude Code CLI einzutippen. Ihre Sprache wird live in die Eingabeaufforderung transkribiert, sodass Sie Sprache und Tippen in derselben Nachricht mischen können. Aktivieren Sie die Erfassung mit `/voice`, halten Sie dann entweder eine Taste gedrückt, während Sie sprechen, oder tippen Sie einmal zum Starten und erneut zum Senden.

10 

11<Note>

12 Die Spracherfassung erfordert Claude Code v2.1.69 oder später. Der Tap-Modus erfordert v2.1.116 oder später. Überprüfen Sie Ihre Version mit `claude --version`.

13</Note>

14 

15## Anforderungen

16 

17Die Spracherfassung streamt Ihre aufgenommene Audiodatei an Anthropic-Server zur Transkription. Audio wird nicht lokal verarbeitet. Der Sprache-zu-Text-Dienst ist nur verfügbar, wenn Sie sich mit einem Claude.ai-Konto authentifizieren, und ist nicht verfügbar, wenn Claude Code für die Verwendung eines Anthropic API-Schlüssels direkt, Amazon Bedrock, Google Vertex AI oder Microsoft Foundry konfiguriert ist. Die Transkription verbraucht keine Claude-Nachrichten oder Token und wird nicht auf die in `/usage` angezeigten Limits angerechnet. Siehe [Datennutzung](/de/data-usage) für Informationen darüber, wie Anthropic Ihre Daten verarbeitet.

18 

19Die Spracherfassung benötigt auch lokalen Mikrofonzugriff, daher funktioniert sie nicht in Remote-Umgebungen wie [Claude Code im Web](/de/claude-code-on-the-web) oder SSH-Sitzungen. In WSL erfordert die Spracherfassung WSLg für Audiozugriff, das in WSL2 unter Windows 11 enthalten ist. Unter Windows 10 oder WSL1 führen Sie Claude Code stattdessen nativ unter Windows aus.

20 

21Die Audioaufnahme verwendet ein integriertes natives Modul unter macOS, Linux und Windows. Unter Linux wird Claude Code auf `arecord` aus ALSA-Dienstprogrammen oder `rec` aus SoX zurückgreifen, wenn das native Modul nicht geladen werden kann. Wenn keines verfügbar ist, gibt `/voice` einen Installationsbefehl für Ihren Paketmanager aus.

22 

23Die Claude Code [VS Code-Erweiterung](/de/vs-code) unterstützt auch Spracherfassung mit derselben Claude.ai-Kontoanforderung. Sie ist nicht in VS Code Remote-Sitzungen verfügbar, einschließlich SSH, Dev Containers und Codespaces, da sich das Mikrofon auf Ihrem lokalen Computer befindet und die Erweiterung auf dem Remote-Host ausgeführt wird.

24 

25## Spracherfassung aktivieren

26 

27Führen Sie `/voice` aus, um die Erfassung zu aktivieren. Beim ersten Aktivieren führt Claude Code eine Mikrofonprüfung durch. Unter macOS wird dies die Systemmikrofonberechtigungsaufforderung für Ihr Terminal auslösen, falls diese noch nie gewährt wurde.

28 

29```

30/voice

31Voice mode enabled (hold). Hold Space to record. Dictation language: en (/config to change).

32```

33 

34`/voice` akzeptiert ein optionales Modusargument:

35 

36| Befehl | Effekt |

37| :------------ | :---------------------------------------------------- |

38| `/voice` | Ein- oder ausschalten, aktuellen Modus beibehalten |

39| `/voice hold` | Im [Halten-Modus](#hold-to-record) aktivieren |

40| `/voice tap` | Im [Tippen-Modus](#tap-to-record-and-send) aktivieren |

41| `/voice off` | Deaktivieren |

42 

43Die Spracherfassung bleibt über Sitzungen hinweg erhalten. Legen Sie sie direkt in Ihrer [Benutzereinstellungsdatei](/de/settings) fest, anstatt `/voice` auszuführen:

44 

45```json theme={null}

46{

47 "voice": {

48 "enabled": true,

49 "mode": "tap"

50 }

51}

52```

53 

54Während die Spracherfassung aktiviert ist, zeigt die Eingabefußzeile einen `hold Space to speak`-Hinweis an, wenn die Eingabeaufforderung leer ist. Der Hinweistext ist in beiden Modi gleich und wird nicht angezeigt, wenn Sie eine [benutzerdefinierte Statuszeile](/de/statusline) konfiguriert haben.

55 

56Die Transkription ist in beiden Modi auf Codierungsvokabular abgestimmt. Häufige Entwicklungsbegriffe wie `regex`, `OAuth`, `JSON` und `localhost` werden korrekt erkannt, und Ihr aktueller Projektname und Git-Branch-Name werden automatisch als Erkennungshinweise hinzugefügt.

57 

58## Halten zum Aufnehmen

59 

60Der Halten-Modus ist Push-to-Talk: Die Aufnahme läuft, während Sie die Taste halten, und stoppt, wenn Sie sie loslassen. Dies ist der Standardmodus.

61 

62Halten Sie `Space` gedrückt, um die Aufnahme zu starten. Claude Code erkennt eine gehaltene Taste, indem es schnelle Tastenwiederholungsereignisse von Ihrem Terminal überwacht, daher gibt es eine kurze Aufwärmphase, bevor die Aufnahme beginnt. Die Fußzeile zeigt `keep holding…` während der Aufwärmphase an und wechselt dann zu einer Live-Wellenform, sobald die Aufnahme aktiv ist.

63 

64Die ersten paar Tastenwiederholungszeichen werden während der Aufwärmphase in die Eingabe eingegeben und werden automatisch entfernt, wenn die Aufnahme aktiviert wird. Ein einzelnes `Space`-Tippen gibt immer noch ein Leerzeichen ein, da die Halten-Erkennung nur bei schneller Wiederholung ausgelöst wird.

65 

66<Tip>

67 Um die Aufwärmphase zu überspringen, wechseln Sie mit `/voice tap` zum [Tippen-Modus](#tap-to-record-and-send), oder [binden Sie eine Modifikatorkombination](#rebind-the-dictation-key) wie `meta+k` neu. Modifikatorkombinationen starten die Aufnahme beim ersten Tastendruck.

68</Tip>

69 

70Ihre Sprache erscheint in der Eingabeaufforderung, während Sie sprechen, abgeblendet, bis das Transkript finalisiert ist. Lassen Sie `Space` los, um die Aufnahme zu stoppen und den Text zu finalisieren. Das Transkript wird an Ihrer Cursorposition eingefügt und der Cursor bleibt am Ende des eingefügten Textes, sodass Sie Tippen und Erfassung in beliebiger Reihenfolge mischen können. Halten Sie `Space` erneut gedrückt, um eine weitere Aufnahme anzufügen, oder verschieben Sie den Cursor zuerst, um Sprache an anderer Stelle in der Eingabeaufforderung einzufügen:

71 

72```

73> refactor the auth middleware to ▮

74 # hold Space, speak "use the new token validation helper"

75> refactor the auth middleware to use the new token validation helper▮

76```

77 

78Standardmäßig fügt das Loslassen der Taste das Transkript ein und wartet darauf, dass Sie `Enter` drücken. Legen Sie `"autoSubmit": true` im `voice`-Einstellungsobjekt fest, um die Eingabeaufforderung automatisch zu senden, wenn Sie die Taste loslassen, solange das Transkript mindestens drei Wörter lang ist.

79 

80## Tippen zum Aufnehmen und Senden

81 

82Der Tippen-Modus schaltet die Aufnahme mit einem einzelnen Tastendruck um: Tippen Sie einmal zum Starten, sprechen Sie, dann tippen Sie erneut zum Senden der Eingabeaufforderung. Es gibt keine Aufwärmphase und Sie müssen die Taste nicht gedrückt halten.

83 

84Aktivieren Sie den Tippen-Modus mit `/voice tap`. Wenn die Eingabeaufforderung leer ist, tippen Sie auf `Space`, um die Aufnahme zu starten. Die Fußzeile zeigt eine Live-Wellenform während der Aufnahme. Tippen Sie erneut auf `Space`, um zu stoppen. Claude Code fügt das Transkript ein und sendet die Eingabeaufforderung automatisch, wenn das Transkript mindestens drei Wörter lang ist. Kürzere Transkripte werden eingefügt, aber nicht gesendet, daher sendet ein versehentliches Tippen kein einzelnes Wort.

85 

86Das erste Tippen startet die Aufnahme nur, wenn die Eingabeaufforderung leer ist, sodass Sie immer noch normal Leerzeichen eingeben können, während Sie eine Nachricht verfassen. Das zweite Tippen stoppt die Aufnahme unabhängig vom Eingabeinhalt. Die Aufnahme stoppt auch automatisch nach 15 Sekunden Stille oder zwei Minuten insgesamt.

87 

88## Ändern Sie die Erfassungssprache

89 

90Die Spracherfassung verwendet die gleiche [`language`-Einstellung](/de/settings), die die Antwortsprache von Claude steuert. Wenn diese Einstellung leer ist, wird die Erfassung standardmäßig auf Englisch eingestellt. In der VS Code-Erweiterung wird die Erfassung, wenn `language` leer ist, die `accessibility.voice.speechLanguage`-Einstellung von VS Code verwenden, bevor sie auf Englisch zurückfällt.

91 

92<Accordion title="Unterstützte Erfassungssprachen">

93 | Sprache | Code |

94 | :------------- | :--- |

95 | Tschechisch | `cs` |

96 | Dänisch | `da` |

97 | Niederländisch | `nl` |

98 | Englisch | `en` |

99 | Französisch | `fr` |

100 | Deutsch | `de` |

101 | Griechisch | `el` |

102 | Hindi | `hi` |

103 | Indonesisch | `id` |

104 | Italienisch | `it` |

105 | Japanisch | `ja` |

106 | Koreanisch | `ko` |

107 | Norwegisch | `no` |

108 | Polnisch | `pl` |

109 | Portugiesisch | `pt` |

110 | Russisch | `ru` |

111 | Spanisch | `es` |

112 | Schwedisch | `sv` |

113 | Türkisch | `tr` |

114 | Ukrainisch | `uk` |

115</Accordion>

116 

117Legen Sie die Sprache in `/config` fest oder direkt in den Einstellungen. Sie können entweder den [BCP 47-Sprachcode](https://en.wikipedia.org/wiki/IETF_language_tag) oder den Sprachnamen verwenden:

118 

119```json theme={null}

120{

121 "language": "japanese"

122}

123```

124 

125Wenn Ihre `language`-Einstellung nicht in der unterstützten Liste enthalten ist, warnt Sie `/voice` beim Aktivieren und fällt für die Erfassung auf Englisch zurück. Clauds Textantworten sind von diesem Fallback nicht betroffen.

126 

127## Binden Sie die Erfassungstaste neu

128 

129Die Erfassungstaste ist an `voice:pushToTalk` im `Chat`-Kontext gebunden und wird standardmäßig auf `Space` eingestellt. Die gleiche Bindung steuert sowohl den Halten- als auch den Tippen-Modus. Binden Sie sie in [`~/.claude/keybindings.json`](/de/keybindings) neu:

130 

131```json theme={null}

132{

133 "bindings": [

134 {

135 "context": "Chat",

136 "bindings": {

137 "meta+k": "voice:pushToTalk",

138 "space": null

139 }

140 }

141 ]

142}

143```

144 

145Das Setzen von `"space": null` entfernt die Standardbindung. Lassen Sie es weg, wenn Sie beide Tasten aktiv haben möchten.

146 

147Im Halten-Modus vermeiden Sie das Binden einer bloßen Buchstabentaste wie `v`, da die Halten-Erkennung auf Tastenwiederholung angewiesen ist und der Buchstabe während der Aufwärmphase in die Eingabeaufforderung eingegeben wird. Verwenden Sie `Space` oder eine Modifikatorkombination wie `meta+k`, um die Aufnahme beim ersten Tastendruck ohne Aufwärmphase zu starten. Der Tippen-Modus hat keine Aufwärmphase, daher funktioniert jede Taste.

148 

149Einige Tasten werden nicht an Terminalanwendungen übermittelt und können überhaupt nicht gebunden werden. Beispielsweise zeigt `Caps Lock` einen Fehler an, wenn Sie versuchen, es zu binden. Siehe [Tastaturkürzel anpassen](/de/keybindings) für die vollständige Tastenbindungssyntax und die Liste der reservierten Tastenkombinationen.

150 

151## Fehlerbehebung

152 

153Häufige Probleme, wenn die Spracherfassung nicht aktiviert wird oder nicht aufnimmt:

154 

155* **`Voice mode requires a Claude.ai account`**: Sie sind mit einem API-Schlüssel oder einem Drittanbieter authentifiziert. Führen Sie `/login` aus, um sich mit einem Claude.ai-Konto anzumelden.

156* **`Microphone access is denied`**: Gewähren Sie Ihrem Terminal in den Systemeinstellungen Mikrofonberechtigung. Unter macOS gehen Sie zu Systemeinstellungen → Datenschutz & Sicherheit → Mikrofon und aktivieren Sie Ihre Terminal-App, führen Sie dann `/voice` erneut aus. Unter Windows gehen Sie zu Einstellungen → Datenschutz & Sicherheit → Mikrofon und aktivieren Sie den Mikrofonzugriff für Desktop-Apps, führen Sie dann `/voice` erneut aus. Wenn Ihr Terminal nicht in den macOS-Einstellungen aufgeführt ist, siehe [Terminal nicht in macOS-Mikrofoneinstellungen aufgeführt](#terminal-not-listed-in-macos-microphone-settings).

157* **`No audio recording tool found` unter Linux**: Das native Audiomodul konnte nicht geladen werden und kein Fallback ist installiert. Installieren Sie SoX mit dem im Fehlermeldung angezeigten Befehl, z. B. `sudo apt-get install sox`.

158* **Nichts passiert, wenn Sie `Space` im Halten-Modus halten**: Beobachten Sie die Eingabeaufforderung, während Sie halten. Wenn sich Leerzeichen weiter ansammeln, ist die Spracherfassung wahrscheinlich aus; führen Sie `/voice hold` aus, um sie zu aktivieren. Wenn nur ein oder zwei Leerzeichen erscheinen und dann nichts, ist die Spracherfassung an, aber die Halten-Erkennung wird nicht ausgelöst. Die Halten-Erkennung erfordert, dass Ihr Terminal Tastenwiederholungsereignisse sendet, daher kann es eine gehaltene Taste nicht erkennen, wenn die Tastenwiederholung auf Betriebssystemebene deaktiviert ist. Wechseln Sie mit `/voice tap` zum Tippen-Modus, um die Tastenwiederholungsanforderung zu vermeiden.

159* **Das Tippen auf `Space` gibt ein Leerzeichen ein, anstatt im Tippen-Modus aufzunehmen**: Das erste Tippen startet die Aufnahme nur, wenn die Eingabeaufforderung leer ist. Löschen Sie zuerst die Eingabe, oder überprüfen Sie, dass Sie im Tippen-Modus sind, indem Sie `/voice tap` ausführen.

160* **`No audio detected from microphone`**: Die Aufnahme wurde gestartet, aber es wurde Stille erfasst. Bestätigen Sie, dass das richtige Eingabegerät als Systemstandard eingestellt ist und dass sein Eingabepegel nicht stummgeschaltet oder nahe Null ist. Unter Windows öffnen Sie Einstellungen → System → Sound → Eingabe und wählen Sie Ihr Mikrofon aus. Unter macOS öffnen Sie Systemeinstellungen → Sound → Eingabe.

161* **`No speech detected`**: Audio erreichte den Transkriptionsdienst, aber es wurden keine Wörter erkannt. Sprechen Sie näher zum Mikrofon, reduzieren Sie Hintergrundgeräusche und bestätigen Sie, dass Ihre [Erfassungssprache](#change-the-dictation-language) der Sprache entspricht, die Sie sprechen.

162* **Transkription ist verzerrt oder in der falschen Sprache**: Die Erfassung wird standardmäßig auf Englisch eingestellt. Wenn Sie in einer anderen Sprache erfassen, legen Sie sie zuerst in `/config` fest. Siehe [Ändern Sie die Erfassungssprache](#change-the-dictation-language).

163 

164### Terminal nicht in macOS-Mikrofoneinstellungen aufgeführt

165 

166Wenn Ihre Terminal-App nicht unter Systemeinstellungen → Datenschutz & Sicherheit → Mikrofon angezeigt wird, gibt es keinen Schalter, den Sie aktivieren können. Setzen Sie den Berechtigungsstatus für Ihr Terminal zurück, damit die nächste `/voice`-Ausführung eine neue macOS-Berechtigungsaufforderung auslöst.

167 

168<Steps>

169 <Step title="Setzen Sie die Mikrofonberechtigung für Ihr Terminal zurück">

170 Führen Sie `tccutil reset Microphone <bundle-id>` aus und ersetzen Sie `<bundle-id>` durch die Kennung Ihres Terminals: `com.apple.Terminal` für das integrierte Terminal oder `com.googlecode.iterm2` für iTerm2. Für andere Terminals suchen Sie die Kennung mit `osascript -e 'id of app "AppName"'`.

171 

172 <Warning>

173 Sie können `tccutil reset Microphone` ohne eine Bundle-ID ausführen, aber dies widerruft den Mikrofonzugriff von jeder App auf Ihrem Mac, einschließlich Apps wie Zoom oder Slack. Jede App muss beim nächsten Gebrauch erneut Zugriff anfordern, führen Sie es also nicht während eines aktiven Anrufs aus.

174 </Warning>

175 </Step>

176 

177 <Step title="Beenden Sie Ihr Terminal und starten Sie es neu">

178 macOS wird einen Prozess, der bereits ausgeführt wird, nicht erneut auffordern. Beenden Sie die Terminal-App mit Cmd+Q, nicht nur schließen Sie ihre Fenster, öffnen Sie sie dann erneut.

179 </Step>

180 

181 <Step title="Lösen Sie eine neue Aufforderung aus">

182 Starten Sie Claude Code und führen Sie `/voice` aus. macOS fordert Mikrofonzugriff an; erlauben Sie es.

183 </Step>

184</Steps>

185 

186## Siehe auch

187 

188* [Tastaturkürzel anpassen](/de/keybindings): Binden Sie `voice:pushToTalk` und andere CLI-Tastaturaktionen neu

189* [Einstellungen konfigurieren](/de/settings): Vollständige Referenz für `voice`, `language` und andere Einstellungsschlüssel

190* [Interaktiver Modus](/de/interactive-mode): Tastaturkürzel, Eingabemodi und Sitzungssteuerungen

191* [Befehle](/de/commands): Referenz für `/voice`, `/config` und alle anderen Befehle

vs-code.md +511 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code in VS Code verwenden

6 

7> Installieren und konfigurieren Sie die Claude Code-Erweiterung für VS Code. Erhalten Sie KI-Codierungshilfe mit Inline-Diffs, @-Erwähnungen, Planüberprüfung und Tastaturkürzeln.

8 

9<img src="https://mintcdn.com/claude-code/-YhHHmtSxwr7W8gy/images/vs-code-extension-interface.jpg?fit=max&auto=format&n=-YhHHmtSxwr7W8gy&q=85&s=300652d5678c63905e6b0ea9e50835f8" alt="VS Code-Editor mit dem geöffneten Claude Code-Erweiterungspanel auf der rechten Seite, das ein Gespräch mit Claude zeigt" width="2500" height="1155" data-path="images/vs-code-extension-interface.jpg" />

10 

11Die VS Code-Erweiterung bietet eine native grafische Benutzeroberfläche für Claude Code, die direkt in Ihre IDE integriert ist. Dies ist die empfohlene Methode, um Claude Code in VS Code zu verwenden.

12 

13Mit der Erweiterung können Sie Claudes Pläne überprüfen und bearbeiten, bevor Sie sie akzeptieren, Bearbeitungen automatisch akzeptieren, während sie vorgenommen werden, @-Erwähnungen für Dateien mit bestimmten Zeilenbereichen aus Ihrer Auswahl hinzufügen, auf Gesprächsverlauf zugreifen und mehrere Gespräche in separaten Registerkarten oder Fenstern öffnen.

14 

15## Voraussetzungen

16 

17Stellen Sie vor der Installation sicher, dass Sie folgende Voraussetzungen erfüllen:

18 

19* VS Code 1.98.0 oder höher

20* Ein Anthropic-Konto (Sie melden sich an, wenn Sie die Erweiterung zum ersten Mal öffnen). Wenn Sie einen Drittanbieter wie Amazon Bedrock oder Google Vertex AI verwenden, siehe stattdessen [Drittanbieter verwenden](#use-third-party-providers).

21 

22<Tip>

23 Die Erweiterung enthält die CLI (Befehlszeilenschnittstelle), auf die Sie über das integrierte Terminal von VS Code für erweiterte Funktionen zugreifen können. Siehe [VS Code-Erweiterung vs. Claude Code CLI](#vs-code-extension-vs-claude-code-cli) für Details.

24</Tip>

25 

26## Erweiterung installieren

27 

28Klicken Sie auf den Link für Ihre IDE, um direkt zu installieren:

29 

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

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

32 

33Oder drücken Sie in VS Code `Cmd+Shift+X` (Mac) oder `Ctrl+Shift+X` (Windows/Linux), um die Ansicht „Erweiterungen" zu öffnen, suchen Sie nach „Claude Code" und klicken Sie auf **Installieren**.

34 

35<Note>Wenn die Erweiterung nach der Installation nicht angezeigt wird, starten Sie VS Code neu oder führen Sie „Developer: Reload Window" aus der Befehlspalette aus.</Note>

36 

37## Erste Schritte

38 

39Nach der Installation können Sie Claude Code über die VS Code-Benutzeroberfläche verwenden:

40 

41<Steps>

42 <Step title="Öffnen Sie das Claude Code-Panel">

43 In VS Code zeigt das Spark-Symbol Claude Code an: <img src="https://mintcdn.com/claude-code/c5r9_6tjPMzFdDDT/images/vs-code-spark-icon.svg?fit=max&auto=format&n=c5r9_6tjPMzFdDDT&q=85&s=3ca45e00deadec8c8f4b4f807da94505" alt="Spark-Symbol" style={{display: "inline", height: "0.85em", verticalAlign: "middle"}} width="16" height="16" data-path="images/vs-code-spark-icon.svg" />

44 

45 Die schnellste Möglichkeit, Claude zu öffnen, besteht darin, auf das Spark-Symbol in der **Editor-Symbolleiste** (obere rechte Ecke des Editors) zu klicken. Das Symbol wird nur angezeigt, wenn Sie eine Datei geöffnet haben.

46 

47 <img src="https://mintcdn.com/claude-code/mfM-EyoZGnQv8JTc/images/vs-code-editor-icon.png?fit=max&auto=format&n=mfM-EyoZGnQv8JTc&q=85&s=eb4540325d94664c51776dbbfec4cf02" alt="VS Code-Editor mit dem Spark-Symbol in der Editor-Symbolleiste" width="2796" height="734" data-path="images/vs-code-editor-icon.png" />

48 

49 Weitere Möglichkeiten, Claude Code zu öffnen:

50 

51 * **Aktivitätsleiste**: Klicken Sie auf das Spark-Symbol in der linken Seitenleiste, um die Sitzungsliste zu öffnen. Klicken Sie auf eine beliebige Sitzung, um sie als vollständige Editor-Registerkarte zu öffnen, oder starten Sie eine neue. Dieses Symbol ist immer in der Aktivitätsleiste sichtbar.

52 * **Befehlspalette**: `Cmd+Shift+P` (Mac) oder `Ctrl+Shift+P` (Windows/Linux), geben Sie „Claude Code" ein und wählen Sie eine Option wie „In neuer Registerkarte öffnen"

53 * **Statusleiste**: Klicken Sie auf **✱ Claude Code** in der unteren rechten Ecke des Fensters. Dies funktioniert auch, wenn keine Datei geöffnet ist.

54 

55 Sie können das Claude-Panel ziehen, um es überall in VS Code zu repositionieren. Siehe [Passen Sie Ihren Workflow an](#customize-your-workflow) für Details.

56 </Step>

57 

58 <Step title="Melden Sie sich an">

59 Wenn Sie das Panel zum ersten Mal öffnen, wird ein Anmeldungsbildschirm angezeigt. Klicken Sie auf **Anmelden** und schließen Sie die Autorisierung in Ihrem Browser ab.

60 

61 Wenn Sie später **Nicht angemeldet · Bitte führen Sie /login aus** sehen, öffnet die Erweiterung den Anmeldungsbildschirm automatisch erneut. Wenn er nicht angezeigt wird, laden Sie das Fenster aus der Befehlspalette mit **Developer: Reload Window** neu.

62 

63 Wenn Sie `ANTHROPIC_API_KEY` in Ihrer Shell gesetzt haben, aber immer noch die Anmeldungsaufforderung sehen, hat VS Code möglicherweise Ihre Shell-Umgebung nicht geerbt. Starten Sie VS Code von einem Terminal mit `code .` aus, damit es Ihre Umgebungsvariablen erbt, oder melden Sie sich stattdessen mit Ihrem Claude-Konto an.

64 

65 Nach der Anmeldung wird eine **Claude Code erlernen**-Checkliste angezeigt. Arbeiten Sie jedes Element durch, indem Sie auf **Zeig mir** klicken, oder schließen Sie es mit dem X. Um es später erneut zu öffnen, deaktivieren Sie **Onboarding ausblenden** in den VS Code-Einstellungen unter Erweiterungen → Claude Code.

66 </Step>

67 

68 <Step title="Senden Sie eine Eingabeaufforderung">

69 Bitten Sie Claude, Ihnen bei Ihrem Code oder Ihren Dateien zu helfen, sei es zum Erklären, wie etwas funktioniert, zum Debuggen eines Problems oder zum Vornehmen von Änderungen.

70 

71 <Tip>Claude sieht Ihren ausgewählten Text automatisch. Drücken Sie `Option+K` (Mac) / `Alt+K` (Windows/Linux), um auch eine @-Erwähnungsreferenz (wie `@file.ts#5-10`) in Ihre Eingabeaufforderung einzufügen.</Tip>

72 

73 Hier ist ein Beispiel für eine Frage zu einer bestimmten Zeile in einer Datei:

74 

75 <img src="https://mintcdn.com/claude-code/FVYz38sRY-VuoGHA/images/vs-code-send-prompt.png?fit=max&auto=format&n=FVYz38sRY-VuoGHA&q=85&s=ede3ed8d8d5f940e01c5de636d009cfd" alt="VS Code-Editor mit den Zeilen 2-3, die in einer Python-Datei ausgewählt sind, und das Claude Code-Panel zeigt eine Frage zu diesen Zeilen mit einer @-Erwähnungsreferenz" width="3288" height="1876" data-path="images/vs-code-send-prompt.png" />

76 </Step>

77 

78 <Step title="Überprüfen Sie Änderungen">

79 Wenn Claude eine Datei bearbeiten möchte, zeigt es einen Vergleich der ursprünglichen und vorgeschlagenen Änderungen nebeneinander an und fordert dann die Genehmigung an. Sie können akzeptieren, ablehnen oder Claude sagen, was stattdessen zu tun ist. Wenn Sie den vorgeschlagenen Inhalt direkt in der Diff-Ansicht bearbeiten, bevor Sie akzeptieren, wird Claude mitgeteilt, dass Sie ihn geändert haben, sodass er nicht davon ausgeht, dass die Datei seinem ursprünglichen Vorschlag entspricht.

80 

81 <img src="https://mintcdn.com/claude-code/FVYz38sRY-VuoGHA/images/vs-code-edits.png?fit=max&auto=format&n=FVYz38sRY-VuoGHA&q=85&s=e005f9b41c541c5c7c59c082f7c4841c" alt="VS Code zeigt einen Diff von Claudes vorgeschlagenen Änderungen mit einer Genehmigungsaufforderung, die fragt, ob die Bearbeitung vorgenommen werden soll" width="3292" height="1876" data-path="images/vs-code-edits.png" />

82 </Step>

83</Steps>

84 

85Weitere Ideen, was Sie mit Claude Code tun können, finden Sie unter [Häufige Workflows](/de/common-workflows).

86 

87<Tip>

88 Führen Sie 'Claude Code: Open Walkthrough" aus der Befehlspalette aus, um eine geführte Tour durch die Grundlagen zu erhalten.

89</Tip>

90 

91## Verwenden Sie das Eingabefeld

92 

93Das Eingabefeld unterstützt mehrere Funktionen:

94 

95* **Genehmigungsmodi**: Klicken Sie auf den Modusindikator am unteren Rand des Eingabefelds, um Modi zu wechseln. Im normalen Modus fragt Claude vor jeder Aktion um Genehmigung. Im Plan Mode beschreibt Claude, was es tun wird, und wartet auf Genehmigung, bevor es Änderungen vornimmt. VS Code öffnet den Plan automatisch als vollständiges Markdown-Dokument, in dem Sie Inline-Kommentare hinzufügen können, um Feedback zu geben, bevor Claude beginnt. Im Auto-Accept-Modus nimmt Claude Bearbeitungen vor, ohne zu fragen. Legen Sie den Standard in den VS Code-Einstellungen unter `claudeCode.initialPermissionMode` fest.

96* **Befehlsmenü**: Klicken Sie auf `/` oder geben Sie `/` ein, um das Befehlsmenü zu öffnen. Zu den Optionen gehören das Anhängen von Dateien, das Wechseln von Modellen, das Umschalten von erweitertem Denken, das Anzeigen der Plannutzung (`/usage`) und das Starten einer [Remote Control](/de/remote-control)-Sitzung (`/remote-control`). Der Abschnitt „Anpassen" bietet Zugriff auf MCP servers, hooks, memory, permissions und plugins. Elemente mit einem Terminal-Symbol werden im integrierten Terminal geöffnet.

97* **Kontextindikator**: Das Eingabefeld zeigt, wie viel von Claudes context window Sie verwenden. Claude komprimiert automatisch bei Bedarf, oder Sie können `/compact` manuell ausführen.

98* **Erweitertes Denken**: Ermöglicht Claude, mehr Zeit für die Überlegung komplexer Probleme aufzuwenden. Aktivieren Sie es über das Befehlsmenü (`/`). Claudes Überlegungen werden im Gespräch als zusammengeklappte Blöcke angezeigt: Klicken Sie auf einen Block, um ihn zu lesen, oder drücken Sie `Ctrl+O`, um jeden Denkblock in der Sitzung zu erweitern oder zu reduzieren. Siehe [Erweitertes Denken](/de/common-workflows#use-extended-thinking-thinking-mode) für Details.

99* **Mehrzeilige Eingabe**: Drücken Sie `Shift+Enter`, um eine neue Zeile hinzuzufügen, ohne zu senden. Dies funktioniert auch in der Freitexteingabe „Sonstiges" von Frage-Dialogen.

100 

101### Referenzdateien und Ordner

102 

103Verwenden Sie @-Erwähnungen, um Claude Kontext über bestimmte Dateien oder Ordner zu geben. Wenn Sie `@` gefolgt von einem Datei- oder Ordnernamen eingeben, liest Claude diesen Inhalt und kann Fragen dazu beantworten oder Änderungen daran vornehmen. Claude Code unterstützt Fuzzy Matching, sodass Sie Teilnamen eingeben können, um das zu finden, was Sie benötigen:

104 

105```text theme={null}

106> Explain the logic in @auth (fuzzy matches auth.js, AuthService.ts, etc.)

107> What's in @src/components/ (include a trailing slash for folders)

108```

109 

110Für große PDFs können Sie Claude bitten, bestimmte Seiten statt der gesamten Datei zu lesen: eine einzelne Seite, einen Bereich wie Seiten 1-10 oder einen offenen Bereich wie Seite 3 und darüber hinaus.

111 

112Wenn Sie Text im Editor auswählen, kann Claude Ihren hervorgehobenen Code automatisch sehen. Die Fußzeile des Eingabefelds zeigt, wie viele Zeilen ausgewählt sind. Drücken Sie `Option+K` (Mac) / `Alt+K` (Windows/Linux), um eine @-Erwähnung mit dem Dateipfad und den Zeilennummern einzufügen (z. B. `@app.ts#5-10`). Klicken Sie auf den Auswahlindikator, um umzuschalten, ob Claude Ihren hervorgehobenen Text sehen kann – das Symbol mit durchgestrichenem Auge bedeutet, dass die Auswahl vor Claude verborgen ist.

113 

114Sie können auch `Shift` gedrückt halten, während Sie Dateien in das Eingabefeld ziehen, um sie als Anhänge hinzuzufügen. Klicken Sie auf das X bei einem Anhang, um ihn aus dem Kontext zu entfernen.

115 

116### Frühere Gespräche fortsetzen

117 

118Klicken Sie auf die Schaltfläche **Sitzungsverlauf** oben im Claude Code-Panel, um auf Ihren Gesprächsverlauf zuzugreifen. Sie können nach Schlüsselwort suchen oder nach Zeit durchsuchen (Heute, Gestern, Letzte 7 Tage usw.). Klicken Sie auf ein beliebiges Gespräch, um es mit dem vollständigen Nachrichtenverlauf fortzusetzen. Neue Sitzungen erhalten KI-generierte Titel basierend auf Ihrer ersten Nachricht. Bewegen Sie den Mauszeiger über eine Sitzung, um Umbenennungs- und Entfernungsaktionen anzuzeigen: Benennen Sie um, um ihr einen beschreibenden Titel zu geben, oder entfernen Sie sie, um sie aus der Liste zu löschen. Weitere Informationen zum Fortsetzen von Sitzungen finden Sie unter [Häufige Workflows](/de/common-workflows#resume-previous-conversations).

119 

120### Fortsetzen von Remote-Sitzungen von Claude.ai

121 

122Wenn Sie [Claude Code im Web](/de/claude-code-on-the-web) verwenden, können Sie diese Remote-Sitzungen direkt in VS Code fortsetzen. Dies erfordert die Anmeldung mit **Claude.ai Subscription**, nicht Anthropic Console.

123 

124<Steps>

125 <Step title="Öffnen Sie den Sitzungsverlauf">

126 Klicken Sie auf die Schaltfläche **Sitzungsverlauf** oben im Claude Code-Panel.

127 </Step>

128 

129 <Step title="Wählen Sie die Registerkarte „Remote“">

130 Der Dialog zeigt zwei Registerkarten: Lokal und Remote. Klicken Sie auf **Remote**, um Sitzungen von claude.ai anzuzeigen.

131 </Step>

132 

133 <Step title="Wählen Sie eine Sitzung zum Fortsetzen">

134 Durchsuchen oder suchen Sie Ihre Remote-Sitzungen. Klicken Sie auf eine beliebige Sitzung, um sie herunterzuladen und das Gespräch lokal fortzusetzen.

135 </Step>

136</Steps>

137 

138<Note>

139 Nur Web-Sitzungen, die mit einem GitHub-Repository gestartet wurden, werden auf der Registerkarte 'Remote" angezeigt. Das Fortsetzen lädt den Gesprächsverlauf lokal; Änderungen werden nicht mit claude.ai synchronisiert.

140</Note>

141 

142## Passen Sie Ihren Workflow an

143 

144Sobald Sie einsatzbereit sind, können Sie das Claude-Panel repositionieren, mehrere Sitzungen ausführen oder zum Terminal-Modus wechseln.

145 

146### Wählen Sie, wo Claude lebt

147 

148Sie können das Claude-Panel ziehen, um es überall in VS Code zu repositionieren. Greifen Sie die Registerkarte oder Titelleiste des Panels und ziehen Sie es zu:

149 

150* **Sekundäre Seitenleiste**: die rechte Seite des Fensters. Hält Claude sichtbar, während Sie codieren.

151* **Primäre Seitenleiste**: die linke Seitenleiste mit Symbolen für Explorer, Suche usw.

152* **Editor-Bereich**: öffnet Claude als Registerkarte neben Ihren Dateien. Nützlich für Nebenaufgaben.

153 

154<Tip>

155 Verwenden Sie die Seitenleiste für Ihre Haupt-Claude-Sitzung und öffnen Sie zusätzliche Registerkarten für Nebenaufgaben. Claude merkt sich Ihren bevorzugten Ort. Das Symbol der Sitzungsliste in der Aktivitätsleiste ist separat vom Claude-Panel: Die Sitzungsliste ist immer in der Aktivitätsleiste sichtbar, während das Claude-Panel-Symbol nur dort angezeigt wird, wenn das Panel an der linken Seitenleiste angedockt ist.

156</Tip>

157 

158### Führen Sie mehrere Gespräche aus

159 

160Verwenden Sie **In neuer Registerkarte öffnen** oder **In neuem Fenster öffnen** aus der Befehlspalette, um zusätzliche Gespräche zu starten. Jedes Gespräch behält seinen eigenen Verlauf und Kontext bei, sodass Sie parallel an verschiedenen Aufgaben arbeiten können.

161 

162Bei Verwendung von Registerkarten zeigt ein kleiner farbiger Punkt auf dem Spark-Symbol den Status an: Blau bedeutet, dass eine Genehmigungsanfrage ausstehend ist, Orange bedeutet, dass Claude fertig ist, während die Registerkarte verborgen war.

163 

164### Wechseln Sie zum Terminal-Modus

165 

166Standardmäßig öffnet die Erweiterung ein grafisches Chat-Panel. Wenn Sie die CLI-ähnliche Benutzeroberfläche bevorzugen, öffnen Sie die [Einstellung „Terminal verwenden"](vscode://settings/claudeCode.useTerminal) und aktivieren Sie das Kontrollkästchen.

167 

168Sie können auch VS Code-Einstellungen öffnen (`Cmd+,` auf Mac oder `Ctrl+,` auf Windows/Linux), zu Erweiterungen → Claude Code gehen und **Terminal verwenden** aktivieren.

169 

170## Verwalten Sie Plugins

171 

172Die VS Code-Erweiterung enthält eine grafische Benutzeroberfläche zum Installieren und Verwalten von [plugins](/de/plugins). Geben Sie `/plugins` in das Eingabefeld ein, um die Benutzeroberfläche **Plugins verwalten** zu öffnen.

173 

174### Installieren Sie Plugins

175 

176Der Plugin-Dialog zeigt zwei Registerkarten: **Plugins** und **Marketplaces**.

177 

178Auf der Registerkarte „Plugins":

179 

180* **Installierte Plugins** werden oben mit Umschaltern angezeigt, um sie zu aktivieren oder zu deaktivieren

181* **Verfügbare Plugins** aus Ihren konfigurierten Marketplaces werden unten angezeigt

182* Suchen Sie, um Plugins nach Name oder Beschreibung zu filtern

183* Klicken Sie auf **Installieren** bei einem beliebigen verfügbaren Plugin

184 

185Wenn Sie ein Plugin installieren, wählen Sie den Installationsumfang:

186 

187* **Für Sie installieren**: verfügbar in allen Ihren Projekten (Benutzerumfang)

188* **Für dieses Projekt installieren**: geteilt mit Projektmitarbeitern (Projektumfang)

189* **Lokal installieren**: nur für Sie, nur in diesem Repository (lokaler Umfang)

190 

191### Verwalten Sie Marketplaces

192 

193Wechseln Sie zur Registerkarte **Marketplaces**, um Plugin-Quellen hinzuzufügen oder zu entfernen:

194 

195* Geben Sie ein GitHub-Repo, eine URL oder einen lokalen Pfad ein, um einen neuen Marketplace hinzuzufügen

196* Klicken Sie auf das Aktualisierungssymbol, um die Plugin-Liste eines Marketplace zu aktualisieren

197* Klicken Sie auf das Papierkorbsymbol, um einen Marketplace zu entfernen

198 

199Nach Änderungen fordert ein Banner Sie auf, Claude Code neu zu starten, um die Aktualisierungen anzuwenden.

200 

201<Note>

202 Die Plugin-Verwaltung in VS Code verwendet unter der Haube die gleichen CLI-Befehle. Plugins und Marketplaces, die Sie in der Erweiterung konfigurieren, sind auch in der CLI verfügbar, und umgekehrt.

203</Note>

204 

205Weitere Informationen zum Plugin-System finden Sie unter [Plugins](/de/plugins) und [Plugin-Marketplaces](/de/plugin-marketplaces).

206 

207## Automatisieren Sie Browser-Aufgaben mit Chrome

208 

209Verbinden Sie Claude mit Ihrem Chrome-Browser, um Web-Apps zu testen, mit Konsolenprotokollen zu debuggen und Browser-Workflows zu automatisieren, ohne VS Code zu verlassen. Dies erfordert die [Claude in Chrome-Erweiterung](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) Version 1.0.36 oder höher.

210 

211Geben Sie `@browser` in das Eingabefeld ein, gefolgt von dem, was Claude tun soll:

212 

213```text theme={null}

214@browser go to localhost:3000 and check the console for errors

215```

216 

217Sie können auch das Anhang-Menü öffnen, um bestimmte Browser-Tools wie das Öffnen einer neuen Registerkarte oder das Lesen von Seiteninhalten auszuwählen.

218 

219Claude öffnet neue Registerkarten für Browser-Aufgaben und teilt den Anmeldestatus Ihres Browsers, sodass es auf jede Website zugreifen kann, bei der Sie bereits angemeldet sind.

220 

221Anweisungen zum Einrichten, die vollständige Liste der Funktionen und Fehlerbehebung finden Sie unter [Claude Code mit Chrome verwenden](/de/chrome).

222 

223## VS Code-Befehle und Tastaturkürzel

224 

225Öffnen Sie die Befehlspalette (`Cmd+Shift+P` auf Mac oder `Ctrl+Shift+P` auf Windows/Linux) und geben Sie „Claude Code" ein, um alle verfügbaren VS Code-Befehle für die Claude Code-Erweiterung anzuzeigen.

226 

227Einige Tastaturkürzel hängen davon ab, welches Panel „fokussiert" ist (Tastatureingaben empfängt). Wenn sich Ihr Cursor in einer Codedatei befindet, ist der Editor fokussiert. Wenn sich Ihr Cursor im Eingabefeld von Claude befindet, ist Claude fokussiert. Verwenden Sie `Cmd+Esc` / `Ctrl+Esc`, um zwischen ihnen zu wechseln.

228 

229<Note>

230 Dies sind VS Code-Befehle zum Steuern der Erweiterung. Nicht alle integrierten Claude Code-Befehle sind in der Erweiterung verfügbar. Siehe [VS Code-Erweiterung vs. Claude Code CLI](#vs-code-extension-vs-claude-code-cli) für Details.

231</Note>

232 

233| Befehl | Tastaturkürzel | Beschreibung |

234| ----------------------------- | -------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |

235| Focus Input | `Cmd+Esc` (Mac) / `Ctrl+Esc` (Windows/Linux) | Fokus zwischen Editor und Claude umschalten |

236| In Seitenleiste öffnen | - | Öffnen Sie Claude in der linken Seitenleiste |

237| Im Terminal öffnen | - | Öffnen Sie Claude im Terminal-Modus |

238| In neuer Registerkarte öffnen | `Cmd+Shift+Esc` (Mac) / `Ctrl+Shift+Esc` (Windows/Linux) | Öffnen Sie ein neues Gespräch als Editor-Registerkarte |

239| In neuem Fenster öffnen | - | Öffnen Sie ein neues Gespräch in einem separaten Fenster |

240| Neues Gespräch | `Cmd+N` (Mac) / `Ctrl+N` (Windows/Linux) | Starten Sie ein neues Gespräch. Erfordert, dass Claude fokussiert ist und `enableNewConversationShortcut` auf `true` gesetzt ist |

241| @-Erwähnungsreferenz einfügen | `Option+K` (Mac) / `Alt+K` (Windows/Linux) | Fügen Sie eine Referenz zur aktuellen Datei und Auswahl ein (erfordert, dass der Editor fokussiert ist) |

242| Protokolle anzeigen | - | Anzeigen von Erweiterungs-Debug-Protokollen |

243| Abmelden | - | Melden Sie sich von Ihrem Anthropic-Konto ab |

244 

245### Starten Sie eine VS Code-Registerkarte von anderen Tools aus

246 

247Die Erweiterung registriert einen URI-Handler unter `vscode://anthropic.claude-code/open`. Verwenden Sie ihn, um eine neue Claude Code-Registerkarte von Ihrem eigenen Tooling aus zu öffnen: ein Shell-Alias, ein Browser-Lesezeichen oder ein beliebiges Skript, das eine URL öffnen kann. Wenn VS Code nicht bereits ausgeführt wird, wird es beim Öffnen der URL zuerst gestartet. Wenn VS Code bereits ausgeführt wird, wird die URL in dem Fenster geöffnet, das derzeit fokussiert ist.

248 

249Rufen Sie den Handler mit dem URL-Opener Ihres Betriebssystems auf.

250 

251<Tabs>

252 <Tab title="macOS">

253 ```bash theme={null}

254 open "vscode://anthropic.claude-code/open"

255 ```

256 </Tab>

257 

258 <Tab title="Linux">

259 ```bash theme={null}

260 xdg-open "vscode://anthropic.claude-code/open"

261 ```

262 </Tab>

263 

264 <Tab title="Windows">

265 In PowerShell:

266 

267 ```powershell theme={null}

268 Start-Process "vscode://anthropic.claude-code/open"

269 ```

270 

271 In `cmd.exe` behandelt `start` sein erstes Argument in Anführungszeichen als Fenstertitel, daher übergeben Sie einen leeren Titel vor der URL:

272 

273 ```cmd theme={null}

274 start "" "vscode://anthropic.claude-code/open"

275 ```

276 </Tab>

277</Tabs>

278 

279Der Handler akzeptiert zwei optionale Abfrageparameter:

280 

281| Parameter | Beschreibung |

282| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

283| `prompt` | Text zum Vorausfüllen im Eingabefeld. Muss URL-codiert sein. Das Eingabefeld wird vorausgefüllt, aber nicht automatisch gesendet. |

284| `session` | Eine Sitzungs-ID zum Fortsetzen statt zum Starten eines neuen Gesprächs. Die Sitzung muss zum derzeit in VS Code geöffneten Arbeitsbereich gehören. Wenn die Sitzung nicht gefunden wird, wird stattdessen ein neues Gespräch gestartet. Wenn die Sitzung bereits in einer Registerkarte geöffnet ist, wird diese Registerkarte fokussiert. Um eine Sitzungs-ID programmgesteuert zu erfassen, siehe [Gespräche fortsetzen](/de/headless#continue-conversations). |

285 

286Um beispielsweise eine Registerkarte mit „review my changes" vorausgefüllt zu öffnen:

287 

288```text theme={null}

289vscode://anthropic.claude-code/open?prompt=review%20my%20changes

290```

291 

292Um stattdessen eine Terminal-Sitzung zu starten, verwenden Sie den CLI-Handler `claude-cli://`. Siehe [Sitzungen von Links aus starten](/de/deep-links).

293 

294## Konfigurieren Sie Einstellungen

295 

296Die Erweiterung hat zwei Arten von Einstellungen:

297 

298* **Erweiterungseinstellungen** in VS Code: Steuern Sie das Verhalten der Erweiterung in VS Code. Öffnen Sie mit `Cmd+,` (Mac) oder `Ctrl+,` (Windows/Linux), dann gehen Sie zu Erweiterungen → Claude Code. Sie können auch `/` eingeben und **General Config** auswählen, um Einstellungen zu öffnen.

299* **Claude Code-Einstellungen** in `~/.claude/settings.json`: geteilt zwischen der Erweiterung und der CLI. Verwenden Sie für zulässige Befehle, Umgebungsvariablen, hooks und MCP servers. Siehe [Einstellungen](/de/settings) für Details.

300 

301<Tip>

302 Fügen Sie `"$schema": "https://json.schemastore.org/claude-code-settings.json"` zu Ihrer `settings.json` hinzu, um Autovervollständigung und Inline-Validierung für alle verfügbaren Einstellungen direkt in VS Code zu erhalten.

303</Tip>

304 

305### Erweiterungseinstellungen

306 

307| Einstellung | Standard | Beschreibung |

308| --------------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

309| `useTerminal` | `false` | Starten Sie Claude im Terminal-Modus statt im grafischen Panel |

310| `initialPermissionMode` | `default` | Steuert Genehmigungsaufforderungen für neue Gespräche: `default`, `plan`, `acceptEdits` oder `bypassPermissions`. Siehe [Genehmigungsmodi](/de/permission-modes). |

311| `preferredLocation` | `panel` | Wo Claude öffnet: `sidebar` (rechts) oder `panel` (neue Registerkarte) |

312| `autosave` | `true` | Speichern Sie Dateien automatisch, bevor Claude sie liest oder schreibt |

313| `useCtrlEnterToSend` | `false` | Verwenden Sie Ctrl/Cmd+Enter statt Enter, um Eingabeaufforderungen zu senden |

314| `enableNewConversationShortcut` | `false` | Aktivieren Sie Cmd/Ctrl+N, um ein neues Gespräch zu starten |

315| `hideOnboarding` | `false` | Blenden Sie die Onboarding-Checkliste aus (Abschlusskappe-Symbol) |

316| `respectGitIgnore` | `true` | Schließen Sie .gitignore-Muster aus Dateisuchvorgängen aus |

317| `usePythonEnvironment` | `true` | Aktivieren Sie die Python-Umgebung des Arbeitsbereichs beim Ausführen von Claude. Erfordert die Python-Erweiterung. |

318| `environmentVariables` | `[]` | Legen Sie Umgebungsvariablen für den Claude-Prozess fest. Verwenden Sie stattdessen Claude Code-Einstellungen für gemeinsame Konfiguration. |

319| `disableLoginPrompt` | `false` | Überspringen Sie Authentifizierungsaufforderungen (für Setups von Drittanbietern) |

320| `allowDangerouslySkipPermissions` | `false` | Fügt [Auto-Modus](/de/permission-modes#eliminate-prompts-with-auto-mode) und Bypass-Berechtigungen zum Moduswahlschalter hinzu. Auto-Modus hat [Plan-, Admin-, Modell- und Anbieteranforderungen](/de/permission-modes#eliminate-prompts-with-auto-mode), daher bleibt die Option möglicherweise auch mit diesem Umschalter nicht verfügbar. Verwenden Sie Bypass-Berechtigungen nur in Sandboxes ohne Internetzugang. |

321| `claudeProcessWrapper` | - | Ausführbarer Pfad, der zum Starten des Claude-Prozesses verwendet wird |

322 

323## VS Code-Erweiterung vs. Claude Code CLI

324 

325Claude Code ist sowohl als VS Code-Erweiterung (grafisches Panel) als auch als CLI (Befehlszeilenschnittstelle im Terminal) verfügbar. Einige Funktionen sind nur in der CLI verfügbar. Wenn Sie eine CLI-only-Funktion benötigen, führen Sie `claude` im integrierten Terminal von VS Code aus.

326 

327| Funktion | CLI | VS Code-Erweiterung |

328| ------------------------ | -------------------- | ----------------------------------------------------------------------------------------------------- |

329| Befehle und Skills | [Alle](/de/commands) | Teilmenge (geben Sie `/` ein, um verfügbare anzuzeigen) |

330| MCP server-Konfiguration | Ja | Teilweise (fügen Sie Server über CLI hinzu; verwalten Sie vorhandene Server mit `/mcp` im Chat-Panel) |

331| Checkpoints | Ja | Ja |

332| `!` Bash-Tastaturkürzel | Ja | Nein |

333| Tab-Vervollständigung | Ja | Nein |

334 

335### Zurückspulen mit Checkpoints

336 

337Die VS Code-Erweiterung unterstützt Checkpoints, die Claudes Dateibearbeitungen verfolgen und es Ihnen ermöglichen, zu einem vorherigen Zustand zurückzuspulen. Bewegen Sie den Mauszeiger über eine beliebige Nachricht, um die Schaltfläche zum Zurückspulen anzuzeigen, und wählen Sie dann aus drei Optionen:

338 

339* **Gespräch von hier aus verzweigen**: Starten Sie einen neuen Gesprächszweig aus dieser Nachricht, während Sie alle Codeänderungen intakt halten

340* **Code hier zurückspulen**: Revert-Dateiänderungen zu diesem Punkt im Gespräch, während Sie den vollständigen Gesprächsverlauf behalten

341* **Gespräch verzweigen und Code zurückspulen**: Starten Sie einen neuen Gesprächszweig und revert-Dateiänderungen zu diesem Punkt

342 

343Vollständige Details zur Funktionsweise von Checkpoints und deren Einschränkungen finden Sie unter [Checkpointing](/de/checkpointing).

344 

345### Führen Sie CLI in VS Code aus

346 

347Um die CLI zu verwenden und in VS Code zu bleiben, öffnen Sie das integrierte Terminal (`` Ctrl+` `` auf Windows/Linux oder `` Cmd+` `` auf Mac) und führen Sie `claude` aus. Die CLI wird automatisch mit Ihrer IDE für Funktionen wie Diff-Anzeige und Diagnosefreigabe integriert.

348 

349Wenn Sie ein externes Terminal verwenden, führen Sie `/ide` in Claude Code aus, um es mit VS Code zu verbinden.

350 

351### Wechseln Sie zwischen Erweiterung und CLI

352 

353Die Erweiterung und die CLI teilen den gleichen Gesprächsverlauf. Um ein Erweiterungsgespräch in der CLI fortzusetzen, führen Sie `claude --resume` im Terminal aus. Dies öffnet eine interaktive Auswahl, in der Sie Ihr Gespräch suchen und auswählen können.

354 

355### Beziehen Sie Terminal-Ausgabe in Eingabeaufforderungen ein

356 

357Referenzieren Sie Terminal-Ausgabe in Ihren Eingabeaufforderungen mit `@terminal:name`, wobei `name` der Titel des Terminals ist. Dies ermöglicht Claude, Befehlsausgabe, Fehlermeldungen oder Protokolle zu sehen, ohne zu kopieren und einzufügen.

358 

359### Überwachen Sie Hintergrundprozesse

360 

361Wenn Claude lange laufende Befehle ausführt, zeigt die Erweiterung den Fortschritt in der Statusleiste an. Die Sichtbarkeit für Hintergrundaufgaben ist jedoch im Vergleich zur CLI begrenzt. Für bessere Sichtbarkeit lassen Sie Claude den Befehl ausgeben, damit Sie ihn im integrierten Terminal von VS Code ausführen können.

362 

363### Verbinden Sie sich mit externen Tools mit MCP

364 

365MCP (Model Context Protocol) servers geben Claude Zugriff auf externe Tools, Datenbanken und APIs.

366 

367Um einen MCP server hinzuzufügen, öffnen Sie das integrierte Terminal (`` Ctrl+` `` oder `` Cmd+` ``) und führen Sie `claude mcp add` aus. Das folgende Beispiel fügt Githubs Remote-MCP-Server hinzu, der sich mit einem [persönlichen Zugangstoken](https://github.com/settings/personal-access-tokens) authentifiziert, das als Header übergeben wird:

368 

369```bash theme={null}

370claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \

371 --header "Authorization: Bearer YOUR_GITHUB_PAT"

372```

373 

374Nach der Konfiguration bitten Sie Claude, die Tools zu verwenden (z. B. „Review PR #456").

375 

376Um MCP servers zu verwalten, ohne VS Code zu verlassen, geben Sie `/mcp` in das Chat-Panel ein. Der MCP-Verwaltungsdialog ermöglicht es Ihnen, Server zu aktivieren oder zu deaktivieren, sich erneut mit einem Server zu verbinden und OAuth-Authentifizierung zu verwalten. Siehe die [MCP-Dokumentation](/de/mcp) für verfügbare servers.

377 

378## Arbeiten Sie mit Git

379 

380Claude Code wird mit Git integriert, um direkt in VS Code bei Versionskontroll-Workflows zu helfen. Bitten Sie Claude, Änderungen zu committen, Pull Requests zu erstellen oder über Branches zu arbeiten.

381 

382### Erstellen Sie Commits und Pull Requests

383 

384Claude kann Änderungen bereitstellen, Commit-Nachrichten schreiben und Pull Requests basierend auf Ihrer Arbeit erstellen:

385 

386```text theme={null}

387> commit my changes with a descriptive message

388> create a pr for this feature

389> summarize the changes I've made to the auth module

390```

391 

392Beim Erstellen von Pull Requests generiert Claude Beschreibungen basierend auf den tatsächlichen Codeänderungen und kann Kontext über Tests oder Implementierungsentscheidungen hinzufügen.

393 

394### Verwenden Sie Git worktrees für parallele Aufgaben

395 

396Verwenden Sie das Flag `--worktree` (`-w`), um Claude in einem isolierten worktree mit seinen eigenen Dateien und Branch zu starten:

397 

398```bash theme={null}

399claude --worktree feature-auth

400```

401 

402Jeder worktree behält einen unabhängigen Dateizustand bei, während er die Git-Historie teilt. Dies verhindert, dass Claude-Instanzen sich gegenseitig beeinflussen, wenn sie an verschiedenen Aufgaben arbeiten. Weitere Details finden Sie unter [Führen Sie parallele Claude Code-Sitzungen mit Git worktrees aus](/de/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees).

403 

404## Verwenden Sie Drittanbieter

405 

406Standardmäßig verbindet sich Claude Code direkt mit der API von Anthropic. Wenn Ihre Organisation Amazon Bedrock, Google Vertex AI oder Microsoft Foundry verwendet, um auf Claude zuzugreifen, konfigurieren Sie die Erweiterung, um stattdessen Ihren Anbieter zu verwenden:

407 

408<Steps>

409 <Step title="Deaktivieren Sie die Anmeldungsaufforderung">

410 Öffnen Sie die [Einstellung 'Anmeldungsaufforderung deaktivieren"](vscode://settings/claudeCode.disableLoginPrompt) und aktivieren Sie das Kontrollkästchen.

411 

412 Sie können auch VS Code-Einstellungen öffnen (`Cmd+,` auf Mac oder `Ctrl+,` auf Windows/Linux), nach „Claude Code login" suchen und **Anmeldungsaufforderung deaktivieren** aktivieren.

413 </Step>

414 

415 <Step title="Konfigurieren Sie Ihren Anbieter">

416 Folgen Sie dem Setup-Leitfaden für Ihren Anbieter:

417 

418 * [Claude Code auf Amazon Bedrock](/de/amazon-bedrock)

419 * [Claude Code auf Google Vertex AI](/de/google-vertex-ai)

420 * [Claude Code auf Microsoft Foundry](/de/microsoft-foundry)

421 

422 Diese Leitfäden behandeln die Konfiguration Ihres Anbieters in `~/.claude/settings.json`, was sicherstellt, dass Ihre Einstellungen zwischen der VS Code-Erweiterung und der CLI geteilt werden.

423 </Step>

424</Steps>

425 

426## Sicherheit und Datenschutz

427 

428Ihr Code bleibt privat. Claude Code verarbeitet Ihren Code, um Unterstützung zu bieten, verwendet ihn aber nicht zum Trainieren von Modellen. Weitere Informationen zur Datenbehandlung und zum Deaktivieren der Protokollierung finden Sie unter [Daten und Datenschutz](/de/data-usage).

429 

430Mit aktivierten Auto-Edit-Berechtigungen kann Claude Code VS Code-Konfigurationsdateien (wie `settings.json` oder `tasks.json`) ändern, die VS Code möglicherweise automatisch ausführt. Um das Risiko bei der Arbeit mit nicht vertrauenswürdigem Code zu verringern:

431 

432* Aktivieren Sie [VS Code Restricted Mode](https://code.visualstudio.com/docs/editor/workspace-trust#_restricted-mode) für nicht vertrauenswürdige Arbeitsbereiche

433* Verwenden Sie den manuellen Genehmigungsmodus statt Auto-Accept für Bearbeitungen

434* Überprüfen Sie Änderungen sorgfältig, bevor Sie sie akzeptieren

435 

436### Der integrierte IDE MCP server

437 

438Wenn die Erweiterung aktiv ist, wird ein lokaler MCP server ausgeführt, mit dem sich die CLI automatisch verbindet. Dies ist, wie die CLI Diffs in VS Codes nativem Diff-Viewer öffnet, Ihre aktuelle Auswahl für `@`-Erwähnungen liest und – wenn Sie in einem Jupyter-Notebook arbeiten – VS Code auffordert, Zellen auszuführen.

439 

440Der Server heißt `ide` und ist in `/mcp` verborgen, da es nichts zu konfigurieren gibt. Wenn Ihre Organisation jedoch einen `PreToolUse` Hook verwendet, um MCP-Tools auf eine Allowlist zu setzen, müssen Sie wissen, dass er existiert.

441 

442**Transport und Authentifizierung.** Der Server bindet sich an `127.0.0.1` auf einem zufälligen hohen Port und ist von anderen Maschinen nicht erreichbar. Jede Erweiterungsaktivierung generiert ein frisches zufälliges Auth-Token, das die CLI präsentieren muss, um sich zu verbinden. Das Token wird in eine Lock-Datei unter `~/.claude/ide/` mit `0600`-Berechtigungen in einem `0700`-Verzeichnis geschrieben, sodass nur der Benutzer, der VS Code ausführt, es lesen kann.

443 

444**Tools, die dem Modell ausgesetzt sind.** Der Server hostet ein Dutzend Tools, aber nur zwei sind für das Modell sichtbar. Der Rest ist interner RPC, den die CLI für ihre eigene Benutzeroberfläche verwendet – Diffs öffnen, Auswahlen lesen, Dateien speichern – und wird gefiltert, bevor die Tool-Liste Claude erreicht.

445 

446| Tool-Name (wie von Hooks gesehen) | Was es tut | Schreibt? |

447| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------- |

448| `mcp__ide__getDiagnostics` | Gibt Language-Server-Diagnosen zurück – die Fehler und Warnungen im Problembereich von VS Code. Optional auf eine Datei beschränkt. | Nein |

449| `mcp__ide__executeCode` | Führt Python-Code im Kernel des aktiven Jupyter-Notebooks aus. Siehe Bestätigungsfluss unten. | Ja |

450 

451**Jupyter-Ausführung fragt immer zuerst.** `mcp__ide__executeCode` kann nichts stillschweigend ausführen. Bei jedem Aufruf wird der Code als neue Zelle am Ende des aktiven Notebooks eingefügt, VS Code scrollt ihn in die Ansicht, und eine native Quick Pick fragt Sie, ob Sie **Ausführen** oder **Abbrechen** möchten. Abbrechen – oder das Picker mit `Esc` schließen – gibt einen Fehler an Claude zurück und nichts wird ausgeführt. Das Tool weigert sich auch kategorisch, wenn es kein aktives Notebook gibt, wenn die Jupyter-Erweiterung (`ms-toolsai.jupyter`) nicht installiert ist, oder wenn der Kernel nicht Python ist.

452 

453<Note>

454 Die Quick Pick-Bestätigung ist separat von `PreToolUse` Hooks. Ein Allowlist-Eintrag für `mcp__ide__executeCode` lässt Claude eine Zelle *vorschlagen*; die Quick Pick in VS Code ist das, was sie tatsächlich *ausführen* lässt.

455</Note>

456 

457<a id="troubleshooting" />

458 

459## Beheben Sie häufige Probleme

460 

461### Erweiterung wird nicht installiert

462 

463* Stellen Sie sicher, dass Sie eine kompatible Version von VS Code haben (1.98.0 oder später)

464* Überprüfen Sie, dass VS Code die Berechtigung zum Installieren von Erweiterungen hat

465* Versuchen Sie, direkt vom [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code) zu installieren

466 

467### Spark-Symbol nicht sichtbar

468 

469Das Spark-Symbol wird in der **Editor-Symbolleiste** (oben rechts des Editors) angezeigt, wenn Sie eine Datei geöffnet haben. Wenn Sie es nicht sehen:

470 

4711. **Öffnen Sie eine Datei**: Das Symbol erfordert, dass eine Datei geöffnet ist. Nur einen Ordner zu öffnen reicht nicht aus.

4722. **Überprüfen Sie die VS Code-Version**: Erfordert 1.98.0 oder höher (Hilfe → Über)

4733. **Starten Sie VS Code neu**: Führen Sie „Developer: Reload Window" aus der Befehlspalette aus

4744. **Deaktivieren Sie konfliktverursachende Erweiterungen**: Deaktivieren Sie vorübergehend andere KI-Erweiterungen (Cline, Continue usw.)

4755. **Überprüfen Sie die Arbeitsbereichsvertrauenswürdigkeit**: Die Erweiterung funktioniert nicht im Restricted Mode

476 

477Alternativ klicken Sie auf „✱ Claude Code" in der **Statusleiste** (untere rechte Ecke). Dies funktioniert auch ohne offene Datei. Sie können auch die **Befehlspalette** (`Cmd+Shift+P` / `Ctrl+Shift+P`) verwenden und „Claude Code" eingeben.

478 

479### Claude Code antwortet nie

480 

481Wenn Claude Code nicht auf Ihre Eingabeaufforderungen antwortet:

482 

4831. **Überprüfen Sie Ihre Internetverbindung**: Stellen Sie sicher, dass Sie eine stabile Internetverbindung haben

4842. **Starten Sie ein neues Gespräch**: Versuchen Sie, ein neues Gespräch zu starten, um zu sehen, ob das Problem weiterhin besteht

4853. **Versuchen Sie die CLI**: Führen Sie `claude` vom Terminal aus, um zu sehen, ob Sie detailliertere Fehlermeldungen erhalten

486 

487Wenn Probleme weiterhin bestehen, [melden Sie ein Problem auf GitHub](https://github.com/anthropics/claude-code/issues) mit Details zum Fehler.

488 

489## Deinstallieren Sie die Erweiterung

490 

491So deinstallieren Sie die Claude Code-Erweiterung:

492 

4931. Öffnen Sie die Ansicht „Erweiterungen" (`Cmd+Shift+X` auf Mac oder `Ctrl+Shift+X` auf Windows/Linux)

4942. Suchen Sie nach „Claude Code"

4953. Klicken Sie auf **Deinstallieren**

496 

497Um auch Erweiterungsdaten zu entfernen und alle Einstellungen zurückzusetzen:

498 

499```bash theme={null}

500rm -rf ~/.vscode/globalStorage/anthropic.claude-code

501```

502 

503Weitere Hilfe finden Sie im [Fehlerbehebungsleitfaden](/de/troubleshooting).

504 

505## Nächste Schritte

506 

507Jetzt, da Sie Claude Code in VS Code eingerichtet haben:

508 

509* [Erkunden Sie häufige Workflows](/de/common-workflows), um das Beste aus Claude Code herauszuholen

510* [Richten Sie MCP servers ein](/de/mcp), um Claudes Funktionen mit externen Tools zu erweitern. Fügen Sie Server über die CLI hinzu, verwalten Sie sie dann mit `/mcp` im Chat-Panel.

511* [Konfigurieren Sie Claude Code-Einstellungen](/de/settings), um zulässige Befehle, hooks und mehr anzupassen. Diese Einstellungen werden zwischen der Erweiterung und der CLI geteilt.

web-quickstart.md +220 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Erste Schritte mit Claude Code im Web

6 

7> Führen Sie Claude Code in der Cloud aus Ihrem Browser oder Telefon aus. Verbinden Sie ein GitHub-Repository, übermitteln Sie eine Aufgabe und überprüfen Sie den PR ohne lokales Setup.

8 

9<Note>

10 Claude Code im Web befindet sich in der Forschungsvorschau für Pro-, Max- und Team-Benutzer sowie für Enterprise-Benutzer mit Premium-Sitzen oder Chat + Claude Code-Sitzen.

11</Note>

12 

13Claude Code im Web wird auf von Anthropic verwalteter Cloud-Infrastruktur ausgeführt, anstatt auf Ihrem Computer. Übermitteln Sie Aufgaben von [claude.ai/code](https://claude.ai/code) in Ihrem Browser oder der Claude-Mobilanwendung.

14 

15Sie benötigen ein GitHub-Repository, um [zu beginnen](#connect-github-and-create-an-environment). Claude klont es in eine isolierte virtuelle Maschine, nimmt Änderungen vor und pusht einen Branch zur Überprüfung. Sitzungen bleiben über Geräte hinweg bestehen, sodass eine Aufgabe, die Sie auf Ihrem Laptop starten, später von Ihrem Telefon aus überprüft werden kann.

16 

17Claude Code im Web funktioniert gut für:

18 

19* **Parallele Aufgaben**: Führen Sie mehrere unabhängige Aufgaben gleichzeitig aus, jede in ihrer eigenen Sitzung und ihrem eigenen Branch, ohne mehrere Worktrees zu verwalten

20* **Repositories, die Sie nicht lokal haben**: Claude klont das Repository bei jeder Sitzung neu, sodass Sie es nicht auschecken müssen

21* **Aufgaben, die keine häufige Steuerung benötigen**: Übermitteln Sie eine gut definierte Aufgabe, machen Sie etwas anderes und überprüfen Sie das Ergebnis, wenn Claude fertig ist

22* **Code-Fragen und Erkundung**: Verstehen Sie eine Codebasis oder verfolgen Sie, wie eine Funktion implementiert wird, ohne einen lokalen Checkout

23 

24Für Arbeiten, die Ihre lokale Konfiguration, Tools oder Umgebung benötigen, ist die lokale Ausführung von Claude Code oder die Verwendung von [Remote Control](/de/remote-control) besser geeignet.

25 

26## Wie Sitzungen ablaufen

27 

28Wenn Sie eine Aufgabe übermitteln:

29 

301. **Klonen und vorbereiten**: Ihr Repository wird auf eine von Anthropic verwaltete VM geklont und Ihr [Setup-Skript](/de/claude-code-on-the-web#setup-scripts) wird ausgeführt, falls konfiguriert.

312. **Netzwerk konfigurieren**: Der Internetzugriff wird basierend auf der [Zugriffsstufe](/de/claude-code-on-the-web#access-levels) Ihrer Umgebung festgelegt.

323. **Arbeit**: Claude analysiert Code, nimmt Änderungen vor, führt Tests aus und überprüft seine Arbeit. Sie können zuschauen und die ganze Zeit über steuern oder weggehen und zurückkommen, wenn es fertig ist.

334. **Branch pushen**: Wenn Claude einen Haltepunkt erreicht, pusht es seinen Branch zu GitHub. Sie überprüfen den Diff, hinterlassen Inline-Kommentare, erstellen einen PR oder senden eine weitere Nachricht, um weiterzumachen.

34 

35Die Sitzung wird nicht geschlossen, wenn der Branch gepusht wird. PR-Erstellung und weitere Bearbeitungen erfolgen alle innerhalb desselben Gesprächs.

36 

37## Vergleichen Sie die Möglichkeiten, Claude Code auszuführen

38 

39Claude Code verhält sich überall gleich. Was sich ändert, ist, wo Code ausgeführt wird und ob Ihre lokale Konfiguration verfügbar ist. Die Desktop-App bietet sowohl lokale als auch Cloud-Sitzungen, daher hängen die Antworten unten davon ab, welche Sie wählen:

40 

41| | Im Web | Remote Control | Terminal CLI | Desktop-App |

42| :------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------- | :----------------------- | :----------------------------- |

43| **Code wird ausgeführt auf** | Anthropic Cloud VM | Ihrem Computer | Ihrem Computer | Ihrem Computer oder Cloud VM |

44| **Sie chatten von** | claude.ai oder Mobilanwendung | claude.ai oder Mobilanwendung | Ihrem Terminal | Der Desktop-Benutzeroberfläche |

45| **Verwendet Ihre lokale Konfiguration** | Nein, nur Repository | Ja | Ja | Ja für lokal, nein für Cloud |

46| **Erfordert GitHub** | Ja, oder [bündeln Sie ein lokales Repository](/de/claude-code-on-the-web#send-local-repositories-without-github) über `--remote` | Nein | Nein | Nur für Cloud-Sitzungen |

47| **Läuft weiter, wenn Sie die Verbindung trennen** | Ja | Während das Terminal offen bleibt | Nein | Hängt vom Sitzungstyp ab |

48| **[Berechtigungsmodi](/de/permission-modes)** | Änderungen automatisch akzeptieren, Plan | Fragen, Änderungen automatisch akzeptieren, Plan | Alle Modi | Hängt vom Sitzungstyp ab |

49| **Netzwerkzugriff** | Konfigurierbar pro Umgebung | Netzwerk Ihres Computers | Netzwerk Ihres Computers | Hängt vom Sitzungstyp ab |

50 

51Siehe die Dokumentation zu [Terminal-Schnellstart](/de/quickstart), [Desktop-App](/de/desktop) oder [Remote Control](/de/remote-control), um diese einzurichten.

52 

53## GitHub verbinden und eine Umgebung erstellen

54 

55Das Setup ist ein einmaliger Prozess. Wenn Sie bereits die GitHub CLI verwenden, können Sie [dies von Ihrem Terminal aus tun](#connect-from-your-terminal), anstatt den Browser zu verwenden.

56 

57<Steps>

58 <Step title="Besuchen Sie claude.ai/code">

59 Gehen Sie zu [claude.ai/code](https://claude.ai/code) und melden Sie sich mit Ihrem Anthropic-Konto an.

60 </Step>

61 

62 <Step title="Installieren Sie die Claude GitHub App">

63 Nach der Anmeldung fordert Sie claude.ai/code auf, GitHub zu verbinden. Folgen Sie der Aufforderung, um die Claude GitHub App zu installieren und ihr Zugriff auf Ihre Repositories zu gewähren. Cloud-Sitzungen funktionieren mit vorhandenen GitHub-Repositories. Um ein neues Projekt zu starten, [erstellen Sie zunächst ein leeres Repository auf GitHub](https://github.com/new).

64 </Step>

65 

66 <Step title="Erstellen Sie Ihre Umgebung">

67 Nach dem Verbinden von GitHub werden Sie aufgefordert, eine Cloud-Umgebung zu erstellen. Die Umgebung steuert, welchen Netzwerkzugriff Claude während Sitzungen hat und was ausgeführt wird, wenn eine neue Sitzung erstellt wird. Siehe [Installierte Tools](/de/claude-code-on-the-web#installed-tools) für das, was ohne Konfiguration verfügbar ist.

68 

69 Das Formular hat diese Felder:

70 

71 * **Name**: eine Anzeigebeschriftung. Nützlich, wenn Sie mehrere Umgebungen für verschiedene Projekte oder Zugriffsstufen haben.

72 * **Netzwerkzugriff**: steuert, was die Sitzung im Internet erreichen kann. Der Standard, `Trusted`, ermöglicht Verbindungen zu [häufigen Paketregistern](/de/claude-code-on-the-web#default-allowed-domains) wie npm, PyPI und RubyGems, während der allgemeine Internetzugriff blockiert wird.

73 * **Umgebungsvariablen**: optionale Variablen, die in jeder Sitzung verfügbar sind, im `.env`-Format. Umschließen Sie Werte nicht mit Anführungszeichen, da Anführungszeichen als Teil des Werts gespeichert werden. Diese sind für jeden sichtbar, der diese Umgebung bearbeiten kann.

74 * **Setup-Skript**: ein optionales Bash-Skript, das vor dem Start von Claude Code ausgeführt wird. Verwenden Sie es, um System-Tools zu installieren, die die Cloud VM nicht enthält, wie `apt install -y gh`. Das Ergebnis wird [zwischengespeichert](/de/claude-code-on-the-web#environment-caching), sodass das Skript nicht bei jeder Sitzung erneut ausgeführt wird. Siehe [Setup-Skripte](/de/claude-code-on-the-web#setup-scripts) für Beispiele und Debugging-Tipps.

75 

76 Lassen Sie für ein erstes Projekt die Standardeinstellungen und klicken Sie auf **Umgebung erstellen**. Sie können [sie später bearbeiten oder zusätzliche Umgebungen erstellen](/de/claude-code-on-the-web#configure-your-environment) für verschiedene Projekte.

77 </Step>

78</Steps>

79 

80### Von Ihrem Terminal aus verbinden

81 

82Wenn Sie bereits die GitHub CLI (`gh`) verwenden, können Sie Claude Code im Web ohne das Öffnen eines Browsers einrichten. Dies erfordert die [Claude Code CLI](/de/quickstart). `/web-setup` liest Ihr lokales `gh`-Token, verknüpft es mit Ihrem Claude-Konto und erstellt eine Standard-Cloud-Umgebung, wenn Sie noch keine haben.

83 

84<Note>

85 Organisationen mit aktivierter [Zero Data Retention](/de/zero-data-retention) können `/web-setup` oder andere Cloud-Sitzungsfunktionen nicht verwenden. Wenn die GitHub CLI nicht installiert oder authentifiziert ist, öffnet `/web-setup` stattdessen den Browser-Onboarding-Flow.

86</Note>

87 

88<Steps>

89 <Step title="Authentifizieren Sie sich mit der GitHub CLI">

90 Authentifizieren Sie in Ihrer Shell die GitHub CLI, falls Sie dies noch nicht getan haben:

91 

92 ```bash theme={null}

93 gh auth login

94 ```

95 </Step>

96 

97 <Step title="Melden Sie sich bei Claude an">

98 Führen Sie in der Claude Code CLI `/login` aus, um sich mit Ihrem claude.ai-Konto anzumelden. Überspringen Sie diesen Schritt, wenn Sie bereits angemeldet sind.

99 </Step>

100 

101 <Step title="Führen Sie /web-setup aus">

102 Führen Sie in der Claude Code CLI Folgendes aus:

103 

104 ```text theme={null}

105 /web-setup

106 ```

107 

108 Dies synchronisiert Ihr `gh`-Token mit Ihrem Claude-Konto. Wenn Sie noch keine Cloud-Umgebung haben, erstellt `/web-setup` eine mit Trusted-Netzwerkzugriff und ohne Setup-Skript. Sie können [die Umgebung bearbeiten oder Variablen hinzufügen](/de/claude-code-on-the-web#configure-your-environment) danach. Sobald `/web-setup` abgeschlossen ist, können Sie Cloud-Sitzungen von Ihrem Terminal aus mit [`--remote`](/de/claude-code-on-the-web#from-terminal-to-web) starten oder wiederkehrende Aufgaben mit [`/schedule`](/de/routines) einrichten.

109 </Step>

110</Steps>

111 

112## Starten Sie eine Aufgabe

113 

114Mit GitHub verbunden und einer erstellten Umgebung können Sie Aufgaben übermitteln.

115 

116<Steps>

117 <Step title="Wählen Sie ein Repository und einen Branch">

118 Von [claude.ai/code](https://claude.ai/code) oder der Code-Registerkarte in der Claude-Mobilanwendung klicken Sie auf den Repository-Selector unter dem Eingabefeld und wählen Sie ein Repository aus, in dem Claude arbeiten soll. Jedes Repository zeigt einen Branch-Selector. Ändern Sie ihn, um Claude von einem Feature-Branch anstelle des Standards zu starten. Sie können mehrere Repositories hinzufügen, um in einer Sitzung über sie hinweg zu arbeiten.

119 </Step>

120 

121 <Step title="Wählen Sie einen Berechtigungsmodus">

122 Der Modus-Dropdown neben der Eingabe ist standardmäßig auf **Änderungen automatisch akzeptieren** eingestellt, wobei Claude Änderungen vornimmt und einen Branch pusht, ohne auf Genehmigung zu warten. Wechseln Sie zu **Plan-Modus**, wenn Claude einen Ansatz vorschlagen und auf Ihr Okay warten soll, bevor Dateien bearbeitet werden. Cloud-Sitzungen bieten keine Ask-Berechtigungen, Auto-Modus oder Bypass-Berechtigungen. Siehe [Berechtigungsmodi](/de/permission-modes) für die vollständige Liste.

123 </Step>

124 

125 <Step title="Beschreiben Sie die Aufgabe und übermitteln Sie sie">

126 Geben Sie eine Beschreibung dessen ein, was Sie möchten, und drücken Sie die Eingabetaste. Seien Sie spezifisch:

127 

128 * Nennen Sie die Datei oder Funktion: 'Fügen Sie eine README mit Setup-Anweisungen hinzu" oder „Beheben Sie den fehlgeschlagenen Auth-Test in `tests/test_auth.py`" ist besser als „Tests beheben"

129 * Fügen Sie Fehlerausgabe ein, falls vorhanden

130 * Beschreiben Sie das erwartete Verhalten, nicht nur das Symptom

131 

132 Claude klont die Repositories, führt Ihr Setup-Skript aus, falls konfiguriert, und beginnt zu arbeiten. Jede Aufgabe erhält ihre eigene Sitzung und ihren eigenen Branch, sodass Sie nicht warten müssen, bis eine fertig ist, bevor Sie eine andere starten.

133 </Step>

134</Steps>

135 

136## Sitzungen vorausfüllen

137 

138Sie können die Eingabeaufforderung, Repositories und Umgebung für eine neue Sitzung vorausfüllen, indem Sie Abfrageparameter zur [claude.ai/code](https://claude.ai/code)-URL hinzufügen. Verwenden Sie dies, um Integrationen wie eine Schaltfläche in Ihrem Issue-Tracker zu erstellen, die Claude Code mit der Issue-Beschreibung als Eingabeaufforderung öffnet.

139 

140| Parameter | Beschreibung |

141| :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

142| `prompt` | Eingabeaufforderungstext zum Vorausfüllen im Eingabefeld. Der Alias `q` wird ebenfalls akzeptiert. |

143| `prompt_url` | URL zum Abrufen des Eingabeaufforderungstexts, für Eingabeaufforderungen, die zu lang sind, um sie in eine Abfragezeichenfolge einzubetten. Die URL muss Cross-Origin-Anfragen zulassen. Wird ignoriert, wenn `prompt` auch gesetzt ist. |

144| `repositories` | Kommagetrennte Liste von `owner/repo`-Slugs zum Vorauswählen. Der Alias `repo` wird ebenfalls akzeptiert. |

145| `environment` | Name oder ID der [Umgebung](#connect-github-and-create-an-environment) zum Vorauswählen. |

146 

147URL-codieren Sie jeden Wert. Das folgende Beispiel öffnet das Formular mit einer bereits ausgewählten Eingabeaufforderung und einem Repository:

148 

149```text theme={null}

150https://claude.ai/code?prompt=Fix%20the%20login%20bug&repositories=acme/webapp

151```

152 

153## Überprüfen und iterieren

154 

155Wenn Claude fertig ist, überprüfen Sie die Änderungen, hinterlassen Sie Feedback zu bestimmten Zeilen und fahren Sie fort, bis der Diff richtig aussieht.

156 

157<Steps>

158 <Step title="Öffnen Sie die Diff-Ansicht">

159 Ein Diff-Indikator zeigt Zeilen, die über die Sitzung hinweg hinzugefügt und entfernt wurden, z. B. `+42 -18`. Wählen Sie ihn aus, um die Diff-Ansicht zu öffnen, mit einer Dateiliste auf der linken Seite und Änderungen auf der rechten Seite.

160 </Step>

161 

162 <Step title="Hinterlassen Sie Inline-Kommentare">

163 Wählen Sie eine beliebige Zeile im Diff aus, geben Sie Ihr Feedback ein und drücken Sie die Eingabetaste. Kommentare werden in die Warteschlange eingereiht, bis Sie Ihre nächste Nachricht senden, dann werden sie damit gebündelt. Claude sieht „bei `src/auth.ts:47`, den Fehler hier nicht abfangen" neben Ihrer Hauptanweisung, sodass Sie nicht beschreiben müssen, wo das Problem liegt.

164 </Step>

165 

166 <Step title="Erstellen Sie einen Pull Request">

167 Wenn der Diff richtig aussieht, wählen Sie **PR erstellen** oben in der Diff-Ansicht. Sie können ihn als vollständigen PR, als Entwurf öffnen oder zur Seite zum Verfassen von GitHub mit einem generierten Titel und einer Beschreibung springen.

168 </Step>

169 

170 <Step title="Fahren Sie nach dem PR mit der Iteration fort">

171 Die Sitzung bleibt nach der Erstellung des PR aktiv. Fügen Sie CI-Fehlerausgabe oder Reviewer-Kommentare in den Chat ein und bitten Sie Claude, sie zu beheben. Um Claude den PR automatisch überwachen zu lassen, siehe [Auto-fix Pull Requests](/de/claude-code-on-the-web#auto-fix-pull-requests).

172 </Step>

173</Steps>

174 

175## Beheben Sie Setup-Probleme

176 

177### Nach dem Verbinden von GitHub werden keine Repositories angezeigt

178 

179Die Claude GitHub App benötigt expliziten Zugriff auf jedes Repository, das Sie verwenden möchten. Öffnen Sie auf github.com **Einstellungen → Anwendungen → Claude → Konfigurieren** und überprüfen Sie, ob Ihr Repository unter **Repository-Zugriff** aufgeführt ist. Private Repositories benötigen die gleiche Autorisierung wie öffentliche.

180 

181### Die Seite zeigt nur eine GitHub-Anmeldeschaltfläche

182 

183Cloud-Sitzungen erfordern ein verbundenes GitHub-Konto. Verbinden Sie sich über den oben beschriebenen Browser-Flow oder führen Sie `/web-setup` von Ihrem Terminal aus aus, wenn Sie die GitHub CLI verwenden. Wenn Sie GitHub lieber gar nicht verbinden möchten, siehe [Remote Control](/de/remote-control), um Claude Code auf Ihrem eigenen Computer auszuführen und es vom Web aus zu überwachen.

184 

185### „Nicht verfügbar für die ausgewählte Organisation"

186 

187Enterprise-Organisationen müssen möglicherweise von einem Administrator Claude Code im Web aktivieren lassen. Kontaktieren Sie Ihr Anthropic-Account-Team.

188 

189### `/web-setup` gibt „Unbekannter Befehl" zurück

190 

191`/web-setup` wird in der Claude Code CLI ausgeführt, nicht in Ihrer Shell. Starten Sie zunächst `claude` und geben Sie dann `/web-setup` an der Eingabeaufforderung ein.

192 

193Wenn Sie es in Claude Code eingegeben haben und den Fehler immer noch sehen, ist Ihre CLI älter als v2.1.80 oder Sie sind mit einem API-Schlüssel oder einem Drittanbieter-Provider authentifiziert, anstatt mit einem claude.ai-Abonnement. Führen Sie `claude update` aus und dann `/login`, um sich mit Ihrem claude.ai-Konto anzumelden.

194 

195### „Cloud-Umgebung konnte nicht erstellt werden" oder „Keine Cloud-Umgebung verfügbar" bei Verwendung von `--remote` oder ultraplan

196 

197Remote-Sitzungsfunktionen erstellen automatisch eine Standard-Cloud-Umgebung, wenn Sie noch keine haben. Wenn Sie „Cloud-Umgebung konnte nicht erstellt werden" sehen, ist die automatische Erstellung fehlgeschlagen. {/* max-version: 2.1.100 */}Wenn Sie „Keine Cloud-Umgebung verfügbar" sehen, ist Ihre CLI älter als die automatische Erstellung. Führen Sie in beiden Fällen `/web-setup` in der Claude Code CLI aus, um eine manuell zu erstellen, oder besuchen Sie [claude.ai/code](https://claude.ai/code) und folgen Sie dem Schritt **Erstellen Sie Ihre Umgebung** oben.

198 

199### Setup-Skript fehlgeschlagen

200 

201Das Setup-Skript wurde mit einem Nicht-Null-Status beendet, was den Start der Sitzung blockiert. Häufige Ursachen:

202 

203* Eine Paketinstallation ist fehlgeschlagen, weil die Registry nicht in Ihrer [Zugriffsstufe](/de/claude-code-on-the-web#access-levels) enthalten ist. `Trusted` deckt die meisten Paketmanager ab; `None` blockiert sie alle.

204* Das Skript verweist auf eine Datei oder einen Pfad, der in einem frischen Klon nicht vorhanden ist.

205* Ein Befehl, der lokal funktioniert, benötigt einen anderen Aufruf auf Ubuntu.

206 

207Zum Debuggen fügen Sie `set -x` oben im Skript hinzu, um zu sehen, welcher Befehl fehlgeschlagen ist. Für nicht kritische Befehle fügen Sie `|| true` an, damit sie den Sitzungsstart nicht blockieren.

208 

209### Sitzung läuft weiter nach dem Schließen der Registerkarte

210 

211Dies ist beabsichtigt. Das Schließen der Registerkarte oder das Navigieren weg stoppt die Sitzung nicht. Sie läuft im Hintergrund weiter, bis Claude die aktuelle Aufgabe beendet, dann wird sie untätig. Aus der Seitenleiste können Sie [eine Sitzung archivieren](/de/claude-code-on-the-web#archive-sessions), um sie aus Ihrer Liste auszublenden, oder [sie löschen](/de/claude-code-on-the-web#delete-sessions), um sie dauerhaft zu entfernen.

212 

213## Nächste Schritte

214 

215Jetzt, da Sie Aufgaben übermitteln und überprüfen können, behandeln diese Seiten das, was als Nächstes kommt: Cloud-Sitzungen von Ihrem Terminal aus starten, wiederkehrende Arbeiten planen und Claude ständige Anweisungen geben.

216 

217* [Verwenden Sie Claude Code im Web](/de/claude-code-on-the-web): die vollständige Referenz, einschließlich Teleportieren von Sitzungen zu Ihrem Terminal, Setup-Skripte, Umgebungsvariablen und Netzwerkkonfiguration

218* [Routinen](/de/routines): Automatisieren Sie Arbeiten nach einem Zeitplan, über einen API-Aufruf oder als Reaktion auf GitHub-Ereignisse

219* [CLAUDE.md](/de/memory): Geben Sie Claude ständige Anweisungen und Kontext, die zu Beginn jeder Sitzung geladen werden

220* Installieren Sie die Claude-Mobilanwendung für [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) oder [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude), um Sitzungen von Ihrem Telefon aus zu überwachen. Aus der Claude Code CLI zeigt `/mobile` einen QR-Code an.

whats-new.md +49 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Neuigkeiten

6 

7> Eine wöchentliche Zusammenfassung der bemerkenswertesten Claude Code-Funktionen mit Code-Snippets, Demos und Kontext, warum sie wichtig sind.

8 

9Die wöchentliche Entwickler-Zusammenfassung hebt die Funktionen hervor, die am ehesten ändern, wie Sie arbeiten. Jeder Eintrag enthält ausführbaren Code, eine kurze Demo und einen Link zur vollständigen Dokumentation. Für jeden Fehlerbehebung und kleinere Verbesserung siehe das [Changelog](/de/changelog).

10 

11<Update label="Woche 17" description="20.–24. April 2026" tags={["v2.1.114–v2.1.119"]}>

12 **`/ultrareview`** öffnet sich als öffentliche Forschungsvorschau: Eine Flotte von Fehlersuche-Agenten läuft in der Cloud und die Ergebnisse landen automatisch in Ihrer CLI oder Desktop zurück.

13 

14 Auch diese Woche: **Sitzungsrückblick** zeigt Ihnen, was passiert ist, während ein Terminal nicht fokussiert war; **benutzerdefinierte Designs** ermöglichen es Ihnen, Farbpaletten von `/theme` oder einem Plugin zu erstellen und bereitzustellen; und **Claude Code im Web** erhält ein Redesign mit einer neuen Sitzungsseitenleiste und Drag-and-Drop-Layout.

15 

16 [Lesen Sie die Woche-17-Zusammenfassung →](/de/whats-new/2026-w17)

17</Update>

18 

19<Update label="Woche 16" description="13.–17. April 2026" tags={["v2.1.105–v2.1.113"]}>

20 **Claude Opus 4.7** landet als neue Standardeinstellung auf Max und Team Premium, mit einer neuen `xhigh`-Aufwandsstufe, die die empfohlene Einstellung für die meisten Codierungsarbeiten ist, und einem interaktiven `/effort`-Schieberegler zum Einstellen.

21 

22 Auch diese Woche: **Routinen** auf Claude Code im Web starten vorlagengesteuerte Cloud-Agenten nach einem Zeitplan, GitHub-Ereignis oder API-Aufruf; `/ultrareview` führt parallele Multi-Agent-Code-Überprüfung in der Cloud durch; `/usage` zeigt, was Ihre Limits antreibt; und die CLI wechselt zu nativen Binärdateien.

23 

24 [Lesen Sie die Woche-16-Zusammenfassung →](/de/whats-new/2026-w16)

25</Update>

26 

27<Update label="Woche 15" description="6.–10. April 2026" tags={["v2.1.92–v2.1.101"]}>

28 **Ultraplan** tritt in frühe Vorschau ein: Entwerfen Sie einen Plan in der Cloud von Ihrer CLI aus, überprüfen und kommentieren Sie ihn in einem Web-Editor, führen Sie ihn dann remote aus oder ziehen Sie ihn lokal zurück. Der erste Durchlauf erstellt jetzt automatisch eine Cloud-Umgebung für Sie.

29 

30 Auch diese Woche: Das **Monitor**-Tool streamt Hintergrund-Ereignisse in das Gespräch, damit Claude Protokolle verfolgen und live reagieren kann, `/loop` passt sich selbst an, wenn Sie das Intervall weglassen, `/team-onboarding` verpackt Ihr Setup in einen wiederholbaren Leitfaden, und `/autofix-pr` aktiviert PR-Autofix von Ihrem Terminal aus.

31 

32 [Lesen Sie die Woche-15-Zusammenfassung →](/de/whats-new/2026-w15)

33</Update>

34 

35<Update label="Woche 14" description="30. März – 3. April 2026" tags={["v2.1.86–v2.1.91"]}>

36 **Computernutzung** kommt zur CLI in Forschungsvorschau: Claude kann native Apps öffnen, durch die Benutzeroberfläche klicken und Änderungen von Ihrem Terminal aus überprüfen. Am besten zum Schließen der Schleife bei Dingen, die nur eine GUI überprüfen kann.

37 

38 Auch diese Woche: `/powerup` interaktive Lektionen, flimmerfreies Alt-Screen-Rendering, eine Pro-Tool-MCP-Ergebnisgröße-Überschreibung bis zu 500K und Plugin-Ausführbare auf dem `PATH` des Bash-Tools.

39 

40 [Lesen Sie die Woche-14-Zusammenfassung →](/de/whats-new/2026-w14)

41</Update>

42 

43<Update label="Woche 13" description="23.–27. März 2026" tags={["v2.1.83–v2.1.85"]}>

44 **Auto-Modus** landet in Forschungsvorschau: Ein Klassifizierer verwaltet Ihre Genehmigungsaufforderungen, sodass sichere Aktionen ohne Unterbrechung ausgeführt werden und riskante blockiert werden. Der Mittelweg zwischen dem Genehmigen von allem und `--dangerously-skip-permissions`.

45 

46 Auch diese Woche: Computernutzung in der Desktop-App, PR-Autofix im Web, Transkriptsuche mit `/`, ein natives PowerShell-Tool für Windows und bedingte `if`-Hooks.

47 

48 [Lesen Sie die Woche-13-Zusammenfassung →](/de/whats-new/2026-w13)

49</Update>

whats-new/2026-w16.md +135 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Woche 16 · 13.–17. April 2026

6 

7> Claude Opus 4.7 mit der neuen xhigh-Anstrengungsstufe, Routinen auf Claude Code im Web, /ultrareview Cloud-Code-Review, eine /usage-Aufschlüsselung, die zeigt, was Ihre Limits antreibt, und native Binärdateien ersetzen das gebündelte JavaScript.

8 

9<div className="digest-meta">

10 <span>Releases <a href="/de/docs/changelog#2-1-105">v2.1.105 → v2.1.113</a></span>

11 <span>5 Features · 13.–17. April</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Claude Opus 4.7</span>

17 <span className="digest-feature-pill">neues Modell</span>

18 </div>

19 

20 <p className="digest-feature-lede">Anthropics stärkstes Coding-Modell ist jetzt das Standard-Modell auf Max und Team Premium und überall sonst über <code>/model</code> verfügbar. Es fügt eine neue <code>xhigh</code>-Anstrengungsstufe hinzu, die zwischen <code>high</code> und <code>max</code> liegt: beste Ergebnisse für die meisten Coding- und agentengestützten Aufgaben, angewendet als Standard beim ersten Wechsel zu 4.7. <code>/effort</code> öffnet jetzt einen interaktiven Schieberegler mit Pfeiltasten, wenn Sie ihn ohne Argumente aufrufen, sodass Sie Intelligenz gegen Geschwindigkeit abwägen können, ohne sich die Stufennamen merken zu müssen.</p>

21 

22 <p className="digest-feature-try">Wechseln Sie Modell und Anstrengung in einem Schritt:</p>

23 

24 ```text Claude Code theme={null}

25 > /model opus

26 > /effort xhigh

27 ```

28 

29 <a className="digest-feature-link" href="/de/docs/model-config#adjust-effort-level">Modellkonfiguration: Anstrengungsstufen</a>

30</div>

31 

32<div className="digest-feature">

33 <div className="digest-feature-header">

34 <span className="digest-feature-title">Routinen</span>

35 <span className="digest-feature-pill">Web</span>

36 </div>

37 

38 <p className="digest-feature-lede">Vorlagenbehaftete Cloud-Agenten, die nach einem Zeitplan, einem GitHub-Ereignis oder einem API-Aufruf ausgelöst werden. Definieren Sie eine Routine einmal auf Claude Code im Web mit einem Prompt, den Repos, die sie berühren kann, und den Konnektoren, die sie benötigt, und lassen Sie dann PR-geöffnet, Release-veröffentlicht oder Ihren eigenen Webhook sie auslösen, ohne dass Ihr Computer läuft. Der Trigger-Picker deckt jetzt GitHub-Ereignisse mit optionalen Filtern ab und gibt jeder Routine einen Token-gestützten <code>/fire</code>-Endpunkt für externe Systeme.</p>

39 

40 <Frame>

41 <img className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/routines.png?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=2ba818ea9280c549511cb48b9b4d1dc5" alt="Erstellen einer Routine auf Claude Code im Web mit Zeitplan-, GitHub-Ereignis- und API-Triggern" width="1440" height="810" data-path="images/whats-new/routines.png" />

42 </Frame>

43 

44 <p className="digest-feature-try">Erstellen Sie eine über die Web-Benutzeroberfläche oder gerüsten Sie von Ihrem Terminal aus:</p>

45 

46 ```text Claude Code theme={null}

47 > /schedule daily PR review at 9am

48 ```

49 

50 <a className="digest-feature-link" href="/de/docs/routines">Routinen-Anleitung</a>

51</div>

52 

53<div className="digest-feature">

54 <div className="digest-feature-header">

55 <span className="digest-feature-title">/usage-Aufschlüsselung</span>

56 <span className="digest-feature-pill">CLI</span>

57 </div>

58 

59 <p className="digest-feature-lede">Mehr Transparenz darüber, wohin Ihre Claude Code-Nutzung geht. <code>/usage</code> zeigt jetzt, was Ihre Limits antreibt: parallele Sitzungen, Subagenten, Cache-Misses und langer Kontext, jeweils mit einem Prozentsatz Ihrer letzten 24 Stunden und einem Tipp zur Optimierung. Drücken Sie <code>d</code> oder <code>w</code>, um zwischen Tag- und Wochenansichten zu wechseln.</p>

60 

61 <Frame>

62 <img className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/usage.png?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=792a4b43cbef4e2931974831f076bca6" alt="Der /usage-Befehl zeigt eine Aufschlüsselung dessen, was zu Limits-Nutzung beiträgt" width="1204" height="1182" data-path="images/whats-new/usage.png" />

63 </Frame>

64 

65 <p className="digest-feature-try">Führen Sie es jederzeit aus:</p>

66 

67 ```text Claude Code theme={null}

68 > /usage

69 ```

70 

71 <a className="digest-feature-link" href="/de/docs/commands">Befehlsreferenz</a>

72</div>

73 

74<div className="digest-feature">

75 <div className="digest-feature-header">

76 <span className="digest-feature-title">/ultrareview</span>

77 <span className="digest-feature-pill">v2.1.111</span>

78 </div>

79 

80 <p className="digest-feature-lede">Umfassende Code-Überprüfung in der Cloud. Ultrareview verteilt Ihren Branch auf parallele Reviewer auf Claude Code im Web, führt einen gegnerischen Kritik-Pass über jeden Fund durch und gibt einen verifizierten Fundebericht zurück, während Ihr Terminal frei bleibt. Rufen Sie es ohne Argumente auf, um Ihren aktuellen Branch zu überprüfen, oder übergeben Sie eine PR-Nummer, um diese PR zu holen und zu überprüfen. Der Startdialog zeigt jetzt ein Diffstat, damit Sie wissen, was hochgeht, bevor Sie bestätigen.</p>

81 

82 <p className="digest-feature-try">Überprüfen Sie den Branch, auf dem Sie sich befinden:</p>

83 

84 ```text Claude Code theme={null}

85 > /ultrareview

86 ```

87 

88 <p className="digest-feature-try">Oder zeigen Sie auf einen PR:</p>

89 

90 ```text Claude Code theme={null}

91 > /ultrareview 1234

92 ```

93 

94 <a className="digest-feature-link" href="/de/docs/ultrareview">Ultrareview-Anleitung</a>

95</div>

96 

97<div className="digest-feature">

98 <div className="digest-feature-header">

99 <span className="digest-feature-title">Native Binärdateien</span>

100 <span className="digest-feature-pill">v2.1.113</span>

101 </div>

102 

103 <p className="digest-feature-lede">Die <code>claude</code> CLI spawnt jetzt eine native plattformspezifische Binärdatei anstelle von gebündeltem JavaScript, sodass der installierte <code>claude</code>-Befehl Node nicht mehr aufruft. Das npm-Paket zieht die richtige Binärdatei durch eine optionale Abhängigkeit wie <code>@anthropic-ai/claude-code-darwin-arm64</code> ein, sodass sich Ihr Installationsbefehl nicht ändert. Das Standalone-Installationsprogramm hat diese Binärdatei bereits ausgeliefert; npm stimmt jetzt damit überein.</p>

104 

105 <p className="digest-feature-try">Aktualisieren Sie und überprüfen Sie, was Sie ausführen:</p>

106 

107 ```bash theme={null}

108 claude update

109 claude --version

110 ```

111 

112 <a className="digest-feature-link" href="/de/docs/setup">Setup-Anleitung</a>

113</div>

114 

115<div className="digest-wins">

116 <p className="digest-wins-title">Weitere Erfolge</p>

117 

118 <div className="digest-wins-grid">

119 <div><a href="/de/docs/permission-modes#eliminate-prompts-with-auto-mode">Auto-Modus</a> ist jetzt für Max-Abonnenten auf Opus 4.7 verfügbar, und das Flag <code>--enable-auto-mode</code> ist nicht mehr erforderlich</div>

120 <div><a href="/de/docs/interactive-mode#session-recap">Sitzungszusammenfassung</a> zeigt eine einzeilige Zusammenfassung dessen, was passiert ist, während Sie weg waren; führen Sie <code>/recap</code> bei Bedarf aus oder deaktivieren Sie es über <code>/config</code></div>

121 <div>Neuer <code>/tui</code>-Befehl und <code>tui</code>-Einstellung wechseln zwischen klassischem und flimmerfreiem Rendering während des Gesprächs; Fokusansicht wurde von <code>Ctrl+O</code> zu ihrem eigenen <code>/focus</code>-Befehl verschoben</div>

122 <div>Push-Benachrichtigungstool: Mit <a href="/de/docs/remote-control">Remote Control</a> verbunden und „Push, wenn Claude entscheidet" aktiviert, kann Claude Ihr Telefon anpingen, wenn es Sie braucht</div>

123 <div>Plugins können Hintergrund-Watcher über einen Top-Level-<code>monitors</code>-Manifest-Schlüssel versenden, der sich beim Sitzungsstart oder beim Skill-Aufruf automatisch aktiviert</div>

124 <div>Option „Auto (Terminal abgleichen)" in <code>/theme</code> folgt dem dunklen/hellen Modus Ihres Terminals</div>

125 <div><code>/fewer-permission-prompts</code> scannt Ihre Transkripte nach häufigen schreibgeschützten Bash- und MCP-Aufrufen und schlägt eine Allowlist für <code>.claude/settings.json</code> vor</div>

126 <div>Claude kann jetzt integrierte Befehle wie <code>/init</code>, <code>/review</code> und <code>/security-review</code> über das Skill-Tool entdecken und ausführen</div>

127 <div><code>PreCompact</code>-Hooks können Komprimierung blockieren, indem sie mit Code 2 beendet werden oder <code>{"{"}"decision":"block"{"}"}</code> zurückgeben</div>

128 <div><code>ENABLE\_PROMPT\_CACHING\_1H</code> aktiviert API-Schlüssel-, Bedrock-, Vertex- und Foundry-Benutzer für 1-Stunden-Prompt-Cache-TTL</div>

129 <div><code>sandbox.network.deniedDomains</code>-Einstellung schneidet bestimmte Domains aus einem breiteren <code>allowedDomains</code>-Wildcard aus</div>

130 <div><code>/undo</code> ist jetzt ein Alias für <code>/rewind</code>, und <code>/proactive</code> ist ein Alias für <code>/loop</code></div>

131 <div>Gehärtete Bash-Berechtigungen: Deny-Regeln stimmen jetzt durch <code>env</code>/<code>sudo</code>/<code>watch</code>-Wrapper überein, und <code>Bash(find:\*)</code>-Allow-Regeln genehmigen nicht mehr automatisch <code>-exec</code> oder <code>-delete</code></div>

132 </div>

133</div>

134 

135[Vollständiges Changelog für v2.1.105–v2.1.113 →](/de/changelog#2-1-105)

whats-new/2026-w17.md +113 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Woche 17 · 20.–24. April 2026

6 

7> /ultrareview öffnet sich als Forschungsvorschau, automatische Sitzungsübersichten bei Rückkehr zu einem Terminal, benutzerdefinierte Farbthemen, die Sie in Plugins erstellen und bereitstellen können, und ein neu gestaltetes Claude Code im Web.

8 

9<div className="digest-meta">

10 <span>Releases <a href="/docs/de/changelog#2-1-114">v2.1.114 → v2.1.119</a></span>

11 <span>4 Funktionen · 20.–24. April</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">/ultrareview</span>

17 <span className="digest-feature-pill">Forschungsvorschau</span>

18 </div>

19 

20 <p className="digest-feature-lede">Jetzt in öffentlicher Forschungsvorschau verfügbar. Ultrareview führt eine Flotte von Fehlersuche-Agenten in der Cloud gegen Ihren Branch oder einen PR aus, und die Ergebnisse landen automatisch in der CLI oder Desktop. Führen Sie es vor dem Zusammenführen kritischer Änderungen wie Authentifizierung oder Datenmigration aus.</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/ultrareview.mp4?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=0fb1271365d38f414ad155aeb8edb08e" data-path="images/whats-new/ultrareview.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">Überprüfen Sie den Branch, auf dem Sie sich befinden:</p>

27 

28 ```text Claude Code theme={null}

29 > /ultrareview

30 ```

31 

32 <p className="digest-feature-try">Oder verweisen Sie auf einen PR:</p>

33 

34 ```text Claude Code theme={null}

35 > /ultrareview 1234

36 ```

37 

38 <a className="digest-feature-link" href="/docs/de/ultrareview">Ultrareview-Anleitung</a>

39</div>

40 

41<div className="digest-feature">

42 <div className="digest-feature-header">

43 <span className="digest-feature-title">Sitzungsübersicht</span>

44 <span className="digest-feature-pill">CLI</span>

45 </div>

46 

47 <p className="digest-feature-lede">Wechseln Sie den Fokus weg von einer Sitzung und kehren Sie zu einer einzeiligen Übersicht darüber zurück, was passiert ist, während Sie weg waren. Hilfreich, um im Flow zu bleiben, während Sie mehrere Claude-Sitzungen gleichzeitig ausführen.</p>

48 

49 <Frame>

50 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/session-recap.mp4?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=0a8db1470bd0161a47efeb2f322af76f" data-path="images/whats-new/session-recap.mp4" />

51 </Frame>

52 

53 <p className="digest-feature-try">Generieren Sie eine Übersicht auf Anfrage, oder schalten Sie die automatische aus <code>/config</code>:</p>

54 

55 ```text Claude Code theme={null}

56 > /recap

57 ```

58 

59 <a className="digest-feature-link" href="/docs/de/interactive-mode#session-recap">Interaktiver Modus: Sitzungsübersicht</a>

60</div>

61 

62<div className="digest-feature">

63 <div className="digest-feature-header">

64 <span className="digest-feature-title">Benutzerdefinierte Themen</span>

65 <span className="digest-feature-pill">v2.1.118</span>

66 </div>

67 

68 <p className="digest-feature-lede">Erstellen und wechseln Sie zwischen benannten Farbthemen von <code>/theme</code>, oder bearbeiten Sie JSON-Dateien manuell in <code>\~/.claude/themes/</code>. Jedes Thema wählt eine Basis-Voreinstellung und überschreibt nur die Token, die Sie interessieren. Plugins können auch Themen bereitstellen.</p>

69 

70 <p className="digest-feature-try">Öffnen Sie die Designauswahl und erstellen Sie ein neues:</p>

71 

72 ```text Claude Code theme={null}

73 > /theme

74 ```

75 

76 <a className="digest-feature-link" href="/docs/de/terminal-config#create-a-custom-theme">Terminal-Konfiguration: Erstellen Sie ein benutzerdefiniertes Thema</a>

77</div>

78 

79<div className="digest-feature">

80 <div className="digest-feature-header">

81 <span className="digest-feature-title">Claude Code im Web</span>

82 <span className="digest-feature-pill">Web</span>

83 </div>

84 

85 <p className="digest-feature-lede">Ein neues Aussehen für <a href="https://claude.ai/code">claude.ai/code</a>, das der neu gestalteten Desktop-App entspricht: Sitzungsseitenleiste, Drag-and-Drop-Layout und eine aufgefrischte Routinen-Ansicht. Wichtige Teile wurden für schnellere Reaktionen und ein zuverlässigeres Erlebnis neu aufgebaut.</p>

86 

87 <Frame>

88 <img className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/web-redesign.jpeg?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=a2aca1b49e295b7337f5779038db8e2c" alt="Claude Code im Web-Redesign-Übersicht: neue Benutzeroberfläche, Geschwindigkeit und Zuverlässigkeit, Arbeit über Web, Mobilgeräte und CLI" width="1602" height="1610" data-path="images/whats-new/web-redesign.jpeg" />

89 </Frame>

90 

91 <a className="digest-feature-link" href="/docs/de/claude-code-on-the-web">Claude Code im Web</a>

92</div>

93 

94<div className="digest-wins">

95 <p className="digest-wins-title">Weitere Erfolge</p>

96 

97 <div className="digest-wins-grid">

98 <div><a href="/docs/de/interactive-mode#vim-editor-mode">Vim-Visualmodus</a>: Drücken Sie <code>v</code> für Zeichenauswahl oder <code>V</code> für Zeilenauswahl in der Eingabeaufforderung, mit Operatoren und visuellem Feedback</div>

99 <div>Hooks können jetzt MCP-Tools direkt über <a href="/docs/de/hooks#mcp-tool-hook-fields"><code>type: "mcp\_tool"</code></a> aufrufen, sodass ein Hook einen bereits verbundenen Server treffen kann, ohne einen Prozess zu starten</div>

100 <div><code>/cost</code> und <code>/stats</code> werden in <a href="/docs/de/commands"><code>/usage</code></a> zusammengeführt; die alten Namen funktionieren immer noch als Tippkürzel, die die relevante Registerkarte öffnen</div>

101 <div><code>/config</code>-Änderungen (Thema, Editor-Modus, Verbose und ähnliches) werden jetzt in <code>\~/.claude/settings.json</code> beibehalten und folgen der gleichen Projekt-/Lokal-/Richtlinien-Vorrangigkeit wie andere <a href="/docs/de/settings">Einstellungen</a></div>

102 <div><a href="/docs/de/sub-agents#fork-the-current-conversation">Verzweigte Subagenten</a> können auf externen Builds mit <code>CLAUDE\_CODE\_FORK\_SUBAGENT=1</code> aktiviert werden: Eine Verzweigung erbt Ihren vollständigen Gesprächskontext, anstatt neu zu beginnen</div>

103 <div>Die Standard-<a href="/docs/de/model-config#adjust-effort-level">Anstrengungsstufe</a> für Pro- und Max-Abonnenten auf Opus 4.6 und Sonnet 4.6 ist jetzt <code>high</code> (war <code>medium</code>)</div>

104 <div>Native macOS- und Linux-Builds ersetzen die <code>Glob</code>- und <code>Grep</code>-Tools durch eingebettete <code>bfs</code> und <code>ugrep</code>, die über Bash verfügbar sind, für schnellere Suchen ohne separaten Tool-Roundtrip</div>

105 <div><code>--from-pr</code> akzeptiert jetzt GitLab-Merge-Request-, Bitbucket-Pull-Request- und GitHub-Enterprise-PR-URLs zusätzlich zu github.com</div>

106 <div>Auto-Modus: Fügen Sie <code>"\$defaults"</code> in <a href="/docs/de/auto-mode-config"><code>autoMode.allow</code>, <code>soft\_deny</code> oder <code>environment</code></a> ein, um benutzerdefinierte Regeln neben der integrierten Liste hinzuzufügen, anstatt sie zu ersetzen</div>

107 <div>Neuer <a href="/docs/de/plugin-dependencies#tag-plugin-releases-for-version-resolution"><code>claude plugin tag</code></a>-Befehl erstellt Release-Git-Tags für Plugins mit Versionsprüfung</div>

108 <div>Opus 4.7-Sitzungen werden jetzt gegen das native 1-M-Kontextfenster des Modells berechnet, was aufgeblähte <code>/context</code>-Prozentsätze und vorzeitige Autokomprimierung behebt</div>

109 <div><code>/resume</code> bei großen Sitzungen ist bis zu 67 % schneller und bietet jetzt an, große, veraltete Sitzungen zusammenzufassen, bevor sie erneut gelesen werden</div>

110 </div>

111</div>

112 

113[Vollständiges Changelog für v2.1.114–v2.1.119 →](/de/changelog#2-1-114)

zero-data-retention.md +66 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Null-Datenspeicherung

6 

7> Erfahren Sie mehr über Null-Datenspeicherung (ZDR) für Claude Code auf Claude for Enterprise, einschließlich Umfang, deaktivierter Funktionen und wie Sie die Aktivierung anfordern.

8 

9Null-Datenspeicherung (ZDR) ist für Claude Code verfügbar, wenn es über Claude for Enterprise verwendet wird. Wenn ZDR aktiviert ist, werden Eingabeaufforderungen und Modellreaktionen, die während Claude Code-Sitzungen generiert werden, in Echtzeit verarbeitet und nicht von Anthropic gespeichert, nachdem die Antwort zurückgegeben wurde, außer wenn dies erforderlich ist, um das Gesetz einzuhalten oder Missbrauch zu bekämpfen.

10 

11ZDR auf Claude for Enterprise gibt Unternehmenskunden die Möglichkeit, Claude Code mit Null-Datenspeicherung zu verwenden und auf Verwaltungsfunktionen zuzugreifen:

12 

13* Kostenkontrolle pro Benutzer

14* [Analytics](/de/analytics)-Dashboard

15* [Serververwaltete Einstellungen](/de/server-managed-settings)

16* Audit-Protokolle

17 

18ZDR für Claude Code auf Claude for Enterprise gilt nur für die direkte Plattform von Anthropic. Für Claude-Bereitstellungen auf Amazon Bedrock, Google Vertex AI oder Microsoft Foundry beachten Sie die Datenspeicherungsrichtlinien dieser Plattformen.

19 

20## ZDR-Umfang

21 

22ZDR deckt Claude Code-Inferenz auf Claude for Enterprise ab.

23 

24<Warning>

25 ZDR wird auf Organisationsbasis aktiviert. Jede neue Organisation erfordert, dass ZDR separat von Ihrem Anthropic-Kontoteam aktiviert wird. ZDR wird nicht automatisch auf neue Organisationen angewendet, die unter demselben Konto erstellt werden. Wenden Sie sich an Ihr Kontoteam, um ZDR für neue Organisationen zu aktivieren.

26</Warning>

27 

28### Was ZDR abdeckt

29 

30ZDR deckt Modellrückschluss-Aufrufe ab, die über Claude Code auf Claude for Enterprise durchgeführt werden. Wenn Sie Claude Code in Ihrem Terminal verwenden, werden die Eingabeaufforderungen, die Sie senden, und die Antworten, die Claude generiert, nicht von Anthropic gespeichert. Dies gilt unabhängig davon, welches Claude-Modell verwendet wird.

31 

32### Was ZDR nicht abdeckt

33 

34ZDR erstreckt sich nicht auf die folgenden Funktionen, auch nicht für Organisationen mit aktiviertem ZDR. Diese Funktionen folgen [Standard-Datenspeicherungsrichtlinien](/de/data-usage#data-retention):

35 

36| Funktion | Details |

37| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

38| Chat auf claude.ai | Chat-Gespräche über die Claude for Enterprise-Weboberfläche werden nicht von ZDR abgedeckt. |

39| Cowork | Cowork-Sitzungen werden nicht von ZDR abgedeckt. |

40| Claude Code Analytics | Speichert keine Eingabeaufforderungen oder Modellreaktionen, erfasst aber Produktivitätsmetadaten wie Konto-E-Mails und Nutzungsstatistiken. Beitragskennzahlen sind für ZDR-Organisationen nicht verfügbar; das [Analytics-Dashboard](/de/analytics) zeigt nur Nutzungsmetriken an. |

41| Benutzer- und Platzverwaltung | Verwaltungsdaten wie Konto-E-Mails und Platzzuweisungen werden nach Standardrichtlinien beibehalten. |

42| Integrationen von Drittanbietern | Daten, die von Drittanbieter-Tools, MCP servers oder anderen externen Integrationen verarbeitet werden, werden nicht von ZDR abgedeckt. Überprüfen Sie die Datenverwaltungspraktiken dieser Dienste unabhängig. |

43 

44## Funktionen, die unter ZDR deaktiviert sind

45 

46Wenn ZDR für eine Claude Code-Organisation auf Claude for Enterprise aktiviert ist, werden bestimmte Funktionen, die das Speichern von Eingabeaufforderungen oder Vervollständigungen erfordern, automatisch auf Backend-Ebene deaktiviert:

47 

48| Funktion | Grund |

49| ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |

50| [Claude Code im Web](/de/claude-code-on-the-web) | Erfordert serverseitige Speicherung des Gesprächsverlaufs. |

51| [Remote-Sitzungen](/de/desktop#remote-sessions) aus der Desktop-App | Erfordert persistente Sitzungsdaten, die Eingabeaufforderungen und Vervollständigungen enthalten. |

52| Feedback-Übermittlung (`/feedback`) | Das Übermitteln von Feedback sendet Gesprächsdaten an Anthropic. |

53 

54Diese Funktionen werden im Backend blockiert, unabhängig von der clientseitigen Anzeige. Wenn Sie während des Starts eine deaktivierte Funktion im Claude Code-Terminal sehen, führt der Versuch, sie zu verwenden, zu einem Fehler, der angibt, dass die Richtlinien der Organisation diese Aktion nicht zulassen.

55 

56Zukünftige Funktionen können auch deaktiviert werden, wenn sie das Speichern von Eingabeaufforderungen oder Vervollständigungen erfordern.

57 

58## Datenspeicherung bei Richtlinienverletzungen

59 

60Auch wenn ZDR aktiviert ist, kann Anthropic Daten speichern, wenn dies gesetzlich erforderlich ist oder um Verstöße gegen die Nutzungsrichtlinie zu beheben. Wenn eine Sitzung wegen eines Richtlinienverstoßes gekennzeichnet wird, kann Anthropic die zugehörigen Ein- und Ausgaben bis zu 2 Jahre lang speichern, in Übereinstimmung mit Anthropics Standard-ZDR-Richtlinie.

61 

62## ZDR anfordern

63 

64Um ZDR für Claude Code auf Claude for Enterprise anzufordern, [kontaktieren Sie den Vertrieb](https://www.anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=zero_data_retention_request) oder Ihr Anthropic-Kontoteam. Ihr Kontoteam reicht die Anfrage intern ein, und Anthropic überprüft und aktiviert ZDR in Ihrer Organisation, nachdem die Berechtigung bestätigt wurde. Alle Aktivierungsmaßnahmen werden protokolliert.

65 

66Wenn Sie derzeit ZDR für Claude Code über Pay-as-you-go-API-Schlüssel verwenden, können Sie zu Claude for Enterprise wechseln, um Zugriff auf Verwaltungsfunktionen zu erhalten und gleichzeitig ZDR für Claude Code beizubehalten. Wenden Sie sich an Ihr Kontoteam, um die Migration zu koordinieren.