3321 WorktreeCreate3321 WorktreeCreate
3322</h3>3322</h3>
3323 3323
3324Wird ausgeführt, wenn ein Worktree erstellt wird, sei es über `claude --worktree`, über einen [Subagenten mit `isolation: "worktree"`](/docs/de/sub-agents#choose-the-subagent-scope) oder für eine [Hintergrundsitzung](/docs/de/agent-view#how-file-edits-are-isolated), die Claude Code in einem eigenen Worktree isoliert. Standardmäßig erstellt Claude Code die isolierte Arbeitskopie mit `git worktree`. Wenn Sie einen WorktreeCreate-Hook konfigurieren, ersetzt dieser das standardmäßige Git-Verhalten, sodass Sie ein anderes Versionskontrollsystem wie SVN, Perforce oder Mercurial verwenden können.3324Wird ausgeführt, wenn Claude Code einen Worktree erstellt, etwa in diesen Fällen:
3325
3326* Sie starten eine Sitzung mit `claude --worktree`
3327* Claude erstellt während einer Sitzung einen Worktree und wechselt mit dem Tool [`EnterWorktree`](/docs/de/tools-reference) hinein
3328* Ein [Subagent verwendet `isolation: "worktree"`](/docs/de/sub-agents#choose-the-subagent-scope)
3329* Ein [Workflow](/docs/de/workflows#migrate-many-files-in-parallel) führt einen Agenten in einem eigenen Worktree aus
3330* Claude Code isoliert eine [Hintergrundsitzung](/docs/de/agent-view#how-file-edits-are-isolated) in einem eigenen Worktree
3331* [`claude remote-control`](/docs/de/remote-control#start-a-remote-control-session) startet im `worktree`-Modus eine Sitzung in einem eigenen Worktree
3332
3333Wenn Claude `git worktree add` über das Bash-Tool ausführt, statt `EnterWorktree` aufzurufen, wird Ihr WorktreeCreate-Hook nicht ausgeführt. Um diesen Befehl zu prüfen oder zu blockieren, fügen Sie einen [`PreToolUse`](#pretooluse)-Hook mit dem Matcher `Bash` hinzu.
3334
3335Standardmäßig erstellt Claude Code die isolierte Arbeitskopie mit `git worktree`. Wenn Sie einen WorktreeCreate-Hook konfigurieren, ersetzt dieser das standardmäßige Git-Verhalten, sodass Sie ein anderes Versionskontrollsystem wie SVN, Perforce oder Mercurial verwenden können.
3325 3336
3326Da der Hook das Standardverhalten vollständig ersetzt, wird [`.worktreeinclude`](/docs/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.3337Da der Hook das Standardverhalten vollständig ersetzt, wird [`.worktreeinclude`](/docs/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.
3327 3338
3390* Sie eine interaktive [Worktree-Sitzung](/docs/de/worktrees#start-claude-in-a-worktree) beenden und sich dafür entscheiden, den Worktree zu entfernen, wenn Claude Code Sie danach fragt3401* Sie eine interaktive [Worktree-Sitzung](/docs/de/worktrees#start-claude-in-a-worktree) beenden und sich dafür entscheiden, den Worktree zu entfernen, wenn Claude Code Sie danach fragt
3391* Sie eine interaktive Worktree-Sitzung beenden, die Sie nicht [benannt](/docs/de/sessions#name-your-sessions) haben, Claude Code keine geänderten oder nicht verfolgten Dateien findet und den Worktree ohne Nachfrage entfernt3402* Sie eine interaktive Worktree-Sitzung beenden, die Sie nicht [benannt](/docs/de/sessions#name-your-sessions) haben, Claude Code keine geänderten oder nicht verfolgten Dateien findet und den Worktree ohne Nachfrage entfernt
3392* Sie eine [Hintergrundsitzung](/docs/de/agent-view#what-deleting-a-session-removes) löschen, die im Worktree läuft3403* Sie eine [Hintergrundsitzung](/docs/de/agent-view#what-deleting-a-session-removes) löschen, die im Worktree läuft
3404* Sie Claude während einer Sitzung bitten, den Worktree zu verlassen und zu entfernen, und Claude ihn mit dem Tool [`ExitWorktree`](/docs/de/tools-reference) entfernt
3405* Eine Sitzung, die [`claude remote-control`](/docs/de/remote-control#start-a-remote-control-session) im `worktree`-Modus gestartet hat, ohne Absturz endet und Claude Code in ihrem Worktree keine geänderten oder nicht verfolgten Dateien und keine neuen Commits findet
3406* Sie `claude remote-control` stoppen, während von ihm im `worktree`-Modus gestartete Sitzungen noch laufen, und Claude Code in deren Worktrees keine geänderten oder nicht verfolgten Dateien und keine neuen Commits findet
3407
3408Wenn ein Subagent oder ein Workflow-Agent fertig ist, behält Claude Code den Worktree, den Ihr WorktreeCreate-Hook dafür erstellt hat, und führt Ihren WorktreeRemove-Hook nicht aus. Entfernen Sie diese Worktrees selbst, wenn die Arbeit erledigt ist.
3409
3410Claude Code fragt Sie nicht, bevor Ihr Hook für einen `ExitWorktree`-Aufruf oder eine Bereinigung durch `claude remote-control` ausgeführt wird. `ExitWorktree` weigert sich, einen vom Hook erstellten Worktree zu entfernen, sofern der Aufruf nicht [`discard_changes: true`](/docs/de/agent-sdk/typescript#exitworktree) übergibt, wodurch Ihr Hook auf diesem Weg die letzte Prüfung ist.
3393 3411
3394Claude Code verwendet Git, um nach geänderten oder nicht verfolgten Dateien zu suchen, und findet daher keine in einem Worktree, der kein Git-Checkout ist oder sich nicht in einem befindet, selbst wenn das Verzeichnis nicht committete Arbeit enthält. Prüfen Sie in Ihrem WorktreeRemove-Hook auf solche Arbeit, bevor er etwas löscht.3412Claude Code verwendet Git, um nach geänderten oder nicht verfolgten Dateien zu suchen, und findet daher keine in einem Worktree, der kein Git-Checkout ist oder sich nicht in einem befindet, selbst wenn das Verzeichnis nicht committete Arbeit enthält. Prüfen Sie in Ihrem WorktreeRemove-Hook auf solche Arbeit, bevor er etwas löscht.
3395 3413
3396Bei Git-basierten Worktrees übernimmt Claude Code die Bereinigung automatisch mit `git worktree remove`. Wenn Sie einen WorktreeCreate-Hook konfiguriert haben, kombinieren Sie ihn mit einem WorktreeRemove-Hook, um die Bereinigung der von ihm erstellten Worktrees zu steuern:3414Bei Git-basierten Worktrees übernimmt Claude Code die Bereinigung automatisch mit `git worktree remove`. Wenn Sie einen WorktreeCreate-Hook konfiguriert haben, kombinieren Sie ihn mit einem WorktreeRemove-Hook, um die Bereinigung zu steuern:
3397 3415
3398* **Kein WorktreeRemove-Hook**: Wenn Claude Code den Worktree beim Beenden einer Worktree-Sitzung entfernt, greift es ersatzweise auf `git worktree remove --force` für den Pfad zurück, den Ihr WorktreeCreate-Hook zurückgegeben hat, sodass ein Worktree, den Git erkennt, entfernt wird. Ein Worktree, den Git nicht erkennt, zum Beispiel einer, den Ihr Hook mit einem anderen Versionskontrollsystem als Git erstellt hat, bleibt auf der Festplatte. Was das Löschen einer [Hintergrundsitzung](/docs/de/agent-view#what-deleting-a-session-removes) mit einem vom Hook erstellten Worktree bewirkt, entnehmen Sie den Löschregeln der Agent-Ansicht.3416* **Kein WorktreeRemove-Hook**: Claude Code greift für ein Entfernen beim Beenden oder über `ExitWorktree` ersatzweise auf Git zurück und behält den Worktree, wenn `claude remote-control` bereinigt:
3417 * **Sie beenden eine Worktree-Sitzung, oder Claude ruft `ExitWorktree` auf**: Claude Code entfernt den von Ihrem WorktreeCreate-Hook zurückgegebenen Pfad so, wie `git worktree remove --force` es tun würde, sodass ein Worktree, den Git erkennt, entfernt wird. Ein Worktree, den Git nicht erkennt, zum Beispiel einer, den Ihr Hook mit einem anderen Versionskontrollsystem als Git erstellt hat, bleibt auf dem Datenträger.
3418 * **`claude remote-control` bereinigt den Worktree einer Sitzung**: Der Worktree bleibt auf dem Datenträger, und das Terminal, in dem `claude remote-control` läuft, zeigt `worktree removal failed, kept: <path>` an.
3419 * **Sie löschen eine Hintergrundsitzung**: siehe [Was das Löschen einer Sitzung entfernt](/docs/de/agent-view#what-deleting-a-session-removes).
3399* **Hook wird mit 0 beendet**: Der Worktree gilt als entfernt. Claude Code liest nichts weiter vom Hook, stellen Sie also sicher, dass Ihr Hook das Verzeichnis gelöscht hat.3420* **Hook wird mit 0 beendet**: Der Worktree gilt als entfernt. Claude Code liest nichts weiter vom Hook, stellen Sie also sicher, dass Ihr Hook das Verzeichnis gelöscht hat.
3400* **Hook wird mit einem anderen Code als 0 beendet**: Das Entfernen schlägt fehl, wenn das Verzeichnis unter `worktree_path` danach noch existiert, und der Worktree bleibt ohne Git-Fallback auf der Festplatte. Ein Hook, der das Verzeichnis vor dem Beenden mit einem anderen Code als 0 gelöscht hat, gilt als entfernt. Wie der Fehler gemeldet wird, erfahren Sie unter [WorktreeRemove-Eingabe](#worktreeremove-input).3421* **Hook wird mit einem anderen Code als 0 beendet**: Das Entfernen schlägt fehl, wenn das Verzeichnis unter `worktree_path` danach noch existiert, und der Worktree bleibt ohne Git-Fallback auf der Festplatte. Ein Hook, der das Verzeichnis vor dem Beenden mit einem anderen Code als 0 gelöscht hat, gilt als entfernt. Wie der Fehler gemeldet wird, erfahren Sie unter [WorktreeRemove-Eingabe](#worktreeremove-input).
3401 3422
3403 3424
3404Claude Code verwirft die [JSON-Ausgabefelder](#json-output) eines WorktreeRemove-Hooks, etwa `systemMessage` und `continue`.3425Claude Code verwirft die [JSON-Ausgabefelder](#json-output) eines WorktreeRemove-Hooks, etwa `systemMessage` und `continue`.
3405 3426
3406Beim Löschen einer Hintergrundsitzung überprüft Claude Code den gespeicherten Worktree-Pfad, bevor der Hook ausgeführt wird, und lehnt einen Pfad ab, der ein Symlink ist oder unterhalb des Repository-Stammverzeichnisses durch einen führt. Für einen Worktree, der noch Dateien enthält, wird der Hook nur ausgeführt, wenn Sie das Löschen in der [Agent-Ansicht](/docs/de/agent-view#what-deleting-a-session-removes) bestätigen; für einen solchen Worktree behält [`claude rm`](/docs/de/agent-view#manage-sessions-from-the-shell) stattdessen die Sitzung und den Worktree bei. Vor v2.1.216 wurde der Hook ohne diese Prüfungen für den gespeicherten Pfad ausgeführt.3427Beim Löschen einer Hintergrundsitzung überprüft Claude Code den gespeicherten Worktree-Pfad, bevor der Hook ausgeführt wird, und lehnt einen Pfad ab, der ein Symlink ist oder unterhalb des Repository-Stammverzeichnisses durch einen führt. Auf diesem Weg wird der Hook für einen Worktree, der noch Dateien enthält, nur ausgeführt, wenn Sie das Löschen in der [Agentenansicht](/docs/de/agent-view#what-deleting-a-session-removes) bestätigen; bei einem solchen Worktree behält [`claude rm`](/docs/de/agent-view#manage-sessions-from-the-shell) stattdessen die Sitzung und den Worktree. Vor v2.1.216 wurde der Hook ohne diese Prüfungen auf dem gespeicherten Pfad ausgeführt.
3407 3428
3408Claude Code übergibt den von WorktreeCreate zurückgegebenen Pfad als `worktree_path` in der Hook-Eingabe. Dieses Beispiel liest diesen Pfad und entfernt das Verzeichnis:3429Claude Code übergibt den von WorktreeCreate zurückgegebenen Pfad als `worktree_path` in der Hook-Eingabe. Dieses Beispiel liest diesen Pfad und entfernt das Verzeichnis:
3409 3430
3444 3465
3445* Der Worktree bleibt auf der Festplatte, und der Befehl sowie die stderr-Ausgabe des Hooks werden in das [Debug-Log](#debug-hooks) geschrieben.3466* Der Worktree bleibt auf der Festplatte, und der Befehl sowie die stderr-Ausgabe des Hooks werden in das [Debug-Log](#debug-hooks) geschrieben.
3446* Wenn Sie eine Hintergrundsitzung gelöscht haben, bleibt auch die Sitzung erhalten. Die Ablehnungsmeldung in der [Agent-Ansicht](/docs/de/agent-view#what-deleting-a-session-removes) gibt an, wie der Hook beendet wurde, etwa `exited 1`, zitiert den Anfang seiner stderr-Ausgabe und gibt an, ob ein erneutes Löschen der Sitzung das Verzeichnis trotzdem entfernt.3467* Wenn Sie eine Hintergrundsitzung gelöscht haben, bleibt auch die Sitzung erhalten. Die Ablehnungsmeldung in der [Agent-Ansicht](/docs/de/agent-view#what-deleting-a-session-removes) gibt an, wie der Hook beendet wurde, etwa `exited 1`, zitiert den Anfang seiner stderr-Ausgabe und gibt an, ob ein erneutes Löschen der Sitzung das Verzeichnis trotzdem entfernt.
3468* Wenn `claude remote-control` den Worktree einer Sitzung bereinigt hat, zeigt das Terminal, in dem es läuft, `worktree removal failed, kept: <path>` an.
3447 3469
3448<h3 id="precompact">3470<h3 id="precompact">
3449 PreCompact3471 PreCompact