4 4
5# Mods für Ihre Organisation verwalten5# Mods für Ihre Organisation verwalten
6 6
7> Kontrollieren Sie Claude Code Mods mit verwalteten Einstellungen: Deaktivieren Sie von Benutzern installierte Mods, erlauben Sie nur Ihre eigenen, überprüfen Sie, was ein Mod tun kann, und erzwingen Sie eine Richtlinie mit Ihrem eigenen Mod.7> Steuern Sie Mods in Claude Code mit verwalteten Einstellungen: Verhindern Sie von Benutzern installierte Mods, lassen Sie nur Ihre eigenen zu, prüfen Sie, was ein Mod tun kann, und setzen Sie Richtlinien mit Ihrem eigenen Mod durch.
8 8
9Ein [Mod](/docs/de/plugins/mods/overview) ist ein Plugin, das Code innerhalb von Claude Code mit den Berechtigungen des Benutzers ausführt, der es installiert hat. Mods sind nicht isoliert. Durch [verwaltete Einstellungen](/docs/de/managed-settings) entscheiden Sie, ob Mods auf den Maschinen Ihrer Benutzer ausgeführt werden, welche und in welcher Reihenfolge. Sie können auch einen Mod Ihrer eigenen installieren, der überwacht oder ablehnt, was andere Mods tun.9Ein [Mod](/docs/de/plugins/mods/overview) ist ein Plugin, das Code innerhalb von Claude Code mit den Berechtigungen des Benutzers ausführt, der es installiert hat. Mods laufen nicht in einer Sandbox. Über [verwaltete Einstellungen](/docs/de/managed-settings) legen Sie fest, ob Mods auf den Rechnern Ihrer Benutzer ausgeführt werden, welche davon und in welcher Reihenfolge. Sie können auch einen eigenen Mod installieren, der überwacht oder ablehnt, was andere Mods tun.
10 10
11Diese Seite ist für die Person, die verwaltete Einstellungen für Claude Code bereitstellt, ob als Datei, über MDM oder über die claude.ai Admin-Konsole. Mods sind standardmäßig in Claude Code v2.1.287 und später aktiviert. Beginnen Sie mit dem Abschnitt, der zu dem passt, was Sie tun möchten:11Diese Seite richtet sich an die Person, die verwaltete Einstellungen für Claude Code bereitstellt, ob als Datei, über MDM oder über die claude.ai-Admin-Konsole. Mods sind in Claude Code v2.1.287 und höher standardmäßig aktiviert. Beginnen Sie mit dem Abschnitt, der Ihrem Anliegen entspricht:
12 12
13* **Mods von Benutzern ausschließen, mit oder ohne Ihre eigenen Mods**: [Verhindern Sie, dass von Benutzern installierte Mods geladen werden](#stop-user-installed-mods-from-loading)13* **Eigene Mods der Benutzer ausschließen, mit oder ohne eigene Mods**: [Das Laden von Mods verhindern, die von Benutzern installiert wurden](#stop-user-installed-mods-from-loading)
14* **Sehen Sie, was Ihre Benutzer erhalten, wenn Sie nichts ändern**: [Wissen Sie, was standardmäßig passiert](#know-what-happens-by-default)14* **Sehen, was Ihre Benutzer erhalten, wenn Sie nichts ändern**: [Das Standardverhalten kennen](#know-what-happens-by-default)
15* **Lassen Sie Mods mit anderen Einschränkungen aktiviert**: [Wählen Sie, wie viel Sie erlauben](#choose-how-much-to-allow)15* **Mods mit anderen Einschränkungen aktiviert lassen**: [Festlegen, wie viel erlaubt ist](#choose-how-much-to-allow)
16 16
17<Note>17<Note>
18 Diese Fälle werden auf anderen Seiten behandelt:18 Diese Fälle werden auf anderen Seiten behandelt:
19 19
20 * **Sie haben verwaltete Einstellungen noch nicht bereitgestellt**: Beginnen Sie mit [Verwaltete Einstellungen bereitstellen](/docs/de/managed-settings)20 * **Sie haben noch nie verwaltete Einstellungen bereitgestellt**: Beginnen Sie mit [Verwaltete Einstellungen bereitstellen](/docs/de/managed-settings)
21 * **Sie möchten kontrollieren, welche Plugins Benutzer installieren können**: Siehe [Plugins für Ihre Organisation verwalten](/docs/de/plugins/org)21 * **Sie möchten steuern, welche Plugins Benutzer installieren können**: Siehe [Plugins für Ihre Organisation verwalten](/docs/de/plugins/org)
22</Note>22</Note>
23 23
24<h2 id="stop-user-installed-mods-from-loading">24<h2 id="stop-user-installed-mods-from-loading">
25 Verhindern Sie, dass von Benutzern installierte Mods geladen werden25 Verhindern, dass von Benutzern installierte Mods geladen werden
26</h2>26</h2>
27 27
28Um zu verhindern, dass jeder Mod, den Ihre Benutzer mitbringen, geladen wird, setzen Sie die Option `allowManagedModsOnly` auf dem [integrierten Guard](#know-what-happens-by-default), einem Policy-Mod, den Claude Code vor jedem Mod lädt, den ein Benutzer installiert. Die Option befindet sich in verwalteten Einstellungen unter `pluginConfigs`, mit dem Schlüssel `cc-plugin-sec-default@builtin`:28Um zu verhindern, dass Mods geladen werden, die Ihre Benutzer mitbringen, setzen Sie die Option `allowManagedModsOnly` für den [integrierten Wächter](#know-what-happens-by-default), einen Richtlinien-Mod, den Claude Code vor jedem von einem Benutzer installierten Mod lädt. Die Option gehört in die verwalteten Einstellungen unter `pluginConfigs`, mit dem Schlüssel `cc-plugin-sec-default@builtin`:
29 29
30```json managed-settings.json theme={null}30```json managed-settings.json theme={null}
31{31{
39}39}
40```40```
41 41
42Mit der in verwalteten Einstellungen gesetzten Option:42Wenn die Option in den verwalteten Einstellungen gesetzt ist:
43 43
44* **Kein Mod, den ein Benutzer mitbringt, wird geladen**: Das umfasst einen Mod in einem Plugin, das der Benutzer installiert hat, einen Mod, der mit `--plugin-dir` geladen wird, und einen Mod, den [Claude während einer Sitzung geschrieben hat](/docs/de/plugins/mods/create#ask-claude-for-a-mod)44* **Kein Mod, den ein Benutzer mitbringt, wird geladen**: Das umfasst einen Mod in einem Plugin, das der Benutzer installiert hat, einen mit `--plugin-dir` geladenen Mod und einen Mod, den [Claude während einer Sitzung geschrieben hat](/docs/de/plugins/mods/create#ask-claude-for-a-mod)
45* **Die Mods Ihrer Organisation werden weiterhin geladen**: Ein Mod, der [als Mod Ihrer Organisation zählt](#install-your-organizations-mods), wird nicht überprüft. Jeder andere Mod zählt als Mod eines Benutzers und wird nicht geladen. Das umfasst einen Mod in einem Plugin, das Sie von einem GitHub oder anderen Remote-Marketplace aktivieren, und einen, den Ihre Organisation für ihre Mitglieder auf claude.ai aktiviert. Wenn keiner als Ihrer zählt, wird kein installierter Mod geladen.45* **Die Mods Ihrer Organisation werden weiterhin geladen**: Ein Mod, der [als Mod Ihrer Organisation gilt](#install-your-organizations-mods), wird nicht geprüft. Jeder andere Mod gilt als Mod eines Benutzers und wird nicht geladen. Dazu gehört ein Mod in einem Plugin, das Sie aus einem GitHub- oder anderen Remote-Marketplace aktivieren, sowie einer, den Ihre Organisation auf claude.ai für ihre Mitglieder aktiviert. Wenn keiner als Ihrer gilt, wird kein installierter Mod geladen.
46* **Benutzer können es nicht rückgängig machen**: Der Guard liest die Option nur aus verwalteten Einstellungen, daher ändert derselbe Eintrag in einer Benutzer-, Projekt- oder lokalen Einstellungsdatei oder in einer Datei, die mit `--settings` übergeben wird, nichts46* **Benutzer können dies nicht rückgängig machen**: Der Wächter liest die Option nur aus den verwalteten Einstellungen, sodass derselbe Eintrag in einer Benutzer-, Projekt- oder lokalen Einstellungsdatei oder in einer mit `--settings` übergebenen Datei nichts ändert
47* **Eine Datei oder MDM-Richtlinie deckt jeden Provider ab**: Wenn Sie die Option als Datei oder über MDM bereitstellen, funktioniert sie auf Amazon Bedrock, Google Cloud's Agent Platform und Microsoft Foundry auf die gleiche Weise. Für die Bereitstellung über die claude.ai Admin-Konsole siehe [Plattformverfügbarkeit](/docs/de/server-managed-settings#platform-availability)47* **Eine Datei- oder MDM-Richtlinie gilt für jeden Anbieter**: Wenn Sie die Option als Datei oder über MDM bereitstellen, funktioniert sie auf Amazon Bedrock, Google Clouds Agent Platform und Microsoft Foundry auf die gleiche Weise. Informationen zur Bereitstellung über die Admin-Konsole von claude.ai finden Sie unter [Plattformverfügbarkeit](/docs/de/server-managed-settings#platform-availability)
48* **Die anderen Anpassungen der Benutzer funktionieren weiterhin**: Ihre [Hooks in Einstellungsdateien](/docs/de/hooks), Statuszeilen und `/goal` sind nicht betroffen48* **Andere Anpassungen der Benutzer funktionieren weiterhin**: Ihre [Hooks in Einstellungsdateien](/docs/de/hooks), Statuszeilen und `/goal` sind nicht betroffen
49* **Integrierte Mods funktionieren weiterhin**: Mods, die in Claude Code integriert sind, wie z. B. `AGENTS.md` Unterstützung, haben jeweils [ihren eigenen Schalter](/docs/de/plugins/mods/overview#mods-built-into-claude-code)49* **Integrierte Mods laufen weiterhin**: In Claude Code integrierte Mods, wie die Unterstützung für `AGENTS.md`, haben jeweils [einen eigenen Schalter](/docs/de/plugins/mods/overview#mods-built-into-claude-code)
50 50
51Um die Option auf der Maschine eines Benutzers zu bestätigen, starten Sie Claude Code dort mit `--plugin-dir` und dem Pfad eines Verzeichnisses, das einen Mod enthält, z. B. `claude --plugin-dir ./first-mod`. Die Hooks des Mods werden nicht ausgeführt, und das Transkript und das Debug-Protokoll enthalten die [Nachricht des Guards](/docs/de/plugins/mods/troubleshoot#messages-from-the-built-in-guard), die den Mod und `allowManagedModsOnly` benennt. Wenn der Mod geladen wird, siehe [Überprüfen Sie, dass eine Richtlinie in Kraft ist](/docs/de/managed-settings#check-that-a-policy-is-in-force) und die [Regeln, die entscheiden, ob eine Option wirksam wird](#set-options-on-the-built-in-guard).51Um die Option auf dem Rechner eines Benutzers zu überprüfen, starten Sie Claude Code dort mit `--plugin-dir` und dem Pfad eines Verzeichnisses, das einen Mod enthält, zum Beispiel `claude --plugin-dir ./first-mod`. Die Hooks des Mods werden nicht ausgeführt, und das Transkript sowie das Debug-Log enthalten die [Meldung des Wächters](/docs/de/plugins/mods/troubleshoot#messages-from-the-built-in-guard), die den Mod und `allowManagedModsOnly` nennt. Wenn der Mod geladen wird, lesen Sie [Prüfen, ob eine Richtlinie in Kraft ist](/docs/de/managed-settings#check-that-a-policy-is-in-force) und die [Regeln, die bestimmen, ob eine Option wirksam wird](#set-options-on-the-built-in-guard).
52 52
53Wenn Sie `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS` während des Early Access auf `0` gesetzt haben, ersetzen Sie es durch diese Option. Claude Code v2.1.287 und später ignoriert die Variable bei jedem Wert, daher lässt ein `0` dort Mods aktiviert.53Wenn Sie während des Early Access `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS` auf `0` gesetzt haben, ersetzen Sie dies durch diese Option. Claude Code v2.1.287 und neuer ignoriert die Variable unabhängig von ihrem Wert, sodass eine `0` dort Mods aktiviert lässt.
54 54
55<h2 id="know-what-happens-by-default">55<h2 id="know-what-happens-by-default">
56 Wissen Sie, was standardmäßig passiert56 Wissen, was standardmäßig geschieht
57</h2>57</h2>
58 58
59Ohne Ihre eigenen Mod-Einstellungen erhalten Ihre Benutzer folgendes:59Ohne eigene Mod-Einstellungen erhalten Ihre Benutzer Folgendes:
60 60
61* **Mods sind aktiviert.** Ein Benutzer kann ein Plugin installieren, das einen Mod von jedem Marketplace enthält, den Ihre Plugin-Einstellungen erlauben, oder einen aus einem Verzeichnis mit `--plugin-dir` laden.61* **Mods sind aktiviert.** Ein Benutzer kann ein Plugin, das einen Mod enthält, aus jedem Marketplace installieren, den Ihre Plugin-Einstellungen zulassen, oder einen Mod mit `--plugin-dir` aus einem Verzeichnis laden.
62* **Ein integrierter Guard wird zuerst ausgeführt.** Claude Code lädt einen integrierten Mod namens `sec-default@builtin` vor jedem Mod, den ein Benutzer installiert. Benutzer können ihn nicht ausschalten. `/plugin` und das Debug-Protokoll listen ihn als `cc-plugin-sec-default` auf. Der Guard wird geladen, wenn einer dieser Punkte zutrifft:62* **Ein integrierter Wächter läuft zuerst.** Claude Code lädt einen integrierten Mod namens `sec-default@builtin` vor jedem Mod, den ein Benutzer installiert. Benutzer können ihn nicht ausschalten. `/plugin` und das Debug-Log führen ihn als `cc-plugin-sec-default`. Der Wächter wird geladen, wenn eine der folgenden Bedingungen zutrifft:
63 63
64 * Die Maschine hat verwaltete Einstellungen64 * Der Rechner verfügt über verwaltete Einstellungen
65 * Der Benutzer ist bei Claude Code mit einem Team- oder Enterprise-Plan angemeldet65 * Der Benutzer ist bei Claude Code mit einem Team- oder Enterprise-Plan angemeldet
66 66
67 Ein Benutzer, der sich mit einem API-Schlüssel authentifiziert oder über Amazon Bedrock, Google Cloud's Agent Platform oder Microsoft Foundry, erhält den Guard nur auf einer Maschine, die verwaltete Einstellungen hat.67 Ein Benutzer, der sich mit einem API-Schlüssel oder über Amazon Bedrock, die Agent Platform von Google Cloud oder Microsoft Foundry authentifiziert, erhält den Wächter nur auf einem Rechner mit verwalteten Einstellungen.
68* **Der Guard schützt, was Sie verwalten.** Ein Mod eines Benutzers kann nicht ändern, was Ihre verwalteten Hooks erhalten oder entscheiden, die Systemaufforderung, Ihre verwaltete `CLAUDE.md` und andere verwaltete Anweisungen, was jeder Mod als Einstellungen liest, oder die Tools und Beschreibungen Ihrer verwalteten MCP-Server.68* **Der Wächter schützt, was Sie verwalten.** Der Mod eines Benutzers kann nicht ändern, was Ihre verwalteten Hooks erhalten oder entscheiden, den System-Prompt, Ihre verwaltete `CLAUDE.md` und andere verwaltete Anweisungen, was ein Mod als Einstellungen liest, oder die Tools und Beschreibungen Ihrer verwalteten MCP-Server.
69* **Alles andere ist erlaubt.** Der Guard fügt keine anderen Einschränkungen hinzu. Ein Mod eines Benutzers kann immer noch Dateien lesen und schreiben, Prozesse starten, Netzwerkanfragen stellen, Tool-Aufrufe und Aufforderungen umschreiben, einen Tool-Aufruf ablehnen, einen genehmigen, der sonst eine Aufforderung auslösen würde, und in der Benutzeroberfläche zeichnen, alles mit den Berechtigungen dieses Benutzers.69* **Alles andere ist erlaubt.** Der Wächter fügt keine weiteren Einschränkungen hinzu. Der Mod eines Benutzers kann weiterhin Dateien lesen und schreiben, Prozesse starten, Netzwerkanfragen stellen, Tool-Aufrufe und Prompts umschreiben, einen Tool-Aufruf ablehnen, einen Aufruf genehmigen, für den sonst eine Berechtigungsabfrage erscheinen würde, und in der Oberfläche zeichnen, alles mit den Berechtigungen dieses Benutzers.
70* **Deny-Regeln und Ihre verwalteten Hooks haben Vorrang.** Wo der Guard geladen wird, kann ein Mod eines Benutzers einen Aufruf nicht genehmigen, den eine `deny` Regel ablehnt, unabhängig davon, welche Einstellungsdatei die Regel enthält. Ein Block von einem `PreToolUse` Hook in verwalteten Einstellungen ist auch endgültig. Beide gelten für Claude's Tool-Aufrufe. Keiner gilt für die eigenen [`$.fs` und `$.process` Aufrufe](/docs/de/plugins/mods/api#reach-files-processes-and-the-network) eines Mods: Mit `Read(.env)` verweigert, kann ein Mod diese Datei immer noch mit `$.fs.read` lesen oder ein Programm starten, das dies tut. Um diese Aufrufe zu begrenzen, verhindern Sie, dass der Mod geladen wird, oder hooken Sie den Aufruf in einem [Policy-Mod](#enforce-a-policy-with-a-mod-of-your-own).70* **Deny-Regeln und Ihre verwalteten Hooks haben Vorrang.** Wo der Wächter geladen wird, kann der Mod eines Benutzers keinen Aufruf genehmigen, den eine `deny`-Regel ablehnt, unabhängig davon, in welcher Einstellungsdatei die Regel steht. Eine Blockierung durch einen `PreToolUse`-Hook in verwalteten Einstellungen ist ebenfalls endgültig. Beides gilt für die Tool-Aufrufe von Claude. Keines von beiden gilt für die eigenen [`$.fs`- und `$.process`-Aufrufe](/docs/de/plugins/mods/api#reach-files-processes-and-the-network) eines Mods: Wenn `Read(.env)` abgelehnt ist, kann ein Mod diese Datei trotzdem mit `$.fs.read` lesen oder ein Programm starten, das dies tut. Um diese Aufrufe einzuschränken, verhindern Sie, dass der Mod geladen wird, oder behandeln Sie den Aufruf in einem [Richtlinien-Mod](#enforce-a-policy-with-a-mod-of-your-own).
71* **Andere Berechtigungsprüfungen können überschrieben werden.** Ein Mod eines Benutzers, der Tool-Aufrufe genehmigt, kann einen Aufruf genehmigen, den eine `ask` Regel auffordern würde, oder den ein `PreToolUse` Hook außerhalb verwalteter Einstellungen blockiert hat. Im Auto-Modus wird ein Aufruf, den der Mod genehmigt, ohne eine Klassifiziererprüfung ausgeführt.71* **Andere Berechtigungsprüfungen können übergangen werden.** Der Mod eines Benutzers, der Tool-Aufrufe genehmigt, kann einen Aufruf genehmigen, für den eine `ask`-Regel nachfragen würde oder den ein `PreToolUse`-Hook außerhalb der verwalteten Einstellungen blockiert hat. Im Auto-Modus wird ein vom Mod genehmigter Aufruf ohne Prüfung durch den Klassifikator ausgeführt.
72 72
73Der Quellcode des Guards ist öffentlich im [`mods/sec-default` Verzeichnis des Claude Code Repositorys](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).73Der Quellcode des Wächters ist öffentlich im [Verzeichnis `mods/sec-default` des Claude Code-Repositorys](https://github.com/anthropics/claude-code/tree/main/mods/sec-default) verfügbar.
74 74
75<h3 id="know-which-controls-still-apply">75<h3 id="know-which-controls-still-apply">
76 Wissen Sie, welche Kontrollen noch gelten76 Wissen, welche Kontrollen weiterhin gelten
77</h3>77</h3>
78 78
79Mods ersetzen nicht die Kontrollen, die Sie bereits haben:79Mods ersetzen die Kontrollen, die Sie bereits haben, nicht:
80 80
81* **Einstellungs-Hooks funktionieren weiterhin.** Command-, HTTP-, Prompt- und Agent-Hooks in Einstellungsdateien und in `hooks/hooks.json` von Plugins werden wie zuvor ausgeführt, zusammen mit Mods. Nichts daran ist veraltet.81* **Einstellungs-Hooks funktionieren weiterhin.** Command-, HTTP-, Prompt- und Agent-Hooks in Einstellungsdateien und in `hooks/hooks.json` von Plugins laufen wie bisher, parallel zu Mods. Nichts davon ist veraltet.
82* **Deny-Regeln haben Vorrang, wo der Guard geladen wird.** Ein Mod eines Benutzers kann einen Aufruf nicht genehmigen, den eine `deny` Regel ablehnt, es sei denn, Sie setzen [`allowModsToOverrideDenyRules`](#set-options-on-the-built-in-guard).82* **Deny-Regeln haben Vorrang, wo der Wächter geladen wird.** Der Mod eines Benutzers kann keinen Aufruf genehmigen, den eine `deny`-Regel ablehnt, es sei denn, Sie setzen [`allowModsToOverrideDenyRules`](#set-options-on-the-built-in-guard).
83* **Verwaltete Hooks werden zuerst ausgeführt.** Ein `PreToolUse` Hook in verwalteten Einstellungen wird ausgeführt, bevor ein Mod den Tool-Aufruf sieht, und sein Block ist endgültig. Wenn ein Mod dann den Aufruf umschreibt, werden Ihre verwalteten Hooks erneut auf dem umgeschriebenen Aufruf ausgeführt, daher gilt ein Block immer noch. `PreToolUse` Hooks aus anderen Einstellungsdateien und von Plugins werden nach dem letzten Mod ausgeführt, daher verhindert ein Mod, der sein eigenes Ergebnis anstelle der Ausführung des Tools zurückgibt, dass diese ausgeführt werden. Siehe [Die Reihenfolge, in der Mods ausgeführt werden](/docs/de/plugins/mods/events#the-order-mods-run-in).83* **Verwaltete Hooks laufen zuerst.** Ein `PreToolUse`-Hook in verwalteten Einstellungen läuft, bevor ein Mod den Tool-Aufruf sieht, und seine Blockierung ist endgültig. Wenn ein Mod den Aufruf anschließend umschreibt, laufen Ihre verwalteten Hooks erneut für den umgeschriebenen Aufruf, sodass eine Blockierung weiterhin gilt. `PreToolUse`-Hooks aus anderen Einstellungsdateien und aus Plugins laufen nach dem letzten Mod, sodass ein Mod, der anstelle der Ausführung des Tools ein eigenes Ergebnis zurückgibt, deren Ausführung verhindert. Siehe [Die Reihenfolge, in der Mods laufen](/docs/de/plugins/mods/events#the-order-mods-run-in).
84* **Netzwerkrichtlinie deckt `$.http.fetch` ab.** Wenn Ihre Organisation Web-Abrufe deaktiviert oder nicht wesentlicher Netzwerkverkehr für die Sitzung deaktiviert ist, lehnt Claude Code eine Netzwerkanfrage ab, die ein Mod mit `$.http.fetch` macht. Die Richtlinie deckt kein Programm ab, das der Mod mit `$.process.run` startet. Dieses Programm erreicht das Netzwerk mit dem eigenen Zugriff des Benutzers.84* **Die Netzwerkrichtlinie gilt für `$.http.fetch`.** Wenn Ihre Organisation das Abrufen aus dem Web deaktiviert oder nicht wesentlicher Netzwerkverkehr für die Sitzung ausgeschaltet ist, lehnt Claude Code eine Netzwerkanfrage ab, die ein Mod mit `$.http.fetch` stellt. Die Richtlinie gilt nicht für ein Programm, das der Mod mit `$.process.run` startet. Dieses Programm greift mit dem eigenen Zugriff des Benutzers auf das Netzwerk zu.
85* **Plugin-Kontrollen decken Mods ab.** Ein Mod ist ein Plugin, daher entscheiden die [Einstellungen, die einschränken, was Benutzer installieren können](/docs/de/plugins/org#restrict-what-users-can-install), wie z. B. `strictKnownMarketplaces`, ob er überhaupt installiert werden kann.85* **Plugin-Kontrollen gelten für Mods.** Ein Mod ist ein Plugin, daher entscheiden die [Einstellungen, die einschränken, was Benutzer installieren können](/docs/de/plugins/org#restrict-what-users-can-install), etwa `strictKnownMarketplaces`, ob er überhaupt installiert werden kann.
86* **Mods können die Berechtigungsaufforderung nicht ändern.** Ein Mod kann viel von Claude Code's Benutzeroberfläche umgestalten, aber nicht die Berechtigungsaufforderung, daher kann er nicht ändern, was eine Aufforderung zeigt. Ein Mod kann immer noch einen Tool-Aufruf genehmigen oder ablehnen, bevor die Aufforderung erscheint, wie [Wissen Sie, was standardmäßig passiert](#know-what-happens-by-default) beschreibt.86* **Mods können die Berechtigungsabfrage nicht ändern.** Ein Mod kann einen Großteil der Oberfläche von Claude Code umgestalten, aber nicht die Berechtigungsabfrage, sodass er nicht ändern kann, was eine Abfrage anzeigt. Ein Mod kann einen Tool-Aufruf dennoch genehmigen oder ablehnen, bevor die Abfrage erscheint, wie unter [Wissen, was standardmäßig geschieht](#know-what-happens-by-default) beschrieben.
87* **Vertrauensaufforderungen kommen zuerst.** In einer interaktiven Sitzung in einem Verzeichnis, das der Benutzer noch nicht vertraut hat, wird kein Mod geladen, bis er die Vertrauensaufforderung beantwortet.87* **Vertrauensabfragen kommen zuerst.** In einer interaktiven Sitzung in einem Verzeichnis, dem der Benutzer noch nicht vertraut hat, wird kein Mod geladen, bis er die Vertrauensabfrage beantwortet.
88* **`--safe-mode` schaltet installierte Mods aus, einschließlich Ihrer.** Starten Sie eine Sitzung mit `claude --safe-mode`, um zu überprüfen, ob ein Mod ein Problem verursacht hat.88* **`--safe-mode` schaltet installierte Mods aus, auch Ihre.** Starten Sie eine Sitzung mit `claude --safe-mode`, um zu prüfen, ob ein Mod ein Problem verursacht hat.
89 89
90Keine dieser Kontrollen isoliert einen Mod. Ein Mod, den Sie erlauben, wird als Benutzer ausgeführt, mit dem Zugriff des Benutzers auf Dateien, Prozesse und das Netzwerk.90Keine dieser Kontrollen führt einen Mod in einer Sandbox aus. Ein Mod, den Sie zulassen, läuft als der Benutzer, mit dessen Zugriff auf Dateien, Prozesse und das Netzwerk.
91 91
92<h2 id="decide-whether-to-leave-mods-on">92<h2 id="decide-whether-to-leave-mods-on">
93 Entscheiden Sie, ob Sie Mods aktiviert lassen93 Entscheiden, ob Mods aktiviert bleiben sollen
94</h2>94</h2>
95 95
96Ein Mod kann mehr tun als die anderen Teile eines Plugins, da er innerhalb von Claude Code ausgeführt wird. Er sieht jede Aufforderung und jeden Tool-Aufruf, kann sie ändern und kann einen Tool-Aufruf genehmigen oder ablehnen, bevor eine Berechtigungsaufforderung erscheint.96Ein Mod kann mehr als die anderen Bestandteile eines Plugins, weil er innerhalb von Claude Code ausgeführt wird. Er sieht jeden Prompt und jeden Tool-Aufruf, kann diese ändern und kann einen Tool-Aufruf erlauben oder ablehnen, bevor eine Berechtigungsabfrage erscheint.
97 97
98Was ein Benutzer als Mod laden kann, hängt von den Plugin-Kontrollen ab, die Sie bereits haben:98Was ein Benutzer als Mod laden kann, hängt von den Plugin-Steuerungen ab, die Sie bereits eingerichtet haben:
99 99
100| Ihre heutigen Plugin-Kontrollen | Was ein Benutzer als Mod laden kann |100| Ihre aktuellen Plugin-Steuerungen | Was ein Benutzer als Mod laden kann |
101| :- | :- |101| :- | :- |
102| Keine | Ein Mod von jedem Marketplace, aus jedem Verzeichnis mit `--plugin-dir` oder den Claude während einer Sitzung schreibt |102| Keine | Einen Mod aus einem beliebigen Marketplace, aus einem beliebigen Verzeichnis mit `--plugin-dir` oder einen, den Claude während einer Sitzung schreibt |
103| Ein Marketplace-Allowlist | Ein Mod von den Marketplaces, die Sie erlauben, oder aus jedem Verzeichnis mit `--plugin-dir`. Ein Mod, den Claude während einer Sitzung schreibt, wird nur geladen, wenn die Allowlist [`skills-dir`](/docs/de/plugins/org#keep-skills-directory-plugins-loading) enthält. |103| Eine Marketplace-Allowlist | Einen Mod aus den von Ihnen erlaubten Marketplaces oder aus einem beliebigen Verzeichnis mit `--plugin-dir`. Ein Mod, den Claude während einer Sitzung schreibt, wird nur geladen, wenn die Allowlist [`skills-dir` enthält](/docs/de/plugins/org#keep-skills-directory-plugins-loading). |
104| Ein Marketplace-Allowlist und `disableSideloadFlags` | Ein Mod von den Marketplaces, die Sie erlauben |104| Eine Marketplace-Allowlist und `disableSideloadFlags` | Einen Mod aus den von Ihnen erlaubten Marketplaces |
105 105
106[Plugins für Ihre Organisation verwalten](/docs/de/plugins/org) listet jeden Weg auf, auf dem ein Plugin geladen wird, und die Einstellung, die jeden kontrolliert.106[Plugins für Ihre Organisation verwalten](/docs/de/plugins/org) listet die Wege auf, auf denen ein Plugin geladen wird, sowie die Einstellung, die jeden davon steuert.
107 107
108Um die Mods in einem Marketplace zu überprüfen, bevor Ihre Benutzer sie installieren, siehe [Überprüfen Sie, was ein Mod tun kann](#review-what-a-mod-can-do). Um Mods von Benutzern auszuschließen, bis Sie dies getan haben, siehe [Verhindern Sie, dass von Benutzern installierte Mods geladen werden](#stop-user-installed-mods-from-loading).108Um die Mods in einem Marketplace zu prüfen, bevor Ihre Benutzer sie installieren, lesen Sie [Prüfen, was ein Mod tun kann](#review-what-a-mod-can-do). Um von Benutzern installierte Mods fernzuhalten, bis Sie dies getan haben, lesen Sie [Von Benutzern installierte Mods am Laden hindern](#stop-user-installed-mods-from-loading).
109 109
110<h3 id="review-what-a-mod-can-do">110<h3 id="review-what-a-mod-can-do">
111 Überprüfen Sie, was ein Mod tun kann111 Prüfen, was ein Mod tun kann
112</h3>112</h3>
113 113
114Sie können sehen, was ein Mod tun kann, ohne ihn auszuführen. Führen Sie in Ihrer Shell `claude plugin validate` im Verzeichnis des Plugins aus:114Sie können sehen, was ein Mod tun kann, ohne ihn auszuführen. Führen Sie in Ihrer Shell `claude plugin validate` für das Verzeichnis des Plugins aus:
115 115
116```bash theme={null}116```bash theme={null}
117claude plugin validate ./some-mod117claude plugin validate ./some-mod
124 ❯ ./register.js calls: $.fs.read, $.http.fetch, $.store.set, $.ui.open124 ❯ ./register.js calls: $.fs.read, $.http.fetch, $.store.set, $.ui.open
125```125```
126 126
127Die `hooks:` Zeile listet die Ereignisse auf, die der Mod empfängt. Die `calls:` Zeile listet die Mods API-Methoden auf, die sein Code aufruft. Die [Mods API](/docs/de/plugins/mods/api), geschrieben als `$` im Code eines Mods, ist, wie ein Mod Dateien, Prozesse und das Netzwerk erreicht. Claude Code weigert sich, einen Mod zu laden, der die Mods API auf eine Weise verwendet, die dieser Befehl nicht lesen kann.127Die Zeile `hooks:` listet die Events auf, die der Mod empfängt. Die Zeile `calls:` listet die Methoden der Mods-API auf, die sein Code aufruft. Über die [Mods-API](/docs/de/plugins/mods/api), im Code eines Mods als `$` geschrieben, greift ein Mod auf Dateien, Prozesse und das Netzwerk zu. Claude Code verweigert das Laden eines Mods, der die Mods-API auf eine Weise verwendet, die dieser Befehl nicht auslesen kann.
128 128
129Schauen Sie sich die `calls:` Zeile auf diese an:129Achten Sie in der Zeile `calls:` auf Folgendes:
130 130
131| Aufruf | Was es bedeutet |131| Aufruf | Bedeutung |
132| :- | :- |132| :- | :- |
133| `$.fs.read`, `$.fs.write` | Liest oder schreibt Dateien überall, wo der Benutzer kann |133| `$.fs.read`, `$.fs.write` | Liest oder schreibt Dateien überall dort, wo der Benutzer es kann |
134| `$.process.run`, `$.process.spawn` | Startet Programme als Benutzer |134| `$.process.run`, `$.process.spawn` | Startet Programme als der Benutzer |
135| `$.http.fetch` | Macht Netzwerkanfragen |135| `$.http.fetch` | Stellt Netzwerkanfragen |
136| `$.env.get`, `$.settings.read` | Liest Umgebungsvariablen und Einstellungen, die API-Schlüssel enthalten können. Eine `env reads:` Zeile in der Ausgabe benennt jede Variable. |136| `$.env.get`, `$.settings.read` | Liest Umgebungsvariablen und Einstellungen, die API-Schlüssel enthalten können. Eine Zeile `env reads:` in der Ausgabe nennt jede Variable. |
137| `$.env.set` | Setzt eine Umgebungsvariable für Claude Code und für jeden Befehl und MCP-Server, den es danach startet, was ändern kann, was diese Programme ausführen. Eine `env writes:` Zeile benennt jede Variable. |137| `$.env.set` | Setzt eine Umgebungsvariable für Claude Code und für jeden Befehl und jeden MCP-Server, den es danach startet, was ändern kann, was diese Programme ausführen. Eine Zeile `env writes:` nennt jede Variable. |
138| `$.mcp.call` | Ruft ein Tool auf einem verbundenen MCP-Server auf, unter den Berechtigungsregeln der Sitzung |138| `$.mcp.call` | Ruft ein Tool auf einem verbundenen MCP-Server auf, gemäß den Berechtigungsregeln der Sitzung |
139| `$.model.complete` | Verwendet den Plan oder API-Schlüssel des Benutzers für Modellaufrufe |139| `$.model.complete` | Verwendet den Plan oder API-Schlüssel des Benutzers für Modellaufrufe |
140| `$.prompt.submit` | Sendet eine Aufforderung und kann sie als die eigenen Worte des Benutzers senden |140| `$.prompt.submit` | Sendet einen Prompt ab und kann ihn als eigene Worte des Benutzers senden |
141| `$.session.send` | Sendet eine Nachricht, die eine andere Sitzung oder ein Subagent von Claude liest |141| `$.session.send` | Sendet eine Nachricht, die Claude in einer anderen Sitzung oder einem Subagenten liest |
142 142
143In der `hooks:` Zeile bedeuten [`tool.call`](/docs/de/plugins/mods/reference#tools) und [`prompt.submit`](/docs/de/plugins/mods/reference#prompts-and-what-claude-reads), dass der Mod jeden Tool-Aufruf und jede Aufforderung sieht und sie ändern kann. [`session.append`](/docs/de/plugins/mods/reference#session) bedeutet, dass der Mod jede Zeile der Konversation umschreiben kann, bevor sie gespeichert wird. [`ui.render{component=AskUserQuestion}`](/docs/de/plugins/mods/interface#change-what-claude-code-already-draws) bedeutet, dass der Mod den Dialog umzeichnen kann, den Claude verwendet, um den Benutzer eine Frage zu stellen. `tool.check` bedeutet, dass der Mod einen Tool-Aufruf genehmigen oder ablehnen kann, bevor eine Berechtigungsaufforderung erscheint. [Wissen Sie, was standardmäßig passiert](#know-what-happens-by-default) listet auf, welche Ihrer Regeln und Hooks Vorrang vor seiner Antwort haben.143In der Zeile `hooks:` bedeuten [`tool.call`](/docs/de/plugins/mods/reference#tools) und [`prompt.submit`](/docs/de/plugins/mods/reference#prompts-and-what-claude-reads), dass der Mod jeden Tool-Aufruf und jeden Prompt sieht und diese ändern kann. [`session.append`](/docs/de/plugins/mods/reference#session) bedeutet, dass der Mod jede Zeile der Konversation umschreiben kann, bevor sie gespeichert wird. [`ui.render{component=AskUserQuestion}`](/docs/de/plugins/mods/interface#change-what-claude-code-already-draws) bedeutet, dass der Mod den Dialog neu zeichnen kann, mit dem Claude dem Benutzer eine Frage stellt. `tool.check` bedeutet, dass der Mod einen Tool-Aufruf genehmigen oder ablehnen kann, bevor eine Berechtigungsabfrage erscheint. [Wissen, was standardmäßig passiert](#know-what-happens-by-default) listet auf, welche Ihrer Regeln und Hooks Vorrang vor seiner Antwort haben.
144 144
145<h2 id="choose-how-much-to-allow">145<h2 id="choose-how-much-to-allow">
146 Wählen Sie, wie viel Sie erlauben146 Festlegen, wie viel erlaubt ist
147</h2>147</h2>
148 148
149Mod-Richtlinien reichen von keinen installierten Mods bis zu jedem Mod, den ein Benutzer wählt, mit Ihrem eigenen Mod, der die anderen überprüft, und jede ist ein paar verwaltete Einstellungen. Finden Sie die Richtlinie, die Sie möchten, in der ersten Spalte und setzen Sie, was die zweite Spalte benennt. [Verwaltete Einstellungen bereitstellen](/docs/de/managed-settings) behandelt, wo verwaltete Einstellungen leben.149Mod-Richtlinien reichen von gar keinen installierten Mods bis zu jedem Mod, den ein Benutzer wählt, wobei Ihr eigener Mod die anderen prüft, und jede davon besteht aus einigen verwalteten Einstellungen. Suchen Sie die gewünschte Richtlinie in der ersten Spalte und setzen Sie, was die zweite Spalte nennt. [Verwaltete Einstellungen bereitstellen](/docs/de/managed-settings) beschreibt, wo verwaltete Einstellungen liegen.
150 150
151| Was Sie möchten | Einstellungen |151| Was Sie möchten | Einstellungen |
152| :- | :- |152| :- | :- |
153| Keine installierten Mods, mit Hooks unverändert | Setzen Sie [`allowManagedModsOnly`](#set-options-on-the-built-in-guard) und stellen Sie keine Mods Ihrer eigenen bereit |153| Keine installierten Mods, Hooks bleiben unberührt | Setzen Sie [`allowManagedModsOnly`](#set-options-on-the-built-in-guard) und stellen Sie keine eigenen Mods bereit |
154| Keine installierten Mods und überhaupt keine Hooks, einschließlich Ihrer verwalteten Hooks | Setzen Sie `disableAllHooks` auf `true` |154| Keine installierten Mods und überhaupt keine Hooks, einschließlich Ihrer verwalteten Hooks | Setzen Sie `disableAllHooks` auf `true` |
155| Nur die Mods Ihrer Organisation | Setzen Sie die Option [`allowManagedModsOnly`](#stop-user-installed-mods-from-loading) des Guards und [installieren Sie Ihre Mods](#install-your-organizations-mods), damit sie als Ihre zählen |155| Nur die Mods Ihrer Organisation | Setzen Sie die [Option `allowManagedModsOnly`](#stop-user-installed-mods-from-loading) des Wächters und [installieren Sie Ihre Mods](#install-your-organizations-mods) so, dass sie als Ihre gelten |
156| Jeder Mod von Marketplaces, die Sie genehmigen | Behalten Sie Ihre [Marketplace-Einschränkungen](/docs/de/plugins/org#restrict-what-users-can-install) und setzen Sie `disableSideloadFlags` auf `true` |156| Jeder Mod aus Marketplaces, die Sie genehmigen | Behalten Sie Ihre [Marketplace-Einschränkungen](/docs/de/plugins/org#restrict-what-users-can-install) bei und setzen Sie `disableSideloadFlags` auf `true` |
157| Jeder Mod, mit Ihrem eigenen Mod, der die anderen überprüft | [Installieren Sie Ihren Mod](#install-your-organizations-mods) und listen Sie ihn mit `sec-default@builtin` in `prependPlugins` auf |157| Jeder Mod, wobei Ihr eigener Mod die anderen prüft | [Installieren Sie Ihren Mod](#install-your-organizations-mods) und führen Sie ihn zusammen mit `sec-default@builtin` in `prependPlugins` auf |
158 158
159Was jede Einstellung tut:159Was jede Einstellung bewirkt:
160 160
161* **`allowManagedModsOnly`**: eine Option auf dem integrierten Guard. Mods von Benutzern werden nicht geladen, und ihre Einstellungs-Hooks, Statuszeilen und `/goal` funktionieren weiterhin. [Verhindern Sie, dass von Benutzern installierte Mods geladen werden](#stop-user-installed-mods-from-loading) listet auf, was es abdeckt.161* **`allowManagedModsOnly`**: eine Option des integrierten Wächters. Die eigenen Mods der Benutzer werden nicht geladen, und ihre Einstellungs-Hooks, Statuszeilen und `/goal` funktionieren weiterhin. [Vom Benutzer installierte Mods am Laden hindern](#stop-user-installed-mods-from-loading) führt auf, was sie abdeckt.
162* **`allowManagedHooksOnly`**: eine breitere Einstellung. Nur [die Mods Ihrer Organisation](#install-your-organizations-mods) und die in Claude Code integrierten Mods werden geladen. Ein Mod, den ein Benutzer selbst installiert hat, wird nicht geladen. Die Einstellung blockiert auch Hooks in den eigenen Einstellungsdateien von Benutzern. Lesen Sie [Was unter `allowManagedHooksOnly` ausgeführt wird](/docs/de/settings-reference#what-runs-under-allowmanagedhooksonly), bevor Sie es setzen.162* **`allowManagedHooksOnly`**: eine umfassendere Einstellung. Nur [die Mods Ihrer Organisation](#install-your-organizations-mods) und die in Claude Code integrierten Mods werden geladen. Ein Mod, den ein Benutzer selbst installiert hat, wird nicht geladen. Die Einstellung blockiert außerdem Hooks in den eigenen Einstellungsdateien der Benutzer. Lesen Sie [Was unter `allowManagedHooksOnly` ausgeführt wird](/docs/de/settings-reference#what-runs-under-allowmanagedhooksonly), bevor Sie sie setzen.
163* **`disableAllHooks`**: die breiteste Einstellung. In verwalteten Einstellungen stoppt es die Mods in jedem installierten Plugin, einschließlich Ihrer, und schaltet jeden Hook in Einstellungsdateien aus, daher blockiert ein `PreToolUse` Hook in Ihren verwalteten Einstellungen nichts mehr. Benutzerdefinierte Statuszeilen und `/goal` funktionieren auch nicht mehr. Lesen Sie [`disableAllHooks`](/docs/de/settings-reference#disableallhooks), bevor Sie es setzen.163* **`disableAllHooks`**: die umfassendste Einstellung. In verwalteten Einstellungen stoppt sie die Mods in jedem installierten Plugin, einschließlich Ihrer eigenen, und schaltet jeden Hook in Einstellungsdateien aus, sodass ein `PreToolUse`-Hook in Ihren verwalteten Einstellungen nichts mehr blockiert. Benutzerdefinierte Statuszeilen und `/goal` funktionieren ebenfalls nicht mehr. Lesen Sie [`disableAllHooks`](/docs/de/settings-reference#disableallhooks), bevor Sie sie setzen.
164* **`disableSideloadFlags`**: lehnt `--plugin-dir` und `--plugin-url` beim Start ab, daher lädt niemand einen Mod aus einem Verzeichnis, und verhindert, dass Mods, die Claude während einer Sitzung schreibt, geladen werden. Die Einstellung lehnt auch `--agents` und `--mcp-config` ab. Lesen Sie [`disableSideloadFlags`](/docs/de/settings-reference#disablesideloadflags), bevor Sie es setzen.164* **`disableSideloadFlags`**: lehnt `--plugin-dir` und `--plugin-url` beim Start ab und verhindert, dass Mods geladen werden, die Claude während einer Sitzung schreibt. Die Einstellung lehnt außerdem `--agents` und `--mcp-config` ab. Lesen Sie [`disableSideloadFlags`](/docs/de/settings-reference#disablesideloadflags), bevor Sie sie setzen.
165 165
166Mods, die in Claude Code integriert sind, wie z. B. `AGENTS.md` Unterstützung, sind von diesen Einstellungen nicht betroffen. Jeder hat [seinen eigenen Schalter](/docs/de/plugins/mods/overview#mods-built-into-claude-code).166In Claude Code integrierte Mods, wie die Unterstützung für `AGENTS.md`, sind von diesen Einstellungen nicht betroffen. Jeder davon hat [einen eigenen Schalter](/docs/de/plugins/mods/overview#mods-built-into-claude-code).
167 167
168Ein Benutzer, dessen Mod nicht geladen wurde, findet den Grund in seinem Debug-Protokoll. [Verweigerungsmeldungen](/docs/de/plugins/mods/troubleshoot#refusal-messages) listet die Zeilen für `allowManagedHooksOnly` und `disableAllHooks` auf, und [Meldungen vom integrierten Guard](/docs/de/plugins/mods/troubleshoot#messages-from-the-built-in-guard) hat die Zeile für `allowManagedModsOnly`.168Ein Benutzer, dessen Mod nicht geladen wurde, findet den Grund in seinem Debug-Log. [Ablehnungsmeldungen](/docs/de/plugins/mods/troubleshoot#refusal-messages) führt die Zeilen für `allowManagedHooksOnly` und `disableAllHooks` auf, und [Meldungen des integrierten Wächters](/docs/de/plugins/mods/troubleshoot#messages-from-the-built-in-guard) enthält die Zeile für `allowManagedModsOnly`.
169
170<h3 id="allow-only-your-organization’s-mods">
171 Nur die Mods Ihrer Organisation zulassen
172</h3>
173
174Um die Mods Ihrer Organisation auszuführen und die von Benutzern mitgebrachten zu blockieren, stellen Sie die Einstellungen aus der Zeile **Nur die Mods Ihrer Organisation** der [Richtlinientabelle](#choose-how-much-to-allow) sowie `disableSideloadFlags` bereit. Mit dieser vollständigen `managed-settings.json` lehnt Claude Code die eigenen Mods der Benutzer ab, sodass keiner ihrer Hooks ausgeführt wird, und Ihr Richtlinien-Mod wird vor anderen Mods ausgeführt:
175
176```json managed-settings.json theme={null}
177{
178 "extraKnownMarketplaces": {
179 "acme-tools": {
180 "source": { "source": "directory", "path": "/opt/acme/claude-plugins" }
181 }
182 },
183 "enabledPlugins": { "acme-guard@acme-tools": true },
184 "prependPlugins": ["acme-guard@acme-tools", "sec-default@builtin"],
185 "pluginConfigs": {
186 "cc-plugin-sec-default@builtin": {
187 "options": { "allowManagedModsOnly": true }
188 }
189 },
190 "disableSideloadFlags": true
191}
192```
193
194Jede Gruppe von Schlüsseln erfüllt eine Aufgabe:
195
196* **`extraKnownMarketplaces`, `enabledPlugins` und `prependPlugins`**: installieren Ihren Mod so, dass er als Ihrer gilt, und führen ihn zuerst aus, mit dem Wächter danach. [Die Mods Ihrer Organisation installieren und die Reihenfolge festlegen](#install-your-organizations-mods) beschreibt das Verzeichnis, auf das diese Schlüssel verweisen.
197* **`pluginConfigs`**: setzt die Option `allowManagedModsOnly` des Wächters, sodass Claude Code die eigenen Mods der Benutzer ablehnt. Ihre Einstellungs-Hooks, Statuszeilen und `/goal` funktionieren weiterhin.
198* **`disableSideloadFlags`**: siehe [`disableSideloadFlags`](/docs/de/settings-reference#disablesideloadflags) für die Flags, die sie beim Start ablehnt
199
200Um die Richtlinie auf einem Testrechner zu überprüfen, starten Sie in Ihrer Shell eine Sitzung mit `claude --debug` und lesen Sie das Debug-Log:
201
202* **Ihr Mod**: Seine Zeile `hooks module` enthält `tier prepend`
203* **Ein vom Benutzer installierter Mod**: Eine Zeile lautet `refused by cc-plugin-sec-default: mods are limited to your organization's by policy (allowManagedModsOnly)`. Eine frühere Zeile besagt, dass das Hooks-Modul dieses Mods `loaded` wurde, suchen Sie also nach der Ablehnung.
204* **Ein Plugin-Verzeichnis**: `claude --plugin-dir ./any-mod` wird mit einer Meldung beendet, die mit `--plugin-dir is disabled by your organization's managed settings (disableSideloadFlags)` beginnt
205
206Um zusätzlich einzuschränken, welche Marketplaces Benutzer hinzufügen können, kombinieren Sie diese Datei mit Ihren [Marketplace-Einschränkungen](/docs/de/plugins/org#restrict-what-users-can-install).
207
208<h3 id="apply-your-plugin-controls-to-mods">
209 Ihre Plugin-Steuerungen auf Mods anwenden
210</h3>
211
212Ein Mod ist ein Plugin, daher gelten die Möglichkeiten, mit denen Sie [Plugins für Ihre Organisation verwalten](/docs/de/plugins/org), auch für ein Plugin, das einen Mod enthält:
213
214* **Sehen, welche Plugins in Ihrer gesamten Flotte geladen werden**: [Prüfen und überprüfen](/docs/de/plugins/org#audit-and-review)
215* **Entscheiden, wann ein von Ihnen geprüftes Plugin aktualisiert werden darf**: [Update-Richtlinie festlegen](/docs/de/plugins/org#set-update-policy)
216* **Einer Gruppe eine andere Richtlinie geben, etwa für ein Pilotprojekt**: [Planen, was verwaltete Einstellungen nicht durchsetzen können](/docs/de/plugins/org#plan-for-what-managed-settings-can’t-enforce)
217* **Prüfen, welche Apps und Sitzungsarten die Plugin-Schlüssel anwenden**: [Wann jede Oberfläche die Plugin-Schlüssel anwendet](/docs/de/plugins/org#when-each-surface-applies-the-plugin-keys)
218* **CI und Container einrichten**: [Container und CI vorbereiten](/docs/de/plugins/org#seed-containers-and-ci)
219* **Mods anbieten, die Ihre Benutzer installieren dürfen**: [Einen Marketplace hosten](/docs/de/plugins/host-marketplace). Ein Mod, den Claude Code aus einer GitHub-, Git-, URL- oder npm-Quelle kopiert, gilt als Mod eines Benutzers, nicht als [Mod Ihrer Organisation](#install-your-organizations-mods).
169 220
170<h3 id="set-options-on-the-built-in-guard">221<h3 id="set-options-on-the-built-in-guard">
171 Setzen Sie Optionen auf dem integrierten Guard222 Optionen für den integrierten Wächter festlegen
172</h3>223</h3>
173 224
174Der integrierte Guard nimmt zwei Optionen. Setzen Sie sie in verwalteten Einstellungen unter `pluginConfigs`, mit dem Schlüssel `cc-plugin-sec-default@builtin`, wie das Beispiel in [Verhindern Sie, dass von Benutzern installierte Mods geladen werden](#stop-user-installed-mods-from-loading) tut.225Der integrierte Wächter akzeptiert Optionen. Setzen Sie diese in verwalteten Einstellungen unter `pluginConfigs` mit dem Schlüssel `cc-plugin-sec-default@builtin`, wie es das Beispiel in [Vom Benutzer installierte Mods am Laden hindern](#stop-user-installed-mods-from-loading) tut.
175 226
176Die Tabelle gibt an, was Ihre Benutzer mit jeder Option nicht gesetzt und mit ihr auf `true` gesetzt erhalten:227Die Tabelle zeigt, was Ihre Benutzer erhalten, wenn die jeweilige Option nicht gesetzt ist und wenn sie auf `true` gesetzt ist:
177 228
178| Option | Nicht gesetzt | `true` |229| Option | Nicht gesetzt | `true` |
179| :- | :- | :- |230| :- | :- | :- |
180| `allowManagedModsOnly` | Mods von Benutzern werden geladen | Nur [die Mods Ihrer Organisation](#install-your-organizations-mods) und in Claude Code integrierte Mods werden geladen. Claude Code lehnt jeden anderen Mod ab, einschließlich eines, den ein Benutzer installiert hat oder mit `--plugin-dir` benannt hat. |231| `allowManagedModsOnly` | Die eigenen Mods der Benutzer werden geladen | Nur [die Mods Ihrer Organisation](#install-your-organizations-mods) und in Claude Code integrierte Mods werden geladen. Claude Code lehnt jeden anderen Mod ab, einschließlich eines Mods, den ein Benutzer installiert oder mit `--plugin-dir` angegeben hat. |
181| `allowModsToOverrideDenyRules` | Deny-Regeln haben Vorrang vor Mods von Benutzern | Ein Mod eines Benutzers, der Tool-Aufrufe genehmigt, kann einen Aufruf genehmigen, den eine `deny` Regel ablehnt |232| `allowModsToOverrideDenyRules` | Deny-Regeln haben Vorrang vor den Mods der Benutzer | Ein Mod eines Benutzers, der Tool-Aufrufe genehmigt, kann einen Aufruf genehmigen, den eine `deny`-Regel ablehnt |
182 233
183Diese Regeln entscheiden, ob eine Option wirksam wird:234Diese Regeln entscheiden, ob eine Option wirksam wird:
184 235
185* **Die ID hat hier eine Schreibweise**: Claude Code liest die Optionen nur unter `cc-plugin-sec-default@builtin`. `prependPlugins` akzeptiert auch `sec-default@builtin`, und `pluginConfigs` nicht.236* **Die ID hat hier eine Form**: Claude Code liest die Optionen nur unter `cc-plugin-sec-default@builtin`. `prependPlugins` akzeptiert auch `sec-default@builtin`, `pluginConfigs` dagegen nicht.
186* **Nur verwaltete Einstellungen zählen**: derselbe Eintrag in einer Benutzer-, Projekt- oder lokalen Einstellungsdatei oder in einer Datei, die mit `--settings` übergeben wird, setzt weder eine Option noch lockert eine237* **Nur verwaltete Einstellungen zählen**: Derselbe Eintrag in einer Benutzer-, Projekt- oder lokalen Einstellungsdatei oder in einer mit `--settings` übergebenen Datei setzt weder eine Option noch lockert er eine
187* **Der Guard muss geladen werden**: Wenn Sie `prependPlugins` setzen, [benennen Sie den Guard in der Liste](#install-your-organizations-mods). Wo der Guard nicht geladen wird, gilt keine Option.238* **Der Wächter muss geladen werden**: Wenn Sie `prependPlugins` setzen, [führen Sie den Wächter in der Liste auf](#install-your-organizations-mods). Wo der Wächter nicht geladen wird, gilt keine der beiden Optionen.
188* **Der Guard schlägt geschlossen fehl**: Wenn der Guard verwaltete Einstellungen nicht lesen kann, lehnt er jeden Mod eines Benutzers beim Laden ab. Wenn er die Deny-Regeln für einen Aufruf, den ein Mod eines Benutzers genehmigt hat, nicht überprüfen kann, lehnt er den Aufruf ab.239* **Der Wächter schlägt sicher fehl**: Wenn der Wächter die verwalteten Einstellungen nicht lesen kann, lehnt er beim Laden jeden Mod eines Benutzers ab. Wenn er die Deny-Regeln für einen Aufruf, den ein Mod eines Benutzers genehmigt hat, nicht prüfen kann, lehnt er den Aufruf ab.
189 240
190Die [Meldungen vom integrierten Guard](/docs/de/plugins/mods/troubleshoot#messages-from-the-built-in-guard) sind das, was Ihre Benutzer sehen, wenn eine Option gilt.241Die [Meldungen des integrierten Wächters](/docs/de/plugins/mods/troubleshoot#messages-from-the-built-in-guard) sehen Ihre Benutzer, wenn eine der beiden Optionen greift.
191 242
192<h2 id="run-your-organization’s-own-mods">243<h2 id="run-your-organization’s-own-mods">
193 Führen Sie die Mods Ihrer Organisation aus244 Eigene Mods Ihrer Organisation ausführen
194</h2>245</h2>
195 246
196Sie können Mods Ihrer eigenen für jeden Benutzer bereitstellen, wählen, wo sie relativ zu Mods von Benutzern ausgeführt werden, und einen verwenden, um eine Richtlinie durchzusetzen.247Sie können eigene Mods für alle Benutzer bereitstellen, festlegen, wo sie relativ zu den Mods der Benutzer ausgeführt werden, und einen Mod verwenden, um eine Richtlinie durchzusetzen.
197 248
198<h3 id="install-your-organizations-mods">249<h3 id="install-your-organizations-mods">
199 Installieren Sie die Mods Ihrer Organisation und setzen Sie die Reihenfolge250 Mods Ihrer Organisation installieren und die Reihenfolge festlegen
200</h3>251</h3>
201 252
202Die Mods Ihrer Organisation werden geladen, wo Mods von Benutzern nicht geladen werden, und können vor ihnen ausgeführt werden, daher muss Claude Code in der Lage sein zu sagen, dass ein Mod von Ihnen kam. Es behandelt einen Mod als Mod Ihrer Organisation nur, wenn alle diese Punkte zutreffen:253Die Mods Ihrer Organisation werden auch dort geladen, wo Mods von Benutzern nicht geladen werden, und können vor diesen ausgeführt werden. Daher muss Claude Code erkennen können, dass ein Mod von Ihnen stammt. Claude Code behandelt einen Mod nur dann als Mod Ihrer Organisation, wenn alle folgenden Bedingungen erfüllt sind:
203 254
204* Verwaltete `enabledPlugins` setzt das Plugin des Mods auf `true`255* Das verwaltete `enabledPlugins` setzt das Plugin des Mods auf `true`
205* Verwaltete Einstellungen benennen den [Marketplace](/docs/de/plugins/create-marketplace) des Plugins als Verzeichnis auf der Maschine des Benutzers, nach absolutem Pfad. Ein `extraKnownMarketplaces` Eintrag tut das und registriert den Marketplace für den Benutzer auch.256* Die verwalteten Einstellungen benennen den [Marketplace](/docs/de/plugins/create-marketplace) des Plugins als Verzeichnis auf dem Rechner des Benutzers, und zwar über einen absoluten Pfad. Ein Eintrag in `extraKnownMarketplaces` leistet das und registriert den Marketplace zusätzlich für den Benutzer.
206* Der Marketplace listet das Plugin nach einem relativen Pfad auf, daher [lädt Claude Code es an Ort und Stelle](/docs/de/plugins/loading#in-place-and-copied-plugins) aus diesem Verzeichnis257* Der Marketplace führt das Plugin über einen relativen Pfad auf, sodass Claude Code es [direkt an Ort und Stelle lädt](/docs/de/plugins/loading#in-place-and-copied-plugins), und zwar aus diesem Verzeichnis
207 258
208Um sie zu erfüllen, lassen Sie Ihre Geräteverwaltung das Marketplace-Verzeichnis auf den gleichen Pfad auf jeder Maschine kopieren. Machen Sie das Verzeichnis und jedes Verzeichnis darüber nur für einen Administrator beschreibbar, wie die verwaltete Einstellungsdatei. Jeder, der dort schreiben kann, kann Ihren Mod umschreiben. Verwaltete Einstellungen, die Sie über die claude.ai Admin-Konsole bereitstellen, können die Schlüssel tragen, aber sie können das Verzeichnis nicht auf eine Maschine legen.259Um diese Bedingungen zu erfüllen, lassen Sie das Marketplace-Verzeichnis von Ihrer Geräteverwaltung auf jedem Rechner an denselben Pfad kopieren. Sorgen Sie dafür, dass das Verzeichnis und jedes übergeordnete Verzeichnis nur von einem Administrator beschreibbar sind, so wie die Datei mit den verwalteten Einstellungen. Wer dort schreiben kann, kann Ihren Mod umschreiben. Verwaltete Einstellungen, die Sie über die Admin-Konsole von claude.ai bereitstellen, können die Schlüssel enthalten, aber sie können das Verzeichnis nicht auf einem Rechner ablegen.
209 260
210Das Verzeichnis enthält das Manifest des Marketplace und das Plugin:261Das Verzeichnis enthält das Manifest des Marketplace und das Plugin:
211 262
222 └── register.js273 └── register.js
223```274```
224 275
225Das Manifest listet das Plugin nach seinem Pfad relativ zu diesem Verzeichnis:276Das Manifest führt das Plugin über seinen Pfad relativ zu diesem Verzeichnis auf:
226 277
227```json /opt/acme/claude-plugins/.claude-plugin/marketplace.json theme={null}278```json /opt/acme/claude-plugins/.claude-plugin/marketplace.json theme={null}
228{279{
234}285}
235```286```
236 287
237Ein Plugin, das Claude Code in seinen Cache kopiert, zählt als eines eines Benutzers, auch wenn verwaltete `enabledPlugins` es aktiviert. Das umfasst jedes Plugin von einer GitHub-, Git-, URL- oder npm-Quelle. Sein Mod wird unter Mods von Benutzern ausgeführt, `prependPlugins` und `appendPlugins` überspringen es, und es wird nicht unter `allowManagedModsOnly` oder `allowManagedHooksOnly` geladen. Das Debug-Protokoll des Benutzers hat eine Zeile, die mit der ID des Plugins beginnt und `is enabled by managed settings, but`.288Ein Plugin, das Claude Code in seinen Cache kopiert, gilt als Plugin eines Benutzers, auch wenn das verwaltete `enabledPlugins` es aktiviert. Das betrifft jedes Plugin aus einer GitHub-, Git-, URL- oder npm-Quelle. Sein Mod wird zusammen mit den Mods der Benutzer ausgeführt, `prependPlugins` und `appendPlugins` überspringen ihn, und er wird unter `allowManagedModsOnly` oder `allowManagedHooksOnly` nicht geladen. Das Debug-Log des Benutzers enthält eine Zeile, die mit der ID des Plugins und `is enabled by managed settings, but` beginnt.
238 289
239Claude Code löst ein Ereignis aus, jedes Mal wenn es etwas tun soll, wie ein Tool ausführen, und übergibt es an jeden Mod der Reihe nach. Ein Mod, der als Ihrer zählt, [wird vor Mods von Benutzern ausgeführt](/docs/de/plugins/mods/events#the-order-mods-run-in), auch wenn Sie ihn nirgendwo auflisten. Um seinen Platz zu setzen, listen Sie seine ID in einer von zwei Einstellungen auf. Die ID ist der Name des Plugins, `@`, und der Name des Marketplace, wie z. B. `acme-guard@acme-tools`.290Claude Code löst jedes Mal ein Ereignis aus, wenn es im Begriff ist, eine Aktion auszuführen, etwa ein Tool auszuführen, und übergibt es nacheinander an jeden Mod. Ein Mod, der als Ihrer gilt, [wird vor den Mods der Benutzer ausgeführt](/docs/de/plugins/mods/events#the-order-mods-run-in), auch wenn Sie ihn nirgends aufführen. Um seine Position festzulegen, führen Sie seine ID in einer von zwei Einstellungen auf. Die ID besteht aus dem Namen des Plugins, `@` und dem Namen des Marketplace, etwa `acme-guard@acme-tools`.
240 291
241* **`prependPlugins`**: Ihr Mod sieht jedes Ereignis vor jedem Mod eines Benutzers und jedes Ergebnis danach. Er kann das Ereignis ändern, ablehnen oder die Mods von Benutzern überspringen.292* **`prependPlugins`**: Ihr Mod sieht jedes Ereignis vor jedem Mod eines Benutzers und jedes Ergebnis danach. Er kann das Ereignis ändern, es ablehnen oder die Mods der Benutzer überspringen.
242* **`appendPlugins`**: Ihr Mod wird nach jedem Mod eines Benutzers ausgeführt, daher sieht er nur die Ereignisse, die diese Mods weitergeben, in der Form, in der sie sie weitergeben293* **`appendPlugins`**: Ihr Mod wird nach jedem Mod eines Benutzers ausgeführt und sieht daher nur die Ereignisse, die diese Mods weitergeben, und zwar in der Form, in der sie sie weitergeben
243 294
244Dieses Beispiel deklariert den `acme-tools` Marketplace bei `/opt/acme/claude-plugins`, aktiviert `acme-guard` von ihm und führt diesen Mod zuerst aus, mit dem integrierten Guard danach:295Dieses Beispiel deklariert den Marketplace `acme-tools` unter `/opt/acme/claude-plugins`, aktiviert daraus `acme-guard` und führt diesen Mod zuerst aus, gefolgt vom integrierten Wächter:
245 296
246```json managed-settings.json theme={null}297```json managed-settings.json theme={null}
247{298{
255}306}
256```307```
257 308
258Jeder Schlüssel tut einen Job:309Jeder Schlüssel erfüllt eine Aufgabe:
259 310
260* **`extraKnownMarketplaces`**: benennt das Verzeichnis, das den `acme-tools` Marketplace enthält. `path` ist der absolute Pfad des Verzeichnisses, das `.claude-plugin/marketplace.json` enthält.311* **`extraKnownMarketplaces`**: benennt das Verzeichnis, das den Marketplace `acme-tools` enthält. `path` ist der absolute Pfad des Verzeichnisses, das `.claude-plugin/marketplace.json` enthält.
261* **`enabledPlugins`**: schaltet `acme-guard` für jeden Benutzer ein, der diese verwalteten Einstellungen erhält312* **`enabledPlugins`**: aktiviert `acme-guard` für jeden Benutzer, der diese verwalteten Einstellungen erhält
262* **`prependPlugins`**: setzt `acme-guard` zuerst und den integrierten Guard zweite, beide vor jedem Mod, den ein Benutzer installiert. Claude Code folgt der Reihenfolge, die Sie auflisten.313* **`prependPlugins`**: stellt `acme-guard` an die erste und den integrierten Wächter an die zweite Stelle, beide vor jedem Mod, den ein Benutzer installiert. Claude Code hält sich an die Reihenfolge, die Sie angeben.
263 314
264Um zu bestätigen, dass die Maschine eines Benutzers die Einstellungen erhalten hat, siehe [Überprüfen Sie, dass eine Richtlinie in Kraft ist](/docs/de/managed-settings#check-that-a-policy-is-in-force).315Wie Sie prüfen, ob der Rechner eines Benutzers die Einstellungen erhalten hat, erfahren Sie unter [Prüfen, ob eine Richtlinie in Kraft ist](/docs/de/managed-settings#check-that-a-policy-is-in-force).
265 316
266Um zu bestätigen, wo der Mod ausgeführt wird, starten Sie eine Sitzung auf dieser Maschine mit `claude --debug` und suchen Sie das [Debug-Protokoll](/docs/de/plugins/mods/troubleshoot#read-the-debug-log) nach der ID des Mods:317Um zu prüfen, wo der Mod ausgeführt wird, starten Sie auf diesem Rechner eine Sitzung mit `claude --debug` und durchsuchen Sie das [Debug-Log](/docs/de/plugins/mods/troubleshoot#read-the-debug-log) nach der ID des Mods:
267 318
268* **`hooks module acme-guard@acme-tools loaded`, mit `tier prepend`**: Der Mod zählt als Mod Ihrer Organisation und wird zuerst ausgeführt319* **`hooks module acme-guard@acme-tools loaded`, mit `tier prepend`**: Der Mod gilt als Mod Ihrer Organisation und wird zuerst ausgeführt
269* **Die gleiche Zeile mit `tier user`**: Claude Code behandelt es als Mod eines Benutzers. Eine zweite Zeile, `prependPlugins names acme-guard@acme-tools, which is not an enabled managed plugin with a hooks module; skipped`, sagt, dass die Liste es übersprungen hat.320* **Dieselbe Zeile mit `tier user`**: Claude Code behandelt ihn als Mod eines Benutzers. Eine zweite Zeile, `prependPlugins names acme-guard@acme-tools, which is not an enabled managed plugin with a hooks module; skipped`, besagt, dass die Liste ihn übersprungen hat.
270 321
271Diese Regeln entscheiden, welche IDs in den zwei Listen wirksam werden:322Diese Regeln bestimmen, welche IDs in den beiden Listen wirksam werden:
272 323
273* **Die Liste ersetzt die Standardeinstellung**: Wenn Sie `prependPlugins` in verwalteten Einstellungen setzen, benennen Sie `sec-default@builtin` darin, um den integrierten Guard zu behalten. Der Guard ist integriert und braucht keinen `enabledPlugins` Eintrag.324* **Die Liste ersetzt den Standard**: Wenn Sie `prependPlugins` in verwalteten Einstellungen setzen, führen Sie darin `sec-default@builtin` auf, um den integrierten Wächter beizubehalten. Der Wächter ist integriert und benötigt keinen Eintrag in `enabledPlugins`.
274* **Ihre eigenen IDs müssen als Ihre zählen**: In verwalteten Einstellungen überspringt Claude Code eine ID, deren Plugin nicht die drei Bedingungen für einen Mod einer Organisation erfüllt325* **Ihre eigenen IDs müssen als Ihre gelten**: In verwalteten Einstellungen überspringt Claude Code eine ID, deren Plugin die Bedingungen für einen Mod einer Organisation nicht erfüllt
275* **Repositories können sie nicht setzen**: Claude Code liest beide Einstellungen aus verwalteten Einstellungen und niemals aus einer Einstellungsdatei eines Repositorys. Ein Benutzer kann sie in `~/.claude/settings.json` setzen, um nur seine eigenen Mods auf einer Maschine ohne verwaltete Einstellungen zu ordnen, und nur wenn er nicht mit einem Team- oder Enterprise-Plan angemeldet ist. Überall sonst ignoriert Claude Code beide Schlüssel in Benutzereinstellungen. Eine Liste dort weder fügt noch entfernt den integrierten Guard.326* **Repositorys können sie nicht setzen**: Claude Code liest beide Einstellungen aus den verwalteten Einstellungen und niemals aus der Einstellungsdatei eines Repositorys. Ein Benutzer kann sie in `~/.claude/settings.json` setzen, um seine eigenen Mods zu ordnen, allerdings nur auf einem Rechner ohne verwaltete Einstellungen und nur, wenn er nicht mit einem Team- oder Enterprise-Plan angemeldet ist. In allen anderen Fällen ignoriert Claude Code beide Schlüssel in den Benutzereinstellungen. Eine Liste dort fügt den integrierten Wächter weder hinzu noch entfernt sie ihn.
276 327
277<h3 id="enforce-a-policy-with-a-mod-of-your-own">328<h3 id="enforce-a-policy-with-a-mod-of-your-own">
278 Erzwingen Sie eine Richtlinie mit einem Mod Ihrer eigenen329 Eine Richtlinie mit einem eigenen Mod durchsetzen
279</h3>330</h3>
280 331
281Um jeden Mod eines Benutzers auszuschließen, brauchen Sie keinen Mod Ihrer eigenen. Setzen Sie [`allowManagedModsOnly`](#stop-user-installed-mods-from-loading). Schreiben Sie einen Policy-Mod, wenn Sie einige Mods von Benutzern zulassen und andere ablehnen möchten, oder um zu protokollieren, was Mods tun.332Um alle Mods von Benutzern fernzuhalten, benötigen Sie keinen eigenen Mod. Setzen Sie [`allowManagedModsOnly`](#stop-user-installed-mods-from-loading). Schreiben Sie einen Richtlinien-Mod, wenn Sie einige Mods von Benutzern zulassen und andere ablehnen möchten oder wenn Sie protokollieren möchten, was Mods tun.
282 333
283Jedes Mal wenn ein anderer Mod geladen werden soll, erhält Ihr Mod die Liste, die `claude plugin validate` druckt, in einem Ereignis namens [`plugin.register`](/docs/de/plugins/mods/reference#other-mods). Ein Mod in `prependPlugins` kann diese Liste lesen und den Mod ablehnen. Er kann auch [jeden Mods API-Aufruf nach Name hooken](/docs/de/plugins/mods/api#reach-files-processes-and-the-network), um diesen Aufruf für jeden anderen Mod zu protokollieren oder abzulehnen. Der Name ist die Methode ohne das `$.`, daher sieht ein Hook auf `fs.write` jeden `$.fs.write` Aufruf.334Jedes Mal, wenn ein anderer Mod geladen werden soll, erhält Ihr Mod die Liste, die `claude plugin validate` ausgibt, in einem Ereignis namens [`plugin.register`](/docs/de/plugins/mods/reference#other-mods). Ein Mod in `prependPlugins` kann diese Liste lesen und den Mod ablehnen. Er kann außerdem [jeden Aufruf der Mods-API über ihren Namen behandeln](/docs/de/plugins/mods/api#reach-files-processes-and-the-network), um diesen Aufruf für jeden anderen Mod zu protokollieren oder abzulehnen. Der Name ist die Methode ohne `$.`, sodass ein Hook auf `fs.write` jeden Aufruf von `$.fs.write` sieht.
284 335
285Dieser Policy-Mod lehnt jeden Mod eines Benutzers ab, dessen eigener Code `$.process.run` oder `$.process.spawn` aufruft. Er führt auch ein Audit-Protokoll, schreibt jeden Tool-Aufruf und jede Datei, die ein Mod schreibt, in das Debug-Protokoll. Da er zuerst ausgeführt wird, protokolliert das Protokoll, was angefordert wurde, bevor ein Mod eines Benutzers es ändert. Speichern Sie es als `acme-guard/hooks/register.js`:336Dieser Richtlinien-Mod lehnt jeden Mod eines Benutzers ab, dessen eigener Code `$.process.run` oder `$.process.spawn` aufruft. Außerdem führt er ein Audit-Log, indem er jeden Tool-Aufruf und jede Datei, die ein Mod schreibt, in das Debug-Log schreibt. Da er zuerst ausgeführt wird, hält das Log fest, was angefordert wurde, bevor ein Mod eines Benutzers es ändert. Speichern Sie ihn als `acme-guard/hooks/register.js`:
286 337
287```javascript acme-guard/hooks/register.js theme={null}338```javascript acme-guard/hooks/register.js theme={null}
288// Die Methoden, die kein Mod eines Benutzers aufrufen darf, jede geschrieben als namespace.method339// The methods no user's mod may call, each spelled namespace.method
289const BLOCKED_CALLS = ['process.run', 'process.spawn']340const BLOCKED_CALLS = ['process.run', 'process.spawn']
290 341
291export function register(on) {342export function register(on) {
292 // Wird jedes Mal ausgeführt, wenn ein anderer Mod geladen werden soll343 // Runs each time another mod is about to load
293 on('plugin.register', async ($, e, next) => {344 on('plugin.register', async ($, e, next) => {
294 // Behalten Sie die Aufrufe in diesem Mod's Code, die auf der blockierten Liste stehen345 // Keep the calls in that mod's code that are on the blocked list
295 const blocked = e.uses.calls.filter((call) => BLOCKED_CALLS.includes(call))346 const blocked = e.uses.calls.filter((call) => BLOCKED_CALLS.includes(call))
296 if (e.tier === 'user' && blocked.length > 0) {347 if (e.tier === 'user' && blocked.length > 0) {
297 // Das Zurückgeben von refuse verhindert, dass der Mod geladen wird, und der Text ist der Grund348 // Returning refuse keeps the mod from loading, and the text is the reason
298 return { refuse: 'Acme policy: mods may not call ' + blocked.join(', ') }349 return { refuse: 'Acme policy: mods may not call ' + blocked.join(', ') }
299 }350 }
300 // Lassen Sie jeden anderen Mod laden351 // Let every other mod load
301 return next(e)352 return next(e)
302 })353 })
303 354
304 // Protokollieren Sie jeden Tool-Aufruf, dann lassen Sie ihn unverändert weitergehen355 // Record each tool call, then let it go ahead unchanged
305 on('tool.call', async ($, e, next) => {356 on('tool.call', async ($, e, next) => {
306 $.ui.log('audit tool.call ' + e.tool, { to: 'debug' })357 $.ui.log('audit tool.call ' + e.tool, { to: 'debug' })
307 return next(e)358 return next(e)
308 })359 })
309 360
310 // Protokollieren Sie, welcher Mod eine Datei geschrieben hat, dann den Pfad, zitiert, weil der Mod ihn gewählt hat361 // Record which mod wrote a file, then the path, quoted because the mod chose it
311 on('fs.write', async ($, e, next) => {362 on('fs.write', async ($, e, next) => {
312 $.ui.log('audit fs.write by ' + next.origin.plugin + ' ' + JSON.stringify(e.path), { to: 'debug' })363 $.ui.log('audit fs.write by ' + next.origin.plugin + ' ' + JSON.stringify(e.path), { to: 'debug' })
313 return next(e)364 return next(e)
317 368
318Die Datei registriert drei Hooks:369Die Datei registriert drei Hooks:
319 370
320* **`plugin.register`**: entscheidet, ob ein anderer Mod geladen wird. Er lehnt einen Mod eines Benutzers ab, der eine blockierte Methode aufruft, und gibt jeden anderen Mod weiter.371* **`plugin.register`**: entscheidet, ob ein anderer Mod geladen wird. Er lehnt einen Mod eines Benutzers ab, der eine blockierte Methode aufruft, und lässt jeden anderen Mod durch.
321* **`tool.call`**: schreibt eine Zeile wie `audit tool.call Bash` in das Debug-Protokoll für jeden Tool-Aufruf und ändert nichts372* **`tool.call`**: schreibt für jeden Tool-Aufruf eine Zeile wie `audit tool.call Bash` in das Debug-Log und ändert nichts
322* **`fs.write`**: schreibt eine Zeile wie `audit fs.write by reader "/tmp/notes.md"` für jeden `$.fs.write` Aufruf, den ein anderer Mod macht, und ändert nichts. Der Name des Mods kommt zuerst und der Pfad ist zitiert, daher kann ein Pfad, den ein Mod wählt, nicht als ein anderes Feld der Zeile durchgehen.373* **`fs.write`**: schreibt für jeden Aufruf von `$.fs.write`, den ein anderer Mod ausführt, eine Zeile wie `audit fs.write by reader "/tmp/notes.md"` und ändert nichts. Der Name des Mods steht zuerst und der Pfad in Anführungszeichen, sodass ein Pfad, den ein Mod wählt, nicht als ein anderes Feld der Zeile durchgehen kann.
323 374
324Der `plugin.register` Hook liest zwei Felder des Ereignisses:375Der Hook `plugin.register` liest zwei Felder des Ereignisses:
325 376
326* **`e.tier`**: wo der Mod ausgeführt würde, eines von `prepend`, `user`, `append` oder `builtin`. Jeder Mod, den eine Person installiert, ist `user`.377* **`e.tier`**: wo der Mod ausgeführt würde, einer der Werte `prepend`, `user`, `append` oder `builtin`. Jeder Mod, den eine Person installiert, ist `user`.
327* **`e.uses.calls`**: die Mods API-Methoden, die der Mod aufruft, jede geschrieben als `namespace.method` wie `process.run`, ohne das `$.`, das `claude plugin validate` druckt378* **`e.uses.calls`**: die Methoden der Mods-API, die der Mod aufruft, jeweils als `namespace.method` geschrieben, etwa `process.run`, ohne das `$.`, das `claude plugin validate` ausgibt
328 379
329Wenn ein Benutzer einen Mod installiert, der `$.process.run` aufruft, wird der Mod nicht geladen, und sein Debug-Protokoll hat eine Zeile, die mit `refused by acme-guard:` und Ihrem Grund endet. Die Verweigerung erreicht auch das Transkript in einer [Sitzung, die ein Plugin-Verzeichnis neu lädt](/docs/de/plugins/mods/troubleshoot#find-out-why-a-mod-does-nothing). Um einen Aufruf zu blockieren, ohne den ganzen Mod abzulehnen, geben Sie `{ deny: 'your reason' }` von einem Hook auf den Namen dieses Aufrufs zurück.380Wenn ein Benutzer einen Mod installiert, der `$.process.run` aufruft, wird der Mod nicht geladen, und sein Debug-Log enthält eine Zeile, die mit `refused by acme-guard:` und Ihrer Begründung endet. Die Ablehnung erscheint außerdem im Transkript einer [Sitzung, die ein Plugin-Verzeichnis per Hot-Reload neu lädt](/docs/de/plugins/mods/troubleshoot#find-out-why-a-mod-does-nothing). Um einen Aufruf zu blockieren, ohne den gesamten Mod abzulehnen, geben Sie `{ deny: 'your reason' }` aus einem Hook auf den Namen dieses Aufrufs zurück.
330 381
331Um die Audit-Zeilen woanders als im Debug-Protokoll zu senden, rufen Sie `$.http.fetch` von den gleichen Hooks auf.382Um die Audit-Zeilen an ein anderes Ziel als das Debug-Log zu senden, rufen Sie `$.http.fetch` aus denselben Hooks auf.
332 383
333Eine Sitzung kann ohne Ihren Mod ausgeführt werden. Wenn der Worker-Thread, der installierte Mods ausführt, [dreimal abstürzt](/docs/de/plugins/mods/troubleshoot#mods-that-run-in-the-hooks-worker-are-off-for-this-session), entlädt Claude Code jeden Mod, der nicht integriert ist, einschließlich Ihres, bis der Benutzer `/reload-plugins` ausführt oder eine neue Sitzung startet. Und ein Benutzer, der Claude Code mit `--safe-mode` startet, wird ohne installierte Mods ausgeführt, einschließlich Ihrer.384Eine Sitzung kann ohne Ihren Mod laufen. Wenn der Worker-Thread, der installierte Mods ausführt, [dreimal abstürzt](/docs/de/plugins/mods/troubleshoot#mods-that-run-in-the-hooks-worker-are-off-for-this-session), entlädt Claude Code jeden Mod, der nicht integriert ist, einschließlich Ihres, bis der Benutzer `/reload-plugins` ausführt oder eine neue Sitzung startet. Und ein Benutzer, der Claude Code mit `--safe-mode` startet, arbeitet ohne installierte Mods, Ihren eingeschlossen.
334 385
335[Erstellen Sie einen Mod](/docs/de/plugins/mods/create) behandelt die Dateien, die ein Mod braucht. [Testen Sie einen Mod, der andere Mods beurteilt](/docs/de/plugins/mods/test#test-a-mod-that-judges-other-mods) hat eine Test-Datei für diesen Policy-Mod.386[Einen Mod erstellen](/docs/de/plugins/mods/create) behandelt die Dateien, die ein Mod benötigt. [Einen Richtlinien-Mod testen](/docs/de/plugins/mods/test#test-a-mod-that-judges-other-mods) enthält eine Testdatei für diesen Richtlinien-Mod.
336 387
337<h4 id="refuse-mods-when-your-check-fails">388<h4 id="refuse-mods-when-your-check-fails">
338 Lehnen Sie Mods ab, wenn Ihre Überprüfung fehlschlägt389 Mods ablehnen, wenn Ihre Prüfung fehlschlägt
339</h4>390</h4>
340 391
341Wenn Ihr `plugin.register` Hook wirft oder seine Zeitlimit überschreitet, überspringt Claude Code den Hook, daher schlägt die Überprüfung offen fehl und der Mod, den er überprüft, wird geladen. Um geschlossen fehlzuschlagen und Mods von Benutzern abzulehnen, verschieben Sie die Überprüfung in eine benannte Funktion und fügen Sie einen `.catch` Handler hinzu, der die Verweigerung zurückgibt. Diese Version der Datei zeigt nur den `plugin.register` Hook, daher behalten Sie die zwei Audit-Hooks aus der ersten Version in `register`:392Wenn Ihr Hook `plugin.register` eine Ausnahme auslöst oder sein Zeitlimit überschreitet, überspringt Claude Code den Hook. Die Prüfung schlägt also offen fehl, und der Mod, der geprüft wurde, wird geladen. Damit die Prüfung geschlossen fehlschlägt und Mods von Benutzern abgelehnt werden, verschieben Sie die Prüfung in eine benannte Funktion und fügen Sie einen `.catch`-Handler hinzu, der die Ablehnung zurückgibt. Diese Version der Datei zeigt nur den Hook `plugin.register`. Behalten Sie daher die beiden Audit-Hooks aus der ersten Version in `register` bei:
342 393
343```javascript acme-guard/hooks/register.js theme={null}394```javascript acme-guard/hooks/register.js theme={null}
344const BLOCKED_CALLS = ['process.run', 'process.spawn']395const BLOCKED_CALLS = ['process.run', 'process.spawn']
345 396
346// Die gleiche Überprüfung wie zuvor, in eine Funktion ihrer eigenen verschoben397// The same check as before, moved into a function of its own
347async function checkMod($, e, next) {398async function checkMod($, e, next) {
348 const blocked = e.uses.calls.filter((call) => BLOCKED_CALLS.includes(call))399 const blocked = e.uses.calls.filter((call) => BLOCKED_CALLS.includes(call))
349 if (e.tier === 'user' && blocked.length > 0) {400 if (e.tier === 'user' && blocked.length > 0) {
353}404}
354 405
355export function register(on) {406export function register(on) {
356 // Der Handler wird nur ausgeführt, wenn checkMod wirft oder sein Zeitlimit überschreitet407 // The handler runs only when checkMod throws or exceeds its time limit
357 on('plugin.register', checkMod).catch(async ($, e, next) => {408 on('plugin.register', checkMod).catch(async ($, e, next) => {
358 // Lassen Sie die Mods Ihrer Organisation und integrierte Mods laden409 // Let your organization's mods and built-in mods load
359 if (e.tier !== 'user') return next(e)410 if (e.tier !== 'user') return next(e)
360 // Lehnen Sie den Mod eines Benutzers ab, der nicht überprüft werden konnte411 // Refuse the user's mod that couldn't be checked
361 return { refuse: 'Acme policy check failed, so this mod was not loaded' }412 return { refuse: 'Acme policy check failed, so this mod was not loaded' }
362 })413 })
363}414}
364```415```
365 416
366Mit dem Handler an Ort und Stelle wird ein Mod, der überprüft wurde, als die Überprüfung wirft oder das Zeitlimit überschreitet, nicht geladen, und die Verweigerungszeile trägt den zweiten Grund, wie in `refused by acme-guard: Acme policy check failed, so this mod was not loaded`. Der Handler gibt jeden Mod außerhalb des `user` Tier an `next(e)` weiter, daher stoppt eine fehlgeschlagene Überprüfung nicht die Mods, die Ihre Organisation auflistet. [Behandeln Sie einen Hook, der fehlschlägt](/docs/de/plugins/mods/events#handle-a-hook-that-fails), behandelt `.catch` für andere Ereignisse.417Mit dem Handler wird ein Mod, der gerade geprüft wurde, als die Prüfung eine Ausnahme auslöste oder das Zeitlimit überschritt, nicht geladen, und die Ablehnungszeile enthält die zweite Begründung, wie in `refused by acme-guard: Acme policy check failed, so this mod was not loaded`. Der Handler übergibt jeden Mod außerhalb der Stufe `user` an `next(e)`, sodass eine fehlgeschlagene Prüfung die Mods, die Ihre Organisation aufführt, nicht aufhält. [Einen fehlschlagenden Hook behandeln](/docs/de/plugins/mods/events#handle-a-hook-that-fails) behandelt `.catch` für andere Ereignisse.
367 418
368<h2 id="next-steps">419<h2 id="next-steps">
369 Nächste Schritte420 Nächste Schritte
370</h2>421</h2>
371 422
372* [Plugin-Sicherheit](/docs/de/plugins/security): was jedes Plugin auf der Maschine eines Benutzers tun kann und wie man eines überprüft, bevor es installiert wird423* [Plugin-Sicherheit](/docs/de/plugins/security): was jedes Plugin auf dem Rechner eines Benutzers tun kann und wie Sie ein Plugin prüfen, bevor es installiert wird
373* [Mods Übersicht](/docs/de/plugins/mods/overview): was ein Mod ist und wie er sich mit Hooks, Skills und MCP-Servern vergleicht424* [Mods-Übersicht](/docs/de/plugins/mods/overview): was ein Mod ist und wie er sich im Vergleich zu Hooks, Skills und MCP-Servern verhält
374* [Die Reihenfolge, in der Mods ausgeführt werden](/docs/de/plugins/mods/events#the-order-mods-run-in): wie `prependPlugins` und `appendPlugins` mit Mods von Benutzern passen425* [Die Reihenfolge, in der Mods ausgeführt werden](/docs/de/plugins/mods/events#the-order-mods-run-in): wie `prependPlugins` und `appendPlugins` mit den Mods der Benutzer zusammenspielen
375* [Einstellungen und Umgebungsvariablen](/docs/de/plugins/mods/reference#settings-and-environment-variables): jede Einstellung, die auf dieser Seite benannt wird, in einer Tabelle426* [Einstellungen und Umgebungsvariablen](/docs/de/plugins/mods/reference#settings-and-environment-variables): alle auf dieser Seite genannten Einstellungen in einer Tabelle