Die verwaltete Konfiguration steuert für die abgedeckten Funktionen das unterstützte lokale Laufzeitverhalten in der ChatGPT-Desktop-App, der Codex CLI und der IDE-Erweiterung. Welche Anforderungen unterstützt werden, kann je nach Client und Version variieren. Die verwaltete Konfiguration gewährt keinen Zugriff auf den ChatGPT-Workspace, weist keine Lizenzen zu und ersetzt nicht die rollenbasierte Zugriffskontrolle (RBAC) für den Workspace. Informationen zum Zugriff auf Workspace-Funktionen findest du unter Rollen und Berechtigungen im Workspace. Diese Seite behandelt Richtlinien für die lokale Laufzeit.
Administrierende in Unternehmen können das Verhalten unterstützter lokaler Clients auf zwei Arten steuern:
- Anforderungen: von der Administration durchgesetzte Einschränkungen, die Nutzende nicht überschreiben können.
- Verwaltete Standardwerte: Ausgangswerte, die beim Start eines unterstützten Clients angewendet werden. Nutzende können die Einstellungen während einer Ausführung weiterhin ändern. Beim nächsten Start wendet der Client die verwalteten Standardwerte erneut an.
Von der Administration durchgesetzte Anforderungen (requirements.toml)
Anforderungen schränken sicherheitsrelevante Einstellungen ein: die Genehmigungsrichtlinie, die Prüfinstanz für Genehmigungen, die Richtlinie für die automatische Überprüfung, den Sandbox-Modus, Berechtigungsprofile, den Websuchmodus und verwaltete Hooks. Sie regeln außerdem, welche MCP-Server Nutzende aktivieren dürfen und welche selbst konfigurierten Marketplace-Quellen für Plug-ins sie hinzufügen, für Installationen verwenden oder aktualisieren dürfen. Wenn beim Auflösen der Konfiguration, beispielsweise anhand von config.toml, Profildateien oder Überschreibungen der CLI-Konfiguration, ein Wert einer durchgesetzten Regel widerspricht, greift der lokale Client auf einen kompatiblen Wert zurück und benachrichtigt die Nutzenden. Wenn du eine Zulassungsliste für mcp_servers konfigurierst, aktiviert der Client einen MCP-Server nur, wenn sowohl sein Name als auch seine Identität einem genehmigten Eintrag entsprechen. Andernfalls deaktiviert er ihn.
Anforderungen können auch Feature-Flags über die Tabelle [features] in requirements.toml einschränken. Funktionen sind nicht immer sicherheitsrelevant. Unternehmen können Werte jedoch bei Bedarf fest vorgeben. Nicht angegebene Schlüssel bleiben uneingeschränkt.
Verwende ab Codex 0.138.0 vorzugsweise Berechtigungsprofile
mit allowed_permission_profiles und der verwalteten Einstellung default_permissions. Verwende
allowed_sandbox_modes nur für ältere Bereitstellungen, die weiterhin
sandbox_mode konfigurieren.
Die genaue Liste der Schlüssel findest du im Abschnitt zu requirements.toml in der Konfigurationsreferenz.
Speicherorte und Prioritätsreihenfolge
Jeder unterstützte lokale Client setzt die Anforderungen aus folgenden Quellen zusammen, von niedriger zu höherer Priorität:
- Systemweite Datei
requirements.toml(/etc/codex/requirements.tomlauf Unix-Systemen, einschließlich Linux und macOS, oder%ProgramData%\OpenAI\Codex\requirements.tomlunter Windows). - Vom Unternehmen verwaltete Anforderungen, die im Cloud-Konfigurationspaket bereitgestellt werden.
- Veraltete Felder in
managed_config.toml, die der lokale Client als Anforderungen interpretiert. - Verwaltete macOS-Einstellungen (MDM), bereitgestellt über
com.openai.codex:requirements_toml_base64.
Ebenen mit höherer Priorität überschreiben reguläre skalare Werte und Listenwerte aus niedriger priorisierten
Ebenen. Tabellen werden anhand ihrer Schlüssel zusammengeführt. Für Anforderungen wie Regeln, Hooks und
Dateisystemeinschränkungen gelten dagegen feldspezifische Regeln für die Zusammenführung. Das aktuelle Schema findest du in der
Referenz zu requirements.toml.
Gehe nicht davon aus, dass alle Felder auf dieselbe
Weise zusammengeführt werden.
Aus Gründen der Abwärtskompatibilität interpretieren unterstützte lokale Clients die veralteten Felder
approval_policy, approvals_reviewer und sandbox_mode als
Anforderungen. Diese Umwandlung ergänzt bei Bedarf Kompatibilitätsoptionen. Verwende
requirements.toml für explizite Zulassungslisten.
In der Cloud verwaltete Anforderungen
Wenn sich Nutzende mit ChatGPT in einem unterstützten Tarif anmelden, können unterstützte lokale Clients
von der Administration durchgesetzte Anforderungen erhalten, die dem Workspace zugeordnet sind. Dies ist
ein Bereitstellungskanal für Richtlinien, die mit requirements.toml kompatibel sind. Er gewährt keinen
Workspace-Zugriff und ersetzt nicht die RBAC des Workspace. Anforderungen an die Authentifizierung müssen
lokal verwaltet werden.
Öffne Verwaltete Konfiguration, um in der Cloud verwaltete Anforderungen zu erstellen und zuzuweisen. Diese Richtlinie schränkt beispielsweise die Auswahlmöglichkeiten für Genehmigungen und die Sandbox ein und fordert eine Bestätigung an, bevor ein unterstützter Shell-Einstiegspunkt ausgeführt wird:
allowed_approval_policies = ["on-request"]
allowed_sandbox_modes = ["read-only", "workspace-write"]
[rules]
prefix_rules = [
{ pattern = [{ any_of = ["bash", "sh", "zsh"] }], decision = "prompt", justification = "Require explicit approval for shell entry points" },
]
Stelle sicher, dass jede verwaltete Client-Version die von dir ausgewählten Schlüssel unterstützt, und teste die Richtlinie mit einer kleinen Gruppe, bevor du sie organisationsweit zuweist. Das aktuelle Schema findest du in der Konfigurationsreferenz. Wie Zuweisungen derzeit funktionieren, kannst du in der Verwaltungsoberfläche prüfen.
Der Dienst wählt die vom Unternehmen verwalteten Anforderungsebenen aus, die für die angemeldete Identität gelten. Der lokale Client wertet diese Ebenen zusammen mit den anderen Anforderungsquellen aus, die unter Speicherorte und Prioritätsreihenfolge beschrieben sind. Verwende die aktuelle Verwaltungsoberfläche, um Anforderungen auf Workspace-Seite zu erstellen und zuzuweisen. Verlasse dich nicht auf einen kopierten Algorithmus zum Gruppenabgleich. Der Verwaltungsdienst steuert dieses Verhalten und kann es unabhängig vom lokalen Anforderungsformat ändern.
Unterstützte Schlüssel und Beispiele findest du unter
Beispiel für requirements.toml und in der
Referenz zu requirements.toml.
So wenden lokale Clients in der Cloud verwaltete Anforderungen an
Wenn Nutzende einen unterstützten lokalen Client starten und sich mit ChatGPT in einem unterstützten Tarif anmelden, prüft der Client zunächst, ob ein gültiger Cache-Eintrag vorliegt, der zur Identität passt. Ist kein gültiger Eintrag verfügbar, ruft der Client das zutreffende Paket ab, wiederholt den Abruf bei Bedarf und schreibt bei Erfolg einen signierten Cache-Eintrag. Schlägt die Anfrage fehl oder überschreitet sie das Zeitlimit und ist kein gültiger Cache verfügbar, gibt das Laden des Cloud-Konfigurationspakets einen Fehler zurück. Der Client startet also nicht stillschweigend ohne die Ebene der in der Cloud verwalteten Anforderungen.
Nach der Cache-Auflösung führt der Client die Cloud-Anforderungen mit den anderen oben beschriebenen Anforderungsebenen zusammen. Eine Aktualisierung im Hintergrund kann den Cache für einen späteren Start aktualisieren. Sie ersetzt jedoch nicht die Anforderungen, die bereits in den aktuellen Prozess geladen wurden.
Verhalten für Administration und Mitarbeitende prüfen
Bestimme für jede verwaltete Richtlinie eine verantwortliche Person. Halte fest, für welche Nutzenden oder Gruppen sie gelten soll, und dokumentiere den geschäftlichen Grund für jede Einschränkung des Dateisystems, des Netzwerks, der Genehmigungen oder der Berechtigungsprofile.
Teste vor einer Ausweitung des Rollouts mit einer repräsentativen Person einen genehmigten und einen bewusst nicht erlaubten Ablauf. Prüfe die tatsächlich wirksamen Einstellungen im unterstützten Client. Gehe nicht davon aus, dass allein eine Workspace-Rolle oder Gruppe die lokale Einschränkung durchsetzt.
Authentifizierung lokal verwalten
Lege allowed_login_methods, allowed_chatgpt_workspaces,
cli_auth_credentials_store und chatgpt_base_url in der lokalen systemweiten Datei
requirements.toml oder in den macOS-MDM-Anforderungen fest. Codex ignoriert diese vier Felder
in den in der Cloud verwalteten Anforderungen. Lokale Anforderungen an die Authentifizierung gelten bereits,
bevor Anmeldedaten geladen werden und Codex die Cloud-Richtlinie abruft.
Verwende die folgende Konfiguration, um die ChatGPT-Anmeldung bei einem genehmigten Workspace vorzuschreiben und Anmeldedaten im Anmeldedatenspeicher des Betriebssystems abzulegen:
allowed_login_methods = ["chatgpt"]
allowed_chatgpt_workspaces = ["00000000-0000-0000-0000-000000000000"]
cli_auth_credentials_store = "keyring"
allowed_login_methods akzeptiert chatgpt, api oder beides. Wenn du diese Einstellung weglässt,
schränkt sie die Anmeldemethoden nicht ein. Ist sie gesetzt, muss die Liste mindestens eine Methode enthalten.
api erlaubt die API-Authentifizierung, einschließlich Amazon Bedrock.
Die Workspace-Einschränkung gilt auch für
Codex-Zugriffstoken.
Von Nutzenden konfigurierte Werte für forced_login_method und forced_chatgpt_workspace_id müssen
den Anforderungen entsprechen. Ein von Nutzenden ausgewählter Workspace muss außerdem
in der verwalteten Workspace-Zulassungsliste enthalten sein. Stimmt kein Workspace überein, ist die ChatGPT-Anmeldung
nicht verfügbar. Die API-Authentifizierung bleibt verfügbar, sofern sie erlaubt ist. Ist keine Anmeldemethode
verfügbar, verweigert Codex den Start.
Informationen zu den Speichermodi für Anmeldedaten und zur Konfiguration der Dienst-URL findest du in der Anforderungsreferenz .
Beispiel für requirements.toml
Dieses Beispiel blockiert --ask-for-approval never und --sandbox danger-full-access (einschließlich --yolo):
allowed_approval_policies = ["untrusted", "on-request"]
allowed_sandbox_modes = ["read-only", "workspace-write"]
Appshots deaktivieren
Um Appshots für verwaltete Nutzende zu deaktivieren, lege die Anforderung allow_appshots auf oberster Ebene fest:
allow_appshots = false
Wo Appshots verfügbar sind, deaktiviert allow_appshots = false diese Funktion. Wenn du
den Schlüssel weglässt, schränken die Anforderungen Appshots nicht ein, und es gelten die üblichen
Prüfungen der Produktverfügbarkeit. Clients des App Server, die die wirksamen Anforderungen
über configRequirements/read lesen, erhalten dieselbe Einschränkung als
allowAppshots. Wenn der Wert für allowAppshots fehlt oder null ist, bleiben
Appshots aktiviert.
Gerätefernsteuerung deaktivieren
Um die Gerätefernsteuerung
für verwaltete Nutzende zu deaktivieren, lege die Anforderung allow_remote_control auf oberster Ebene fest:
allow_remote_control = false
Wo die Gerätefernsteuerung unterstützt wird, wird sie durch allow_remote_control = false
deaktiviert. Wenn du den Schlüssel weglässt, schränken die Anforderungen die Gerätefernsteuerung nicht ein,
und es gelten die üblichen Prüfungen der Produktverfügbarkeit. Diese Anforderung
deaktiviert keine Remote-Verbindungen über SSH.
Verfügbare Berechtigungsprofile steuern
Mit allowed_permission_profiles steuerst du, welche integrierten und benutzerdefinierten
Berechtigungsprofile Nutzende auswählen können. Dies ist
das Gegenstück zu allowed_sandbox_modes für Berechtigungsprofile. Verwende die Zulassungsliste,
die zur Art der Berechtigungsauswahl deiner Nutzenden passt.
Zulassungslisten für Berechtigungsprofile erfordern Codex 0.138.0 oder neuer. Codex 0.137.0 und
ältere Versionen ignorieren allowed_permission_profiles und die verwaltete Einstellung
default_permissions.
Verwende die folgenden Beispiele für Berechtigungsprofile erst, wenn auf jedem verwalteten Client eine Version läuft, die sie unterstützt. Stelle verwaltete benutzerdefinierte Profile erst bereit, wenn das Upgrade aller Clients abgeschlossen ist.
Wenn die Tabelle vorhanden ist, enthält sie die vollständige Liste der zulässigen Profile. Sie erlaubt
Profile, die auf true gesetzt sind, und verweigert nicht aufgeführte oder auf false gesetzte Profile. Das gilt auch für
integrierte Profile, die in künftigen Codex-Versionen hinzukommen.
Standardprofile zulassen
Diese Richtlinie erlaubt Zugriff ohne Schreibzugriff sowie Workspace-Zugriff, aber keinen Vollzugriff:
default_permissions = ":workspace"
[allowed_permission_profiles]
":read-only" = true
":workspace" = true
# ":danger-full-access" is omitted, so it is denied.
Einen verwalteten Standardwert mit minimalen Berechtigungen hinzufügen
Administrierende können in derselben Anforderungsquelle ein benutzerdefiniertes Profil definieren. Verwende
organisationsspezifische Profilnamen, die nicht mit Namen in der geladenen Konfiguration der Nutzenden
kollidieren. Benutzerdefinierte Namen dürfen weder mit : beginnen noch den reservierten Namen filesystem
verwenden.
Stelle keine verwalteten benutzerdefinierten Profile auf Clients mit Codex 0.137.0 oder älter bereit. Diese Clients erkennen zwar die Profiltabelle, aber nicht den verwalteten Standardwert, der das Profil auswählt.
Zum Beispiel:
default_permissions = "acme_review_only"
[allowed_permission_profiles]
":read-only" = true
":workspace" = true
acme_review_only = true
# ":danger-full-access" is intentionally omitted, so it is denied.
[permissions.acme_review_only]
description = "Review code without modifying the workspace."
extends = ":read-only"
Nur vom Unternehmen definierte Profile zulassen
Lasse alle integrierten Profile weg, wenn Nutzende nur von der Administration definierte Profile auswählen sollen:
default_permissions = "acme_workspace"
[allowed_permission_profiles]
acme_workspace = true
[permissions.acme_workspace]
description = "Workspace access with sensitive files denied."
extends = ":workspace"
[permissions.acme_workspace.filesystem]
glob_scan_max_depth = 3
[permissions.acme_workspace.filesystem.":workspace_roots"]
"**/*.env" = "deny"
Das benutzerdefinierte Profil kann :workspace erweitern, auch wenn Nutzende das
integrierte Profil :workspace nicht direkt auswählen können.
Ein von einer anderen Quelle zugelassenes Profil deaktivieren
Berechtigungszulassungslisten werden anhand der Profilnamen zusammengeführt. Da Cloud-Anforderungen
eine höhere Priorität als systemweite Anforderungen haben, können Cloud-Anforderungen mit false
ein Profil deaktivieren, das in der systemweiten Datei zugelassen ist.
Cloud-Anforderungen:
default_permissions = ":read-only"
[allowed_permission_profiles]
":read-only" = true
":workspace" = false
Systemweite Anforderungen:
[allowed_permission_profiles]
":read-only" = true
":workspace" = true # Not honored because cloud requirements set this to false.
Setze default_permissions ausdrücklich auf ein zulässiges Profil. Wenn du die Einstellung weglässt,
verwendet die lokale Laufzeit nur dann standardmäßig :workspace, wenn sowohl :workspace als auch
:read-only ausdrücklich zugelassen sind. Wenn allowed_permission_profiles
fehlt, schränken verwaltete Anforderungen nicht ein, welche Profilnamen Nutzende
auswählen können. Jeder Eintrag muss ein integriertes Profil oder ein benutzerdefiniertes Profil benennen, das in
einer geladenen Konfigurations- oder Anforderungsquelle definiert ist. Definiere benutzerdefinierte Profile in den verwalteten
Anforderungen, um ihr Verhalten zentral zu steuern.
Sandbox-Anforderungen je nach Host überschreiben
Verwende [[remote_sandbox_config]], wenn eine verwaltete Richtlinie auf verschiedenen Hosts
unterschiedliche Sandbox-Anforderungen anwenden soll. Du kannst beispielsweise für Laptops strengere
Standardvorgaben beibehalten und auf passenden Entwicklungsrechnern oder CI-Runnern
Schreibzugriffe auf den Workspace erlauben. Hostspezifische Einträge überschreiben derzeit nur allowed_sandbox_modes:
allowed_sandbox_modes = ["read-only"]
[[remote_sandbox_config]]
hostname_patterns = ["*.devbox.example.com", "runner-??.ci.example.com"]
allowed_sandbox_modes = ["read-only", "workspace-write"]
Die lokale Laufzeitumgebung vergleicht jeden Eintrag in hostname_patterns mit dem
Hostnamen, den sie bestmöglich ermittelt hat. Wenn verfügbar, verwendet sie bevorzugt den vollständig qualifizierten Domainnamen.
Andernfalls greift sie auf den lokalen Hostnamen zurück. Beim Abgleich wird die Groß- und Kleinschreibung ignoriert.
* steht für eine beliebige Zeichenfolge und ? für ein einzelnes Zeichen.
Innerhalb derselben Anforderungsquelle gilt der erste passende Eintrag in [[remote_sandbox_config]].
Wenn kein Eintrag passt, behält die lokale Laufzeitumgebung den auf oberster Ebene festgelegten Wert
von allowed_sandbox_modes bei. Der Abgleich des Hostnamens dient nur zur Auswahl der Richtlinie.
Betrachte ihn nicht als authentifizierten Nachweis der Geräteidentität.
Du kannst auch den Modus für die Websuche einschränken:
allowed_web_search_modes = ["cached"] # "disabled" remains implicitly allowed
allowed_web_search_modes = [] erlaubt nur "disabled".
Beispielsweise verhindert allowed_web_search_modes = ["cached"] die Live-Websuche auch in Sitzungen mit danger-full-access.
Anforderungen an den Netzwerkzugriff konfigurieren
[experimental_network] ist experimentell und kann sich ändern. Aktiviere diese
Anforderungen erst dann unternehmensweit, wenn du sie mit den lokalen Client-Versionen
und Betriebssystemen geprüft hast, die in deinem Unternehmen verwendet werden.
Die Unterstützung für Windows ist noch eingeschränkt. Wende diese Richtlinie auf Personen, die Windows nutzen,
nur an, wenn du sie in deiner Umgebung getestet hast.
Verwende [experimental_network] in requirements.toml, wenn die Administration
Anforderungen an den Netzwerkzugriff zentral festlegen soll. Diese Anforderungen sind unabhängig
von der benutzerseitigen Einstellung features.network_proxy: Sie können den Netzwerkzugriff der Sandbox
ohne dieses Feature-Flag konfigurieren. Sie gewähren Befehlen aber keinen Netzwerkzugriff,
wenn die aktive Sandbox den Netzwerkzugriff deaktiviert hält. Setze
experimental_network.enabled = true, um den verwalteten Proxy zu aktivieren.
Domainregeln allein aktivieren den Proxy nicht.
[experimental_network]
enabled = true
managed_allowed_domains_only = true
[experimental_network.domains]
"api.openai.com" = "allow"
"**.example.com" = "allow"
"blocked.example.com" = "deny"
"**.exfil.example.com" = "deny"
Verwende experimental_network.managed_allowed_domains_only = true nur, wenn du
auch administrativ verwaltete Einträge mit "allow" in
[experimental_network.domains] definierst und ausschließlich diese Regeln gelten sollen. Ist der Wert
true, ohne dass verwaltete Zulassungsregeln vorliegen, verlieren von Nutzenden hinzugefügte Domain-Zulassungsregeln
ihre Wirkung. Kombiniere die kanonische Zuordnung domains nicht mit den veralteten Listen
allowed_domains oder denied_domains.
*.example.com erfasst nur Subdomains. **.example.com erfasst die Stammdomain
und ihre Subdomains. Eine passende Verbotsregel hat Vorrang vor einer Zulassungsregel.
Für die Domainsyntax, Regeln für lokale und private Ziele, den Vorrang von Verbotsregeln vor Zulassungsregeln und Einschränkungen beim DNS-Rebinding gilt dasselbe wie für den Netzwerkzugriff der Sandbox, der unter Agentenfreigaben und Sicherheit beschrieben ist.
Der Proxy leitet den Netzwerkverkehr lokaler Befehle weiter, die innerhalb der Sandbox ausgeführt werden. Browser-Tools prüfen vor dem Zugriff auf eine Origin außerdem verwaltete Netzwerkverbote und exklusive Zulassungslisten. Dies ist eine separate Richtlinienprüfung; der Browserverkehr wird dabei nicht über den Befehlsproxy geleitet. Der Proxy filtert weder die Websuche noch Apps und Konnektoren, MCP-Server, den Datenverkehr nativer Apps, Anfragen an Codex-Dienste oder den Datenverkehr von Codex Cloud. Verwende die jeweils vorgesehenen Steuerungsmöglichkeiten:
- Verwende
allowed_web_search_modes, um die Websuche einzuschränken. - Verwende
features.apps = false, um Integrationen von Apps und Konnektoren zu deaktivieren, undfeatures.plugins = false, um Plug-ins zu deaktivieren, sofern dies unterstützt wird. - Verwende die verwaltete Zulassungsliste
mcp_servers, um MCP-Server einzuschränken. - Verwende Funktionsanforderungen wie
browser_use,in_app_browserundcomputer_use, um Browserfunktionen und die Computernutzung einzuschränken. - Konfiguriere den Netzwerkzugriff von Codex Cloud in den Einstellungen der zugehörigen Cloud-Umgebung.
Eine Domain-Zulassungsliste für Befehle ersetzt diese funktionsspezifischen Steuerungsmöglichkeiten nicht.
Browser und Computernutzung steuern
Verwende die Tabellen [browser_use] und [computer_use] in requirements.toml, um
unterstützte Desktop-Clients einzuschränken. Prüfe die Richtlinie mit den Client-Versionen
und Betriebssystemen, die du einsetzt. Eine konfigurierte Zulassungsregel
installiert kein Plug-in, erteilt keine Betriebssystemberechtigung und genehmigt keine Aktion,
die weiterhin überprüft werden muss.
Konfiguriere für den Browserzugriff eine Origin-Richtlinie. Eine Origin umfasst das Schema,
den Host und optional den Port, etwa https://example.com oder
https://*.example.com:8443. Gib weder Pfad noch Abfrageparameter oder Fragment an.
Anders als Domainregeln für den Netzwerkzugriff von Befehlen unterscheiden Origin-Regeln für Browser zwischen HTTP und HTTPS
und gleichen den Port ab.
Dieses Beispiel beschränkt den Browserzugriff auf eine zugelassene Website und verhindert dort Uploads sowie den vollständigen Zugriff über das Chrome DevTools Protocol (CDP):
[browser_use]
allow_history_access = false
allow_global_persistent_approval = false
[browser_use.default_origin_policy]
access = "deny"
[browser_use.origins."https://example.com"]
access = "allow"
uploads = "deny"
downloads = "allow"
full_cdp_access = "deny"
persistent_approval = false
access_approval_lifetime = "turn"
Passende Origin-Regeln werden für jedes Feld einzeln ausgewertet. Ein passendes Verbot hat Vorrang. Andernfalls liefert die Standardrichtlinie für Origins die Werte für Felder, die in den passenden Regeln nicht festgelegt sind. Die lokale Konfiguration kann weitere Einschränkungen hinzufügen, aber ein verwaltetes Verbot nicht lockern. Netzwerkverbote und exklusive verwaltete Netzwerk-Zulassungslisten gelten weiterhin.
Setze browser_use.disable_auto_review = true, um die automatische Prüfung von Genehmigungsanfragen
für Browseraktionen zu deaktivieren. Oder setze auto_review = "deny" in einer Origin-Richtlinie,
um sie für diese Origin einzuschränken. Dies steuert die Verarbeitung von Genehmigungen.
Die Sicherheitsüberwachung des Modells wird dadurch nicht deaktiviert.
Lege für native Apps eine Standardrichtlinie für den Zugriff fest und gib die zulässigen Apps an. Diese macOS-Richtlinie erlaubt beispielsweise den Taschenrechner und verhindert gespeicherte Genehmigungen:
[computer_use]
default_app_access = "deny"
allow_persistent_approval = false
[computer_use.macos.bundle_ids]
"com.apple.calculator" = "allow"
Windows-Richtlinien können paketierte Apps über
computer_use.windows.aumids oder ausführbare Dateien über
computer_use.windows.exes identifizieren. Regeln für ausführbare Dateien erfordern publisher_name,
product_name und access; binary_name ist optional. Verwende die verifizierte Identität der App
und nicht nur ihren Anzeigenamen.
Alle Felder findest du in der Konfigurationsreferenz. Für verwaltete macOS-Geräte findest du außerdem Informationen zu den Einschränkungen der Nutzung bei gesperrtem Computer im entsprechenden Abschnitt.
Feature-Flags verbindlich festlegen
Du kannst auch Feature-Flags für Personen verbindlich festlegen,
die eine verwaltete requirements.toml erhalten:
[features]
personality = true
unified_exec = false
# Disable surface-specific features when needed.
browser_use = false
browser_use_full_cdp_access = false
browser_use_external = false
in_app_browser = false
in_app_updates = false
computer_use = false
Verwende für Laufzeitfunktionen die kanonischen Funktionsschlüssel aus der Tabelle [features] in config.toml.
Die lokale Laufzeitumgebung normalisiert erkannte Funktionen so, dass sie diesen verbindlichen Vorgaben entsprechen.
Sie weist widersprüchliche Schreibzugriffe auf config.toml oder auf Funktionseinstellungen
in Profildateien zurück.
in_app_browser = falsedeaktiviert den integrierten Browserbereich.in_app_updates = falsedeaktiviert beim Neustart die integrierte Updatefunktion der ChatGPT-Desktop-App, sofern dies unterstützt wird. Die externe Paketbereitstellung bleibt davon unberührt, und der Support für ältere App-Versionen wird dadurch nicht verlängert. Hinweise zu Setup und Rollout findest du unter App-Updates verwalten.browser_use = falsedeaktiviert die Computernutzung in Browsern und macht den Browser-Agenten unverfügbar.browser_use_full_cdp_access = falsedeaktiviert den vollständigen CDP-Zugriff in der lokalen Laufzeitumgebung, einschließlich des Browser-Entwicklungsmodus, und verhindert, dass die ChatGPT-Desktop-App die entsprechende Einstellung aktiviert.browser_use_external = falsedeaktiviert die externe Browserfunktion.computer_use = falsedeaktiviert Computernutzung, Aufzeichnen und Wiedergeben sowie zugehörige Installations- oder Setup-Abläufe.
Wenn du diese Schlüssel weglässt, erlaubt die Richtlinie die Funktionen. Ihre Verfügbarkeit hängt weiterhin wie üblich vom Client, der Plattform und dem Rollout ab.
Computernutzung bei gesperrtem Gerät einschränken
Um zu verhindern, dass Nutzende die Nutzung bei gesperrtem Computer auf einem verwalteten Mac aktivieren, füge diese Anforderung hinzu:
[computer_use]
allow_locked_computer_use = false
Diese Anforderung entfernt die Bedienelemente zum Aktivieren der Nutzung bei gesperrtem Computer. Ist die Funktion bereits aktiviert, wird sie dadurch nicht deaktiviert. Wenn du die Anforderung weglässt, gelten weiterhin die normale Produktverfügbarkeit und die lokale Einstellung der jeweiligen Person.
Richtlinie für die automatische Überprüfung konfigurieren
Verwende allowed_approvals_reviewers, um die automatische Überprüfung vorzuschreiben oder zu erlauben.
Setze den Wert auf ["auto_review"], um die automatische Überprüfung vorzuschreiben, oder nimm "user" auf,
wenn Nutzende die manuelle Genehmigung wählen dürfen.
Setze guardian_policy_config, um den mandantenspezifischen Abschnitt
der Richtlinie für die automatische Überprüfung zu ersetzen. Die lokale Laufzeitumgebung verwendet weiterhin die integrierte Vorlage für die Überprüfung
und die festgelegten Ausgabevorgaben. Die verwaltete Einstellung guardian_policy_config hat Vorrang
vor der lokalen Einstellung [auto_review].policy.
allowed_approval_policies = ["on-request"]
allowed_approvals_reviewers = ["auto_review"]
guardian_policy_config = """
## Environment Profile
- Trusted internal destinations include github.com/my-org, artifacts.example.com,
and internal CI systems.
## Tenant Risk Taxonomy and Allow/Deny Rules
- Treat uploads to unapproved third-party file-sharing services as high risk.
- Deny actions that expose credentials or private source code to untrusted
destinations.
"""
Leseverbote durch Anforderungen durchsetzen
Die Administration kann Lesezugriffe für exakte Pfade oder Glob-Muster mit
[permissions.filesystem] verbieten. Nutzende können diese Anforderungen nicht durch ihre lokale
Konfiguration abschwächen.
[permissions.filesystem]
deny_read = [
# values can be absolute paths...
"/**/*.env",
# ...or relative to $HOME/%USERPROFILE% using `~`.
"~/.ssh",
# But relative paths starting with `./` are not allowed.
]
Wenn Anforderungen Lesezugriffe verbieten, lehnt die lokale Laufzeitumgebung Berechtigungen für den Vollzugriff ab
und führt lokale Aktionen weiterhin in einer Sandbox ohne Schreibzugriff oder in einer Workspace-Sandbox aus,
damit sie die Anforderungen durchsetzen kann. Unter nativem Windows gilt das verwaltete deny_read für direkte Dateitools.
Lesezugriffe von Shell-Unterprozessen verwenden diese Sandbox-Regel nicht.
Verwaltete Hooks über Anforderungen durchsetzen
Die Administration kann verwaltete Lebenszyklus-Hooks auch direkt in requirements.toml definieren.
Verwende [hooks] für die eigentliche Hook-Konfiguration und setze managed_dir auf das
Verzeichnis, in dem deine MDM- oder Endpunktverwaltung die referenzierten Skripte
installiert.
Um verwaltete Hooks auch für Personen durchzusetzen, die Hooks lokal deaktiviert haben, lege
zusätzlich zu [hooks] auch [features].hooks = true verbindlich fest. Um Hooks aus Benutzer-, Projekt-, Sitzungs-
und Plug-in-Quellen zu überspringen und verwaltete Hooks weiterhin zu erlauben, setze
allow_managed_hooks_only = true.
allow_managed_hooks_only = true
[features]
hooks = true
[hooks]
managed_dir = "/enterprise/hooks"
windows_managed_dir = 'C:\enterprise\hooks'
[[hooks.PreToolUse]]
matcher = "^Bash$"
[[hooks.PreToolUse.hooks]]
type = "command"
command = "python3 /enterprise/hooks/pre_tool_use_policy.py"
command_windows = 'py -3 C:\enterprise\hooks\pre_tool_use_policy.py'
timeout = 30
statusMessage = "Checking managed Bash command"
Hinweise:
- Die lokale Laufzeitumgebung setzt die Hook-Konfiguration aus
requirements.tomldurch, verteilt aber nicht die Skripte inmanaged_dir. - Verteile diese Skripte mit deiner MDM- oder Geräteverwaltungslösung.
- Befehle verwalteter Hooks sollten absolute Pfade zu Skripten im konfigurierten verwalteten Verzeichnis verwenden.
allow_managed_hooks_only = trueüberspringt Hooks aus Benutzer-, Projekt-, Sitzungs- und Plug-in-Quellen, lädt aber weiterhin Hooks ausrequirements.tomlund anderen verwalteten Konfigurationsebenen.
Befehlsregeln über Anforderungen durchsetzen
Die Administration kann auch einschränkende Befehlsregeln aus requirements.toml
mit einer Tabelle [rules] durchsetzen. Diese Regeln werden mit regulären .rules-Dateien zusammengeführt.
Dabei gilt weiterhin die restriktivste Entscheidung.
Anders als bei .rules muss für Regeln in den Anforderungen decision angegeben werden.
Der Wert muss "prompt" oder "forbidden" sein (nicht "allow").
[rules]
prefix_rules = [
{ pattern = [{ token = "rm" }], decision = "forbidden", justification = "Use git clean -fd instead." },
{ pattern = [{ token = "git" }, { any_of = ["push", "commit"] }], decision = "prompt", justification = "Require review before mutating history." },
]
Um einzuschränken, welche MCP-Server ein lokaler Client aktivieren kann, füge eine Zulassungsliste mcp_servers hinzu.
Gleiche bei stdio-Servern command ab und bei Servern mit Streamable HTTP
url:
[mcp_servers.docs]
identity = { command = "codex-mcp" }
[mcp_servers.remote]
identity = { url = "https://example.com/mcp" }
Die Zeichenfolgenform von identity.command gleicht nur den konfigurierten Wert von command ab.
Sie prüft weder args noch cwd, env oder env_vars.
Um einen vollständigen stdio-Aufruf einzuschränken, gleiche die ausführbare Datei und jedes Positionsargument ab:
[mcp_servers.internal.identity]
command = { executable = "/usr/local/bin/codex-mcp", args = [
{ match = "exact", value = "serve" },
{ match = "prefix", value = "--workspace=" },
] }
Die ausführbare Datei sowie Anzahl und Reihenfolge der Argumente müssen übereinstimmen.
Regeln für Argumente und URLs unterstützen den Abgleich mit exact, prefix und regex über den gesamten Wert.
Auch strukturierte Befehlsregeln prüfen weder cwd noch env oder env_vars. In Plug-ins enthaltene MCP-Server
verwenden dieselben Identitätsstrukturen unter
plugins.<plugin>.mcp_servers.<server>.
Wenn mcp_servers vorhanden, aber leer ist, deaktiviert der lokale Client alle MCP-Server.
Verfügbarkeit von Plug-ins steuern
Um Plug-ins in unterstützten lokalen Clients zu deaktivieren, setze features.plugins in requirements.toml auf
false:
features.plugins = false
Diese Einstellung gilt auch, wenn sich Nutzende mit einem API-Schlüssel bei Codex anmelden. Informationen zur
unterstützten Konfiguration findest du in der
Referenz zu
features.plugins.
Quellen für Plug-in-Marketplaces einschränken
Um Vorgänge für selbst konfigurierte Marketplace-Quellen einzuschränken, setze
restrict_to_allowed_sources = true und definiere mindestens eine Regel für Quellen:
[marketplaces]
restrict_to_allowed_sources = true
[marketplaces.allowed_sources.company_plugins]
source = "git"
url = "https://github.com/example/company-plugins.git"
ref = "main"
[marketplaces.allowed_sources.internal_git]
source = "host_pattern"
host_pattern = '^git\.example\.com$'
[marketplaces.allowed_sources.local_plugins]
source = "local"
path = "/opt/company/codex-plugins"
Git-Regeln gleichen die normalisierte Repository-URL und, falls angegeben, einen exakten
ref ab. Host-Muster sind reguläre Ausdrücke, die mit dem kleingeschriebenen Git-Host
abgeglichen werden. Verwende ^ und $, um den gesamten Hostnamen abzugleichen. Lokale Regeln erfordern einen absoluten,
normalisierten Pfad. Das vollständige Schema und das Verhalten beim Zusammenführen findest du in der
Referenz zu requirements.toml.
Diese Anforderungen verhindern bei selbst konfigurierten Quellen das Hinzufügen von Marketplaces, das Installieren von Plug-ins und das Aktualisieren konfigurierter Git-Marketplaces, wenn keine Regel zutrifft. Von Codex verwaltete OpenAI-Marketplaces bleiben verfügbar, wenn ihre Quelle und ihr reservierter Name übereinstimmen. Bereits selbst konfigurierte Marketplaces und deren Plug-ins werden durch die Anforderungen zur Laufzeit nicht gefiltert.
Diese Quellenbeschränkungen gelten nur dort, wo ein lokaler Client Vorgänge für Plug-in-Marketplaces unterstützt: in ChatGPT und Codex in der Desktop-App sowie in Codex CLI. Sie steuern nicht die Nutzung von Plug-ins in ChatGPT im Web oder auf Mobilgeräten und fügen der IDE-Erweiterung keine Plug-ins hinzu.
Verwaltete Standardwerte (managed_config.toml)
Verwaltete Standardwerte legen fest, mit welcher Konfiguration ein unterstützter lokaler Client startet.
Beim Start überschreiben sie die persönliche lokale config.toml und alle per CLI mit --config angegebenen
Werte. Nutzende können diese Einstellungen während des aktuellen Laufs weiterhin ändern.
Beim nächsten Start des Clients gelten die Standardwerte erneut.
Wenn ein verwalteter Standardwert, ein macOS-MDM-Profil oder eine gespeicherte Konfiguration gpt-5.4
oder gpt-5.4-mini für Personen festlegt, die mit ChatGPT angemeldet sind, aktualisiere die entsprechende Einstellung vor dem 31. August 2026. Ersetze gpt-5.4 durch gpt-5.6-terra und gpt-5.4-mini durch
gpt-5.6-luna. Die OpenAI API und Codex mit Authentifizierung über deinen eigenen API-Schlüssel
sind nicht betroffen. Siehe Modellverfügbarkeit
im Workspace.
Stelle sicher, dass deine verwalteten Standardwerte deinen Anforderungen entsprechen. Die lokale Laufzeitumgebung lehnt unzulässige Werte ab.
Priorität und Konfigurationsebenen
Die lokale Laufzeitumgebung setzt die wirksame Konfiguration in dieser Reihenfolge zusammen (weiter oben aufgeführte Ebenen überschreiben die darunterliegenden):
- Verwaltete Einstellungen (macOS MDM; höchste Priorität)
managed_config.toml(Systemdatei bzw. verwaltete Datei)config.toml(persönliche Basiskonfiguration)
Per CLI mit --config key=value angegebene Werte überschreiben die Basiskonfiguration, werden aber ihrerseits von verwalteten Ebenen überschrieben. Jeder Lauf startet daher mit den verwalteten Standardwerten, auch wenn du lokale Flags angibst.
Cloudverwaltete Anforderungen wirken auf die Anforderungsebene (nicht auf die verwalteten Standardwerte). Die Prioritätsreihenfolge findest du oben im Abschnitt „Von Admins erzwungene Anforderungen“.
Speicherorte
- Linux/macOS (Unix):
/etc/codex/managed_config.toml - Windows/Nicht-Unix-Systeme:
~/.codex/managed_config.toml
Wenn die Datei fehlt, überspringt die lokale Laufzeitumgebung die verwaltete Ebene.
Verwaltete macOS-Einstellungen (MDM)
Unter macOS können Admins ein Geräteprofil verteilen, das Base64-kodierte TOML-Nutzdaten an folgender Stelle bereitstellt:
- Einstellungsdomäne:
com.openai.codex - Schlüssel:
config_toml_base64(verwaltete Standardwerte)requirements_toml_base64(Anforderungen)
Die lokale Laufzeitumgebung liest die Nutzdaten dieser „verwalteten Einstellungen“ als TOML ein.
Bei verwalteten Standardwerten (config_toml_base64) haben verwaltete Einstellungen
die höchste Priorität. Bei Anforderungen (requirements_toml_base64) gilt
die oben beschriebene Reihenfolge für cloudverwaltete Anforderungen.
Die gleiche [features]-Tabelle für Anforderungen funktioniert auch in requirements_toml_base64. Verwende
auch dort die kanonischen Feature-Schlüssel.
Ablauf des MDM-Setups
Die lokale Laufzeitumgebung berücksichtigt standardmäßige macOS-MDM-Nutzdaten. Daher kannst du Einstellungen
mit Tools wie Jamf Pro, Fleet oder Kandji verteilen.
Eine einfache Bereitstellung läuft so ab:
- Erstelle die verwalteten Nutzdaten im TOML-Format und kodiere sie mit
base64(ohne Zeilenumbrüche). - Füge die Zeichenfolge in deinem MDM-Profil in der Domäne
com.openai.codexunterconfig_toml_base64(verwaltete Standardwerte) oderrequirements_toml_base64(Anforderungen) ein. - Verteile das Profil. Bitte anschließend die Nutzenden, den unterstützten lokalen Client neu zu starten und zu bestätigen, dass die beim Start angezeigte Konfigurationsübersicht die verwalteten Werte enthält.
- Wenn du eine Richtlinie aufhebst oder änderst, aktualisiere die verwalteten Nutzdaten. Der Client liest die aktualisierte Einstellung beim nächsten Start ein.
Vermeide es, Geheimnisse oder dynamische Werte, die sich häufig ändern, in die Nutzdaten einzubetten. Behandle die verwaltete TOML-Konfiguration wie jede andere MDM-Einstellung, deren Änderungen kontrolliert werden.
Beispiel für managed_config.toml
# Set conservative defaults
approval_policy = "on-request"
sandbox_mode = "workspace-write"
[sandbox_workspace_write]
network_access = false # keep network disabled unless explicitly allowed
[otel]
environment = "prod"
exporter = "otlp-http" # point at your collector
log_user_prompt = false # keep prompts redacted
# exporter details live under exporter tables; see Monitoring and telemetry above
Empfohlene Schutzmaßnahmen
- Verwende für die meisten Nutzenden bevorzugt
workspace-writemit Genehmigungen. Beschränke Vollzugriff auf kontrollierte Container. - Behalte
network_access = falsebei, sofern dein Sicherheits-Review keinen Collector oder Domains zulässt, die für deine Arbeitsabläufe erforderlich sind. - Verwende die verwaltete Konfiguration, um OTel-Einstellungen (Exporter, Umgebung) festzulegen. Behalte jedoch
log_user_prompt = falsebei, sofern deine Richtlinie das Speichern von Prompt-Inhalten nicht ausdrücklich erlaubt. - Prüfe regelmäßig die Unterschiede zwischen der lokalen
config.tomlund der verwalteten Richtlinie, um Abweichungen zu erkennen. Verwaltete Ebenen sollten Vorrang vor lokalen Flags und Dateien haben.