Erweiterte Konfiguration
Den vollständigen Dokumentationsindex finden Sie unter llms.txt. Markdown-Versionen der Dokumentationsseiten sind verfügbar, indem Sie .md an die Seiten-URL anhängen.
Verwenden Sie diese Optionen, wenn Sie mehr Kontrolle über Anbieter, Richtlinien und Integrationen benötigen. Einen schnellen Einstieg finden Sie unter Grundlagen der Konfiguration.
Hintergrundinformationen zu Projektanweisungen, wiederverwendbaren Funktionen, benutzerdefinierten Slash-Befehlen, Subagent-Workflows und Integrationen finden Sie unter Anpassung. Die Konfigurationsschlüssel finden Sie in der Konfigurationsreferenz.
Profile
Mit Profilen können Sie benannte Konfigurationsebenen speichern und über
die CLI zwischen ihnen wechseln. Wenn Sie --profile profile-name übergeben, lädt Codex
~/.codex/config.toml und legt anschließend ~/.codex/profile-name.config.toml darüber.
Profilnamen dürfen Buchstaben, Zahlen, Bindestriche und Unterstriche enthalten.
Erstellen Sie für jedes Profil eine separate TOML-Datei. Verwenden Sie in der
Profildatei Konfigurationsschlüssel der obersten Ebene; verschachteln Sie diese nicht unter [profiles.profile-name].
# ~/.codex/deep-review.config.toml
model = "gpt-5.5"
model_reasoning_effort = "xhigh"
approval_policy = "on-request"
model_catalog_json = "/Users/me/.codex/model-catalogs/deep-review.json"codex --profile deep-review
codex exec --profile deep-review "review this change"Da die Profildatei eine Ebene über Ihrer grundlegenden Benutzerkonfiguration und unterhalb
der Projekt- und CLI-Konfiguration liegt, muss sie nur die Werte enthalten, die von Ihrer grundlegenden
Konfiguration abweichen. Profildateien können auch model_catalog_json überschreiben; Codex verwendet den
Profilwert, wenn er in beiden Dateien festgelegt ist.
Ab Codex 0.134.0 liest --profile [profiles.profile-name] nicht mehr
aus config.toml, und die Auswahl über profile = "profile-name" auf oberster Ebene wird nicht
mehr unterstützt. Verschieben Sie alte Profileinstellungen nach
~/.codex/profile-name.config.toml und entfernen Sie anschließend die entsprechende
Tabelle [profiles.profile-name] sowie die Auswahl profile = "profile-name" aus
config.toml.
Einmalige Überschreibungen über die CLI
Zusätzlich zur Bearbeitung von ~/.codex/config.toml können Sie die Konfiguration für einen einzelnen Lauf über die CLI überschreiben:
- Verwenden Sie nach Möglichkeit spezielle Flags (beispielsweise
--model). - Verwenden Sie
-c/--config, wenn Sie einen beliebigen Schlüssel überschreiben müssen.
Beispiele:
# Dedicated flag
codex --model gpt-5.6-terra
# Generic key/value override (value is TOML, not JSON)
codex --config model='"gpt-5.6-terra"'
codex --config sandbox_workspace_write.network_access=true
codex --config 'shell_environment_policy.include_only=["PATH","HOME"]'Hinweise:
- Schlüssel können Punktnotation verwenden, um verschachtelte Werte festzulegen (beispielsweise
mcp_servers.context7.enabled=false). - Werte für
--configwerden als TOML geparst. Setzen Sie den Wert im Zweifelsfall in Anführungszeichen, damit Ihre Shell ihn nicht an Leerzeichen aufteilt. - Wenn der Wert nicht als TOML geparst werden kann, behandelt Codex ihn als Zeichenfolge.
Speicherorte für Konfiguration und Status
Codex speichert seinen lokalen Status unter CODEX_HOME (standardmäßig ~/.codex).
Häufig dort vorhandene Dateien:
config.toml(Ihre lokale Konfiguration)auth.json(wenn Sie dateibasierte Anmeldedatenspeicherung verwenden) oder der Schlüsselbund Ihres Betriebssystemshistory.jsonl(wenn die Verlaufsspeicherung aktiviert ist)- Weiterer benutzerspezifischer Status wie Protokolle und Caches
Details zur Authentifizierung (einschließlich der Speichermodi für Anmeldedaten) finden Sie unter Authentifizierung. Die vollständige Liste der Konfigurationsschlüssel finden Sie in der Konfigurationsreferenz.
Informationen zu gemeinsamen Standardwerten, Regeln und Skills, die in Repositorys oder Systempfaden eingecheckt sind, finden Sie unter Teamkonfiguration.
Wenn Sie lediglich den integrierten OpenAI-Anbieter auf einen LLM-Proxy, Router oder ein Projekt mit aktivierter Datenresidenz ausrichten möchten, legen Sie openai_base_url in config.toml fest, anstatt einen neuen Anbieter zu definieren. Dadurch wird die Basis-URL des integrierten Anbieters openai geändert, ohne dass ein separater Eintrag für model_providers.<id> erforderlich ist.
openai_base_url = "https://us.api.openai.com/v1"Projektkonfigurationsdateien (.codex/config.toml)
Zusätzlich zu Ihrer Benutzerkonfiguration liest Codex projektbezogene Überschreibungen aus .codex/config.toml-Dateien in Ihrem Repository. Codex durchläuft den Pfad vom Projektstamm bis zu Ihrem aktuellen Arbeitsverzeichnis und lädt jede gefundene .codex/config.toml. Wenn mehrere Dateien denselben Schlüssel definieren, hat die Datei Vorrang, die Ihrem Arbeitsverzeichnis am nächsten liegt.
Aus Sicherheitsgründen lädt Codex projektbezogene Konfigurationsdateien nur, wenn das Projekt vertrauenswürdig ist. Ist das Projekt nicht vertrauenswürdig, ignoriert Codex die projektbezogenen .codex/-Ebenen, einschließlich .codex/config.toml, projektlokaler Hooks und projektlokaler Regeln. Benutzer- und Systemebenen bleiben davon getrennt und werden weiterhin geladen.
Relative Pfade innerhalb einer Projektkonfiguration (beispielsweise model_instructions_file) werden relativ zu dem .codex/-Ordner aufgelöst, der die config.toml enthält.
Projektkonfigurationsdateien können keine Einstellungen überschreiben, die Anmeldedaten umleiten,
Metadaten von Anfragen an hostverwaltete Apps ändern, die Anbieterauthentifizierung ändern, Konfigurationsprofile auswählen
oder lokale Benachrichtigungs-/Telemetriebefehle ausführen. Codex ignoriert die
folgenden Schlüssel in der projektlokalen .codex/config.toml und gibt beim Start eine
Warnung aus, wenn sie vorhanden sind: openai_base_url, chatgpt_base_url,
apps_mcp_product_sku, model_provider, model_providers, notify,
profile, profiles, experimental_realtime_ws_base_url und otel. Legen Sie
Anbieter-, Benachrichtigungs- und Telemetrieschlüssel in Ihrer benutzerbezogenen
~/.codex/config.toml fest; wählen Sie Konfigurationsprofile mit --profile profile-name
und ~/.codex/profile-name.config.toml aus.
Hooks
Codex kann Lebenszyklus-Hooks entweder aus hooks.json-Dateien oder aus eingebetteten
[hooks]-Tabellen in config.toml-Dateien laden, die sich neben aktiven Konfigurationsebenen befinden.
In der Praxis sind die vier nützlichsten Speicherorte:
~/.codex/hooks.json~/.codex/config.toml<repo>/.codex/hooks.json<repo>/.codex/config.toml
Projektlokale Hooks werden nur geladen, wenn die .codex/-Ebene des Projekts vertrauenswürdig ist.
Hooks auf Benutzerebene bleiben unabhängig von der Vertrauenswürdigkeit des Projekts.
Eingebettete TOML-Hooks verwenden dieselbe Ereignisstruktur wie hooks.json:
[[hooks.PreToolUse]]
matcher = "^Bash$"
[[hooks.PreToolUse.hooks]]
type = "command"
command = '/usr/bin/python3 "$(git rev-parse --show-toplevel)/.codex/hooks/pre_tool_use_policy.py"'
timeout = 30
statusMessage = "Checking Bash command"Wenn eine einzelne Ebene sowohl hooks.json als auch eingebettete [hooks] enthält, lädt Codex
beide und gibt eine Warnung aus. Verwenden Sie vorzugsweise nur eine Darstellungsform pro Ebene.
Die aktuelle Ereignisliste, Eingabefelder, das Ausgabeverhalten und Einschränkungen finden Sie unter Hooks.
Agentenrollen ([agents] in config.toml)
Informationen zur Konfiguration von Subagent-Rollen ([agents] in config.toml) finden Sie unter Subagenten.
Erkennung des Projektstamms
Codex ermittelt die Projektkonfiguration (beispielsweise .codex/-Ebenen und AGENTS.md), indem es ausgehend vom Arbeitsverzeichnis die Verzeichnishierarchie nach oben durchläuft, bis es einen Projektstamm erreicht.
Standardmäßig behandelt Codex ein Verzeichnis, das .git enthält, als Projektstamm. Um dieses Verhalten anzupassen, legen Sie project_root_markers in config.toml fest:
# Treat a directory as the project root when it contains any of these markers.
project_root_markers = [".git", ".hg", ".sl"]Legen Sie project_root_markers = [] fest, um die Suche in übergeordneten Verzeichnissen zu überspringen und das aktuelle Arbeitsverzeichnis als Projektstamm zu behandeln.
Benutzerdefinierte Modellanbieter
Ein Modellanbieter definiert, wie Codex eine Verbindung zu einem Modell herstellt (Basis-URL, Übertragungs-API, Authentifizierung und optionale HTTP-Header). Benutzerdefinierte Anbieter können die reservierten IDs der integrierten Anbieter nicht wiederverwenden: openai, ollama und lmstudio.
Definieren Sie zusätzliche Anbieter und verweisen Sie mit model_provider darauf:
model = "gpt-5.6-terra"
model_provider = "proxy"
[model_providers.proxy]
name = "OpenAI using LLM proxy"
base_url = "http://proxy.example.com"
env_key = "OPENAI_API_KEY"
[model_providers.local_ollama]
name = "Ollama"
base_url = "http://localhost:11434/v1"
[model_providers.mistral]
name = "Mistral"
base_url = "https://api.mistral.ai/v1"
env_key = "MISTRAL_API_KEY"Wenn ein benutzerdefinierter Anbieter den eigenständigen Endpunkt für die Websuche unterstützt, deklarieren Sie diese Funktion in seiner Anbieterkonfiguration:
[model_providers.proxy]
name = "OpenAI using LLM proxy"
base_url = "https://proxy.example.com/v1"
env_key = "OPENAI_API_KEY"
supports_standalone_web_search = trueDie Einstellung ist für benutzerdefinierte Anbieter standardmäßig false. Die eigenständige Websuche befindet sich
in Entwicklung und ist standardmäßig deaktiviert. Wenn Sie die Anbieterfunktion auf true setzen,
wird sie dadurch nicht aktiviert: Der Anbieter muss einen kompatiblen Endpunkt unterstützen,
und das ausgewählte Modell sowie die Laufzeit müssen die eigenständige Suche unterstützen. Der
konfigurierte web_search-Modus und
verwaltete Sucheinschränkungen gelten weiterhin.
Fügen Sie bei Bedarf Anfrage-Header hinzu:
[model_providers.example]
http_headers = { "X-Example-Header" = "example-value" }
env_http_headers = { "X-Example-Features" = "EXAMPLE_FEATURES" }Verwenden Sie befehlsbasierte Authentifizierung, wenn Codex für einen Anbieter Bearer-Token von einer externen Anmeldedatenhilfe abrufen muss:
[model_providers.proxy]
name = "OpenAI using LLM proxy"
base_url = "https://proxy.example.com/v1"
wire_api = "responses"
[model_providers.proxy.auth]
command = "/usr/local/bin/fetch-codex-token"
args = ["--audience", "codex"]
timeout_ms = 5000
refresh_interval_ms = 300000Der Authentifizierungsbefehl erhält kein stdin und muss das Token auf stdout ausgeben. Codex entfernt umgebenden Leerraum, behandelt ein leeres Token als Fehler und aktualisiert es bei refresh_interval_ms proaktiv; legen Sie refresh_interval_ms = 0 fest, um es erst nach einem erneuten Authentifizierungsversuch zu aktualisieren. Kombinieren Sie [model_providers.<id>.auth] nicht mit env_key, experimental_bearer_token oder requires_openai_auth.
Amazon-Bedrock-Anbieter
Codex enthält einen integrierten Modellanbieter amazon-bedrock. Legen Sie ihn direkt als
model_provider fest; anders als benutzerdefinierte Anbieter unterstützt dieser integrierte Anbieter nur
die verschachtelten Überschreibungen für AWS-Profil und -Region.
model_provider = "amazon-bedrock"
model = "<bedrock-model-id>"
[model_providers.amazon-bedrock.aws]
profile = "default"
region = "eu-central-1"Wenn Sie profile weglassen, verwendet Codex die standardmäßige AWS-Anmeldedatenkette. Legen Sie
region auf die unterstützte Bedrock-Region fest, die Anfragen verarbeiten soll.
Den vollständigen Einrichtungsablauf, Authentifizierungsoptionen, unterstützte Modelle und die Verfügbarkeit von Funktionen finden Sie unter ChatGPT Work und Codex mit Amazon Bedrock verwenden.
OSS-Modus (lokale Anbieter)
Codex kann mit einem lokalen „Open-Source“-Anbieter wie Ollama oder LM
Studio ausgeführt werden, wenn Sie --oss übergeben. Wählen Sie mit
--local-provider einen Anbieter für einen einzelnen Lauf aus oder legen Sie oss_provider als Standard fest. Wenn keines von beiden festgelegt ist,
fordert die interaktive CLI Sie zur Auswahl auf; codex exec wird mit einem Fehler beendet.
# Default local provider used with `--oss`
oss_provider = "ollama" # or "lmstudio"Azure-Anbieter und anbieterspezifische Feinabstimmung
[model_providers.azure]
name = "Azure"
base_url = "https://YOUR_PROJECT_NAME.openai.azure.com/openai"
env_key = "AZURE_OPENAI_API_KEY"
query_params = { api-version = "2025-04-01-preview" }
wire_api = "responses"
request_max_retries = 4
stream_max_retries = 10
stream_idle_timeout_ms = 300000Um die Basis-URL des integrierten OpenAI-Anbieters zu ändern, verwenden Sie openai_base_url; erstellen Sie nicht [model_providers.openai], da Sie die IDs integrierter Anbieter nicht überschreiben können.
ChatGPT-Kunden mit Datenresidenz
Projekte, die mit aktivierter Datenresidenz erstellt wurden, können einen Modellanbieter erstellen, um die base_url mit dem richtigen Präfix zu aktualisieren.
model_provider = "openaidr"
[model_providers.openaidr]
name = "OpenAI Data Residency"
base_url = "https://us.api.openai.com/v1" # Replace 'us' with domain prefixModellschlussfolgerung, Ausführlichkeit und Grenzwerte
model_reasoning_summary = "none" # Disable summaries
model_verbosity = "low" # Shorten responses
model_supports_reasoning_summaries = true # Force reasoning
model_context_window = 128000 # Context window sizemodel_verbosity gilt nur für Anbieter, die die Responses API verwenden. Anbieter für Chat Completions ignorieren diese Einstellung.
Genehmigungsrichtlinien und Sandbox-Modi
Wählen Sie die Strenge der Genehmigungen (bestimmt, wann Codex pausiert) und die Sandbox-Stufe (bestimmt den Datei-/Netzwerkzugriff).
Praktische Hinweise für die Bearbeitung von config.toml finden Sie unter Gängige Kombinationen aus Sandbox und Genehmigungen, Geschützte Pfade in beschreibbaren Stammverzeichnissen und Netzwerkzugriff.
Informationen zu Beta-Berechtigungsprofilen, die Dateisystem- und Netzwerkzugriff gemeinsam konfigurieren, finden Sie unter Berechtigungen.
Sie können auch eine detaillierte Genehmigungsrichtlinie (approval_policy = { granular = { ... } }) verwenden, um einzelne Aufforderungskategorien zuzulassen oder automatisch abzulehnen. Dies ist nützlich, wenn Sie für einige Fälle normale interaktive Genehmigungen wünschen, andere jedoch, etwa request_permissions oder Aufforderungen von Skill-Skripten, automatisch nach dem Fail-Closed-Prinzip ablehnen möchten.
Legen Sie approvals_reviewer = "auto_review" fest, um geeignete interaktive
Genehmigungsanfragen einer automatischen Prüfung zuzuführen. Dadurch ändert sich die prüfende Instanz, nicht die Sandbox-
Grenze.
Verwenden Sie [auto_review].policy für lokale Richtlinienanweisungen an die prüfende Instanz. Das verwaltete
guardian_policy_config hat Vorrang.
approval_policy = "untrusted" # Other options: on-request, never, or { granular = { ... } }
approvals_reviewer = "user" # Or "auto_review" for automatic review
sandbox_mode = "workspace-write"
allow_login_shell = false # Optional hardening: disallow login shells for shell tools
# Example granular approval policy:
# approval_policy = { granular = {
# sandbox_approval = true,
# rules = true,
# mcp_elicitations = true,
# request_permissions = false,
# skill_approval = false
# } }
[sandbox_workspace_write]
exclude_tmpdir_env_var = false # Allow $TMPDIR
exclude_slash_tmp = false # Allow /tmp
writable_roots = ["/Users/YOU/.pyenv/shims"]
network_access = false # Opt in to outbound network
[auto_review]
policy = """
Use your organization's automatic review policy.
"""Benannte Berechtigungsprofile
Informationen zu integrierten Profilen, der Syntax benutzerdefinierter Profile sowie dem vollständigen Konfigurationsmodell für Dateisystem und Netzwerk finden Sie unter Berechtigungen.
Die vollständige Schlüsselliste und Anforderungsbeschränkungen finden Sie in der Konfigurationsreferenz und unter Verwaltete Konfiguration.
Deaktivieren Sie die Sandbox vollständig (nur verwenden, wenn Ihre Umgebung Prozesse bereits isoliert):
sandbox_mode = "danger-full-access"Richtlinie für die Shell-Umgebung
shell_environment_policy steuert, welche Umgebungsvariablen Codex an
gestartete Befehle übergibt. Beginnen Sie mit inherit = "none" mit einer leeren Umgebung oder
übernehmen Sie mit inherit = "core" eine reduzierte Variablenmenge. Fügen Sie explizite Werte und schlüsselbasierte
Filter hinzu, damit keine unnötigen Geheimnisse an gestartete Befehle übergeben werden.
[shell_environment_policy]
inherit = "core"
set = { MY_FLAG = "1" }
ignore_default_excludes = false
[shell_environment_policy.filters]
"AWS_*" = "exclude"
"AZURE_*" = "exclude"Filtermuster berücksichtigen keine Groß-/Kleinschreibung und unterstützen * und ?. Verwenden Sie "exclude",
um übereinstimmende Variablen zu entfernen. Wenn ein Muster "include" verwendet, behält Codex
nur Variablen bei, die einem Einschlussmuster entsprechen. Einschlussmuster stellen bereits ausgeschlossene Variablen
nicht wieder her. Filterschlüssel werden über Konfigurationsebenen hinweg ohne Berücksichtigung der Groß-/Kleinschreibung
zusammengeführt.
ignore_default_excludes ist standardmäßig true, sodass Codex Variablennamen, die KEY, SECRET oder TOKEN enthalten, nicht automatisch
entfernt. Setzen Sie den Wert auf false,
um diese automatischen Ausschlüsse anzuwenden, bevor Ihre expliziten Filter ausgeführt werden.
Codex wendet zuerst automatische Ausschlüsse, dann benutzerdefinierte Ausschlüsse, Werte aus
set und schließlich die Positivliste der Einschlussmuster an. Da set nach den
Ausschlüssen ausgeführt wird, kann es eine ausgeschlossene Variable wiederherstellen. Eine Positivliste aus Einschlussmustern
kann diesen wiederhergestellten Wert dennoch entfernen.
Die älteren Arrays exclude und include_only werden für bestehende
Konfigurationen weiterhin unterstützt. Kombinieren Sie keines der Arrays mit
[shell_environment_policy.filters] in derselben Konfigurationsebene; Codex
lehnt diese Kombination ab.
MCP-Server
Konfigurationsdetails finden Sie in der separaten MCP-Dokumentation.
Beobachtbarkeit und Telemetrie
Aktivieren Sie den OpenTelemetry-(OTel-)Protokollexport, um Codex-Läufe zu verfolgen (API-Anfragen, SSE/Ereignisse, Aufforderungen, Tool-Genehmigungen/-Ergebnisse). Er ist standardmäßig deaktiviert; aktivieren Sie ihn über [otel]:
[otel]
environment = "staging" # defaults to "dev"
exporter = "none" # set to otlp-http or otlp-grpc to send events
log_user_prompt = false # redact user prompts unless explicitly enabledWählen Sie einen Exporter:
[otel]
exporter = { otlp-http = {
endpoint = "https://otel.example.com/v1/logs",
protocol = "binary",
headers = { "x-otlp-api-key" = "${OTLP_TOKEN}" }
}}[otel]
exporter = { otlp-grpc = {
endpoint = "https://otel.example.com:4317",
headers = { "x-otlp-meta" = "abc123" }
}}Bei exporter = "none" zeichnet Codex Ereignisse auf, sendet jedoch nichts. Exporter verarbeiten Daten asynchron in Batches und übertragen sie beim Beenden. Ereignismetadaten umfassen Dienstname, CLI-Version, Umgebungs-Tag, Konversations-ID, Modell, Sandbox-/Genehmigungseinstellungen und ereignisspezifische Felder (siehe Konfigurationsreferenz).
Ausgegebene Daten
Codex gibt strukturierte Protokollereignisse für Läufe und die Tool-Nutzung aus. Repräsentative Ereignistypen sind:
codex.conversation_starts(Modell, Schlussfolgerungseinstellungen, Sandbox-/Genehmigungsrichtlinie)codex.api_request(Versuch, Status/Erfolg, Dauer und Fehlerdetails)codex.sse_event(Art des Stream-Ereignisses, Erfolg/Fehlschlag, Dauer sowie Token-Anzahlen beiresponse.completed)codex.websocket_requestundcodex.websocket_event(Anfragedauer sowie Art/Erfolg/Fehler pro Nachricht)codex.user_prompt(Länge; Inhalt geschwärzt, sofern nicht ausdrücklich aktiviert)codex.tool_decision(genehmigt/abgelehnt und ob die Entscheidung aus der Konfiguration oder vom Benutzer stammt)codex.tool_result(Dauer, Erfolg, Ausgabeausschnitt)
Ausgegebene OTel-Metriken
Wenn die OTel-Metrikpipeline aktiviert ist, gibt Codex Zähler und Dauerhistogramme für API-, Stream- und Tool-Aktivitäten aus.
Jede der folgenden Metriken enthält außerdem standardmäßige Metadaten-Tags: auth_mode, originator, session_source, model und app.version.
| Metrik | Typ | Felder | Beschreibung |
|---|---|---|---|
codex.api_request |
Zähler | status, success |
Anzahl der API-Anfragen nach HTTP-Status und Erfolg/Fehlschlag. |
codex.api_request.duration_ms |
Histogramm | status, success |
Dauer der API-Anfragen in Millisekunden. |
codex.sse_event |
Zähler | kind, success |
Anzahl der SSE-Ereignisse nach Ereignisart und Erfolg/Fehlschlag. |
codex.sse_event.duration_ms |
Histogramm | kind, success |
Verarbeitungsdauer der SSE-Ereignisse in Millisekunden. |
codex.websocket.request |
Zähler | success |
Anzahl der WebSocket-Anfragen nach Erfolg/Fehlschlag. |
codex.websocket.request.duration_ms |
Histogramm | success |
Dauer der WebSocket-Anfragen in Millisekunden. |
codex.websocket.event |
Zähler | kind, success |
Anzahl der WebSocket-Nachrichten/-Ereignisse nach Typ und Erfolg/Fehlschlag. |
codex.websocket.event.duration_ms |
Histogramm | kind, success |
Verarbeitungsdauer der WebSocket-Nachrichten/-Ereignisse in Millisekunden. |
codex.tool.call |
Zähler | tool, success |
Anzahl der Tool-Aufrufe nach Tool-Name und Erfolg/Fehlschlag. |
codex.tool.call.duration_ms |
Histogramm | tool, success |
Tool-Ausführungsdauer in Millisekunden nach Tool-Name und Ergebnis. |
Weitere Sicherheits- und Datenschutzhinweise zur Telemetrie finden Sie unter Sicherheit.
Metriken
Standardmäßig sendet Codex regelmäßig eine geringe Menge an anonymen Nutzungs- und Zustandsdaten an OpenAI. Dadurch lässt sich erkennen, wenn Codex nicht ordnungsgemäß funktioniert, und nachvollziehen, welche Funktionen und Konfigurationsoptionen verwendet werden, damit sich das Codex-Team auf die wichtigsten Aspekte konzentrieren kann. Diese Metriken enthalten keine personenbezogenen Daten (PII). Die Metrikerfassung erfolgt unabhängig vom OTel-Protokoll-/Trace-Export.
Wenn Sie die Metrikerfassung auf einem Computer für die ChatGPT-Desktop-App, Codex CLI und die IDE-Erweiterung vollständig deaktivieren möchten, legen Sie das Analyse-Flag in Ihrer Konfiguration fest:
[analytics]
enabled = falseJede Metrik enthält neben ihren eigenen Feldern auch die folgenden standardmäßigen Kontextfelder.
Standardmäßige Kontextfelder (gelten für jedes Ereignis/jede Metrik)
auth_mode:swic|api|unknown.model: Name des verwendeten Modells.app.version: Codex-Version.
Metrikkatalog
Jede Metrik enthält die erforderlichen Felder sowie die oben genannten standardmäßigen Kontextfelder. Bei den folgenden Metriknamen fehlt das Präfix codex..
Die meisten Metriknamen sind in codex-rs/otel/src/metrics/names.rs zentralisiert; funktionsspezifische Metriken, die außerhalb dieser Datei ausgegeben werden, sind hier ebenfalls aufgeführt.
Wenn eine Metrik das Feld tool enthält, bezeichnet es das verwendete interne Tool (beispielsweise apply_patch oder shell) und enthält weder den tatsächlichen Shell-Befehl noch den Patch, den codex anzuwenden versucht.
Laufzeit und Modelltransport
| Metrik | Typ | Felder | Beschreibung |
|---|---|---|---|
api_request |
Zähler | status, success |
Anzahl der API-Anfragen nach HTTP-Status und Erfolg/Fehlschlag. |
api_request.duration_ms |
Histogramm | status, success |
Dauer der API-Anfragen in Millisekunden. |
sse_event |
Zähler | kind, success |
Anzahl der SSE-Ereignisse nach Ereignisart und Erfolg/Fehlschlag. |
sse_event.duration_ms |
Histogramm | kind, success |
Verarbeitungsdauer der SSE-Ereignisse in Millisekunden. |
websocket.request |
Zähler | success |
Anzahl der WebSocket-Anfragen nach Erfolg/Fehlschlag. |
websocket.request.duration_ms |
Histogramm | success |
Dauer der WebSocket-Anfragen in Millisekunden. |
websocket.event |
Zähler | kind, success |
Anzahl der WebSocket-Nachrichten/-Ereignisse nach Typ und Erfolg/Fehlschlag. |
websocket.event.duration_ms |
Histogramm | kind, success |
Verarbeitungsdauer der WebSocket-Nachrichten/-Ereignisse in Millisekunden. |
responses_api_overhead.duration_ms |
Histogramm | Zeitaufwand der Responses API für WebSocket-Antworten. | |
responses_api_inference_time.duration_ms |
Histogramm | Inferenzzeit der Responses API für WebSocket-Antworten. | |
responses_api_engine_iapi_ttft.duration_ms |
Histogramm | Zeit bis zum ersten Token für die IAPI der Responses-API-Engine. | |
responses_api_engine_service_ttft.duration_ms |
Histogramm | Dienstzeit bis zum ersten Token für die Responses-API-Engine. | |
responses_api_engine_iapi_tbt.duration_ms |
Histogramm | Zeit zwischen Tokens für die IAPI der Responses-API-Engine. | |
responses_api_engine_service_tbt.duration_ms |
Histogramm | Dienstzeit zwischen Tokens für die Responses-API-Engine. | |
transport.fallback_to_http |
Zähler | from_wire_api |
Anzahl der Rückgriffe von WebSocket auf HTTP. |
remote_models.fetch_update.duration_ms |
Histogramm | Zeit zum Abrufen entfernter Modelldefinitionen. | |
remote_models.load_cache.duration_ms |
Histogramm | Zeit zum Laden des entfernten Modell-Caches. | |
startup_prewarm.duration_ms |
Histogramm | status |
Dauer des Vorwärmens beim Start nach Ergebnis. |
startup_prewarm.age_at_first_turn_ms |
Histogramm | status |
Alter des Vorwärmens beim Start, wenn der erste echte Turn es auflöst. |
cloud_requirements.fetch.duration_ms |
Histogramm | Abrufdauer der vom Arbeitsbereich verwalteten Cloud-Anforderungen. | |
cloud_requirements.fetch_attempt |
Zähler | Siehe Hinweis | Abrufversuche der vom Arbeitsbereich verwalteten Cloud-Anforderungen. |
cloud_requirements.fetch_final |
Zähler | Siehe Hinweis | Endgültiges Ergebnis des Abrufs der vom Arbeitsbereich verwalteten Cloud-Anforderungen. |
cloud_requirements.load |
Zähler | trigger, outcome |
Ladeergebnis der vom Arbeitsbereich verwalteten Cloud-Anforderungen. |
Die Metrik cloud_requirements.fetch_attempt enthält die Felder trigger, attempt, outcome und status_code. Die Metrik cloud_requirements.fetch_final enthält die Felder trigger, outcome, reason, attempt_count und status_code.
Turn- und Tool-Aktivität
| Metrik | Typ | Felder | Beschreibung |
|---|---|---|---|
turn.e2e_duration_ms |
Histogramm | Gesamtdauer eines vollständigen Turns. | |
turn.ttft.duration_ms |
Histogramm | Zeit bis zum ersten Token eines Turns. | |
turn.ttfm.duration_ms |
Histogramm | Zeit bis zum ersten Modellausgabeelement eines Turns. | |
turn.network_proxy |
Zähler | active, tmp_mem_enabled |
Ob der verwaltete Netzwerk-Proxy für den Turn aktiv war. |
turn.memory |
Zähler | read_allowed, feature_enabled, config_use_memories, has_citations |
Verfügbarkeit von Speicherlesevorgängen und Verwendung von Speicherzitaten pro Turn. |
turn.tool.call |
Histogramm | tmp_mem_enabled |
Anzahl der Tool-Aufrufe im Turn. |
turn.token_usage |
Histogramm | token_type, tmp_mem_enabled |
Token-Nutzung pro Turn nach Token-Typ (total, input, cached_input, output oder reasoning_output). |
tool.call |
Zähler | tool, success |
Anzahl der Tool-Aufrufe nach Tool-Name und Erfolg/Fehlschlag. |
tool.call.duration_ms |
Histogramm | tool, success |
Tool-Ausführungsdauer in Millisekunden nach Tool-Name und Ergebnis. |
tool.unified_exec |
Zähler | tty |
Aufrufe des einheitlichen Ausführungs-Tools nach TTY-Modus. |
approval.requested |
Zähler | tool, approved |
Ergebnis der Tool-Genehmigungsanfrage (approved, approved_with_amendment, approved_for_session, denied, abort). |
mcp.call |
Zähler | Siehe Hinweis | Ergebnis des MCP-Tool-Aufrufs. |
mcp.call.duration_ms |
Histogramm | Siehe Hinweis | Dauer des MCP-Tool-Aufrufs. |
mcp.tools.list.duration_ms |
Histogramm | cache |
Dauer der MCP-Tool-Auflistung einschließlich Cache-Treffer/-Fehlschlag. |
mcp.tools.fetch_uncached.duration_ms |
Histogramm | Dauer von MCP-Tool-Abrufen ohne Cache-Treffer. | |
mcp.tools.cache_write.duration_ms |
Histogramm | Dauer der Schreibvorgänge im MCP-Tool-Cache von Codex Apps. | |
hooks.run |
Zähler | hook_name, source, status |
Anzahl der Hook-Ausführungen nach Hook-Name, Quelle und Status. |
hooks.run.duration_ms |
Histogramm | hook_name, source, status |
Dauer der Hook-Ausführung in Millisekunden. |
Die Metriken mcp.call und mcp.call.duration_ms enthalten status; normale Tool-Aufrufausgaben enthalten außerdem tool sowie, sofern verfügbar, connector_id und connector_name. Blockierte MCP-Aufrufe von Codex Apps können mcp.call ausgeben, das nur status enthält.
Threads, Aufgaben und Funktionen
| Metrik | Typ | Felder | Beschreibung |
|---|---|---|---|
feature.state |
Zähler | feature, value |
Funktionswerte, die von den Standardwerten abweichen (eine Zeile pro Abweichung). |
status_line |
Zähler | Sitzung wurde mit einer konfigurierten Statuszeile gestartet. | |
model_warning |
Zähler | Warnung wurde an das Modell gesendet. | |
thread.started |
Zähler | is_git |
Neuer Thread erstellt, gekennzeichnet danach, ob sich das Arbeitsverzeichnis in einem Git-Repository befindet. |
conversation.turn.count |
Zähler | Benutzer-/Assistenten-Turns pro Thread, am Ende des Threads erfasst. | |
thread.fork |
Zähler | source |
Neuer Thread durch Abspaltung von einem bestehenden Thread erstellt. |
thread.rename |
Zähler | Thread umbenannt. | |
thread.side |
Zähler | source |
Nebenunterhaltung erstellt. |
thread.skills.enabled_total |
Histogramm | Anzahl der für einen neuen Thread aktivierten Skills. | |
thread.skills.kept_total |
Histogramm | Anzahl der nach dem Rendern der Aufforderung beibehaltenen aktivierten Skills. | |
thread.skills.truncated |
Histogramm | Ob das Rendern der Skills die Liste aktivierter Skills gekürzt hat (1 oder 0). |
|
task.compact |
Zähler | type |
Anzahl der Komprimierungen pro Typ (remote oder local), einschließlich manueller und automatischer. |
task.review |
Zähler | Anzahl der ausgelösten Prüfungen. | |
task.undo |
Zähler | Anzahl der ausgelösten Rückgängig-Aktionen. | |
task.user_shell |
Zähler | Anzahl der Benutzer-Shell-Aktionen (beispielsweise ! in der TUI). |
|
shell_snapshot |
Zähler | Siehe Hinweis | Ob die Erstellung eines Shell-Snapshots erfolgreich war. |
shell_snapshot.duration_ms |
Histogramm | success |
Zeit zum Erstellen eines Shell-Snapshots. |
skill.injected |
Zähler | status, skill |
Ergebnisse der Skill-Injektion nach Skill. |
plugins.startup_sync |
Zähler | transport, status |
Synchronisierungsversuche kuratierter Plugins beim Start. |
plugins.startup_sync.final |
Zähler | transport, status |
Endgültiges Ergebnis der Synchronisierung kuratierter Plugins beim Start. |
multi_agent.spawn |
Zähler | role |
Agentenstarts nach Rolle. |
multi_agent.resume |
Zähler | Wiederaufnahmen von Agenten. | |
multi_agent.nickname_pool_reset |
Zähler | Zurücksetzungen des Agenten-Spitznamenpools. |
Die Metrik shell_snapshot enthält success und bei Fehlschlägen failure_reason.
Speicher und lokaler Status
| Metrik | Typ | Felder | Beschreibung |
|---|---|---|---|
memory.phase1 |
Zähler | status |
Anzahl der Speicherphase-1-Aufträge nach Status. |
memory.phase1.e2e_ms |
Histogramm | Gesamtdauer der Speicherphase 1. | |
memory.phase1.output |
Zähler | Geschriebene Ausgaben der Speicherphase 1. | |
memory.phase1.token_usage |
Histogramm | token_type |
Token-Nutzung der Speicherphase 1 nach Token-Typ. |
memory.phase2 |
Zähler | status |
Anzahl der Speicherphase-2-Aufträge nach Status. |
memory.phase2.e2e_ms |
Histogramm | Gesamtdauer der Speicherphase 2. | |
memory.phase2.input |
Zähler | Anzahl der Eingaben für Speicherphase 2. | |
memory.phase2.token_usage |
Histogramm | token_type |
Token-Nutzung der Speicherphase 2 nach Token-Typ. |
memories.usage |
Zähler | kind, tool, success |
Speichernutzung nach Art, Tool und Erfolg/Fehlschlag. |
external_agent_config.detect |
Zähler | Siehe Hinweis | Erkannte externe Agentenkonfigurationen nach Migrationselementtyp. |
external_agent_config.import |
Zähler | Siehe Hinweis | Importierte externe Agentenkonfigurationen nach Migrationselementtyp. |
db.backfill |
Zähler | status |
Ergebnisse der anfänglichen Auffüllung der Statusdatenbank (upserted, failed). |
db.backfill.duration_ms |
Histogramm | status |
Dauer der anfänglichen Auffüllung der Statusdatenbank. |
db.error |
Zähler | stage |
Fehler bei Operationen der Statusdatenbank. |
Die Metriken external_agent_config.detect und external_agent_config.import enthalten migration_type; Skill-Migrationen enthalten außerdem skills_count.
Windows-Sandbox
| Metrik | Typ | Felder | Beschreibung |
|---|---|---|---|
windows_sandbox.setup_success |
Zähler | originator, mode |
Erfolgreiche Einrichtungen der Windows-Sandbox. |
windows_sandbox.setup_failure |
Zähler | originator, mode |
Fehlgeschlagene Einrichtungen der Windows-Sandbox. |
windows_sandbox.setup_duration_ms |
Histogramm | result, originator, mode |
Dauer der Einrichtung der Windows-Sandbox. |
windows_sandbox.elevated_setup_success |
Zähler | Erfolgreiche Einrichtungen der Windows-Sandbox mit erhöhten Rechten. | |
windows_sandbox.elevated_setup_failure |
Zähler | Siehe Hinweis | Fehlgeschlagene Einrichtungen der Windows-Sandbox mit erhöhten Rechten. |
windows_sandbox.elevated_setup_canceled |
Zähler | Siehe Hinweis | Abgebrochene Einrichtungsversuche der Windows-Sandbox mit erhöhten Rechten. |
windows_sandbox.elevated_setup_duration_ms |
Histogramm | result |
Dauer der Sandbox-Einrichtung mit erhöhten Rechten. |
windows_sandbox.elevated_prompt_shown |
Zähler | Aufforderung zur Sandbox-Einrichtung mit erhöhten Rechten angezeigt. | |
windows_sandbox.elevated_prompt_accept |
Zähler | Aufforderung zur Sandbox-Einrichtung mit erhöhten Rechten angenommen. | |
windows_sandbox.elevated_prompt_use_legacy |
Zähler | Benutzer hat in der Aufforderung mit erhöhten Rechten die alte Sandbox gewählt. | |
windows_sandbox.elevated_prompt_quit |
Zähler | Benutzer hat die Aufforderung mit erhöhten Rechten beendet. | |
windows_sandbox.fallback_prompt_shown |
Zähler | Aufforderung zur Fallback-Sandbox angezeigt. | |
windows_sandbox.fallback_retry_elevated |
Zähler | Benutzer hat die Einrichtung mit erhöhten Rechten über die Fallback-Aufforderung erneut versucht. | |
windows_sandbox.fallback_use_legacy |
Zähler | Benutzer hat in der Fallback-Aufforderung die alte Sandbox gewählt. | |
windows_sandbox.fallback_prompt_quit |
Zähler | Benutzer hat die Fallback-Aufforderung beendet. | |
windows_sandbox.legacy_setup_preflight_failed |
Zähler | Siehe Hinweis | Vorabprüfung der alten Windows-Sandbox-Einrichtung fehlgeschlagen. |
windows_sandbox.setup_elevated_sandbox_command |
Zähler | Befehl zur Sandbox-Einrichtung mit erhöhten Rechten aufgerufen. | |
windows_sandbox.createprocessasuserw_failed |
Zähler | error_code, path_kind, exe, level |
Windows-CreateProcessAsUserW-Fehler. |
Die Metriken für Fehler bei der Einrichtung mit erhöhten Berechtigungen umfassen code und message, wenn Details zu Windows-Einrichtungsfehlern verfügbar sind, und können originator umfassen, wenn sie über den gemeinsamen Einrichtungspfad ausgegeben werden. Die Metrik windows_sandbox.legacy_setup_preflight_failed umfasst originator, wenn sie über den gemeinsamen Einrichtungspfad ausgegeben wird; Preflight-Fehler der Ausweichaufforderung enthalten jedoch möglicherweise keine Felder.
Feedback-Steuerelemente
Standardmäßig können Benutzer über lokale Clients Feedback aus /feedback senden. Um die Erfassung von Feedback in der ChatGPT-Desktop-App, der Codex CLI und der IDE-Erweiterung auf einem Rechner zu deaktivieren, aktualisieren Sie Ihre Konfiguration:
[feedback]
enabled = falseWenn die Funktion deaktiviert ist, zeigt /feedback eine entsprechende Meldung an und Codex lehnt die Übermittlung von Feedback ab.
Reasoning-Ereignisse ausblenden oder anzeigen
Wenn Sie störende „Reasoning“-Ausgaben reduzieren möchten (beispielsweise in CI-Protokollen), können Sie diese unterdrücken:
hide_agent_reasoning = trueWenn Sie rohe Reasoning-Inhalte anzeigen möchten, sofern ein Modell diese ausgibt:
show_raw_agent_reasoning = trueAktivieren Sie rohe Reasoning-Inhalte nur, wenn dies für Ihren Workflow akzeptabel ist. Einige Modelle/Anbieter (wie gpt-oss) geben keine rohen Reasoning-Inhalte aus; in diesem Fall hat diese Einstellung keine sichtbare Auswirkung.
Benachrichtigungen
Verwenden Sie notify, um ein externes Programm auszulösen, sobald Codex unterstützte Ereignisse ausgibt (derzeit nur agent-turn-complete). Dies eignet sich für Desktop-Benachrichtigungen, Chat-Webhooks, CI-Aktualisierungen oder beliebige Benachrichtigungen über einen separaten Kanal, die von den integrierten TUI-Benachrichtigungen nicht abgedeckt werden.
notify = ["python3", "/path/to/notify.py"]Beispiel für ein notify.py (gekürzt), das auf agent-turn-complete reagiert:
#!/usr/bin/env python3
import json, subprocess, sys
def main() -> int:
notification = json.loads(sys.argv[1])
if notification.get("type") != "agent-turn-complete":
return 0
title = f"Codex: {notification.get('last-assistant-message', 'Turn Complete!')}"
message = " ".join(notification.get("input-messages", []))
subprocess.check_output([
"terminal-notifier",
"-title", title,
"-message", message,
"-group", "codex-" + notification.get("thread-id", ""),
"-activate", "com.googlecode.iterm2",
])
return 0
if __name__ == "__main__":
sys.exit(main())Das Skript erhält ein einzelnes JSON-Argument. Zu den üblichen Feldern gehören:
type(derzeitagent-turn-complete)thread-id(Sitzungskennung)turn-id(Turn-Kennung)cwd(Arbeitsverzeichnis)input-messages(Benutzernachrichten, die zu diesem Turn geführt haben)last-assistant-message(Text der letzten Assistentennachricht)
Speichern Sie das Skript an einer beliebigen Stelle auf dem Datenträger und verweisen Sie mit notify darauf.
notify im Vergleich zu tui.notifications
notifyführt ein externes Programm aus (geeignet für Webhooks, Desktop-Benachrichtigungsprogramme und CI-Hooks).tui.notificationsist in die TUI integriert und kann optional nach Ereignistyp filtern (beispielsweiseagent-turn-completeundapproval-requested).tui.notification_methodsteuert, wie die TUI Terminalbenachrichtigungen ausgibt (auto,osc9oderbel).tui.notification_conditionsteuert, ob TUI-Benachrichtigungen nur ausgelöst werden, wenn das Terminalunfocusedoderalwaysist.
Im Modus auto bevorzugt Codex OSC-9-Benachrichtigungen (eine Terminal-Escapesequenz, die manche Terminals als Desktop-Benachrichtigung interpretieren) und greift andernfalls auf BEL (\x07) zurück.
Die genauen Schlüssel finden Sie in der Konfigurationsreferenz.
Verlaufspersistenz
Standardmäßig speichert Codex lokale Sitzungstranskripte unter CODEX_HOME (beispielsweise ~/.codex/history.jsonl). So deaktivieren Sie die lokale Verlaufspersistenz:
[history]
persistence = "none"Legen Sie history.max_bytes fest, um die Größe der Verlaufsdatei zu begrenzen. Wenn die Datei den Grenzwert überschreitet, entfernt Codex die ältesten Einträge und komprimiert die Datei, wobei die neuesten Datensätze erhalten bleiben.
[history]
max_bytes = 104857600 # 100 MiBAnklickbare Verweise
Wenn Sie eine Terminal-/Editor-Integration verwenden, die diese Funktion unterstützt, kann Codex Dateiverweise als anklickbare Links darstellen. Konfigurieren Sie file_opener, um das von Codex verwendete URI-Schema auszuwählen:
file_opener = "vscode" # or cursor, windsurf, vscode-insiders, noneBeispiel: Ein Verweis wie /home/user/project/main.py:42 kann in einen anklickbaren vscode://file/...:42-Link umgewandelt werden.
Ermittlung von Projektanweisungen
Codex liest AGENTS.md (und zugehörige Dateien) und nimmt eine begrenzte Menge an Projektanweisungen in den ersten Turn einer Sitzung auf. Zwei Einstellungen steuern dieses Verhalten:
project_doc_max_bytes: wie viel aus jederAGENTS.md-Datei gelesen wirdproject_doc_fallback_filenames: zusätzliche Dateinamen, die ausprobiert werden, wennAGENTS.mdauf einer Verzeichnisebene fehlt
Eine ausführliche Anleitung finden Sie unter Benutzerdefinierte Anweisungen mit AGENTS.md.
Desktop
Die Optionen in diesem Abschnitt gelten nur für die ChatGPT-Desktop-App.
Benutzerdefinierte Datei-Handler hinzufügen
Fügen Sie in Ihrer benutzerspezifischen ~/.codex/config.toml Einträge unter
desktop.custom_file_handlers hinzu, um Dateien in Editoren oder internen Startprogrammen zu öffnen,
die von der ChatGPT-Desktop-App standardmäßig nicht unterstützt werden. Jeder Eintrag fügt den
Menüs Öffnen in der App ein Editorziel hinzu. Die App führt das Ziel auf, wenn
command ein vorhandener absoluter Pfad ist oder über PATH der App aufgelöst werden kann.
Das folgende Beispiel zeigt drei Möglichkeiten, eine Datei an einen Handler zu übergeben:
# Append the opened path directly after the command.
[desktop.custom_file_handlers.vscodium]
label = "VSCodium"
icon = "/Users/you/.codex/icons/vscodium.png"
command = "codium"
# Place fixed arguments before the opened path.
[desktop.custom_file_handlers.textedit]
label = "TextEdit"
icon = "/Users/you/.codex/icons/textedit.png"
command = "/usr/bin/open"
args = ["-a", "TextEdit"]
# Append one JSON argument with the path and editor context.
[desktop.custom_file_handlers.company_editor]
label = "Company Editor"
icon = "/opt/company/editor/icon.png"
command = "/opt/company/bin/editor"
input = "json_argument"Speichern Sie config.toml und starten Sie anschließend die ChatGPT-Desktop-App neu.
Die Handler-ID ist das letzte Segment des TOML-Tabellenkopfs. Sie muss
1–64 Zeichen lang sein, mit einem ASCII-Buchstaben oder einer Ziffer beginnen und darf ansonsten
nur ASCII-Buchstaben, Ziffern, Punkte, Unterstriche oder Bindestriche enthalten. Die App stellt
die ID mit dem Präfix custom: bereit; beispielsweise wird company_editor zu
custom:company_editor. Setzen Sie eine ID, die einen Punkt enthält, in Anführungszeichen, damit TOML sie nicht
als verschachtelte Tabelle interpretiert. Beispiel:
[desktop.custom_file_handlers."company.editor"]
label = "Company Editor"
icon = "/opt/company/editor/icon.png"
command = "/opt/company/bin/editor"Jeder Handler unterstützt die folgenden Felder:
| Feld | Erforderlich | Beschreibung |
|---|---|---|
label |
Ja | Anzeigename in der App. |
icon |
Ja | Mitgeliefertes App-Symbol wie apps/vscode.png, base64-data:image/...-URL, file:-URI oder absoluter lokaler Bildpfad. Bei einer nicht unterstützten Quelle wird das standardmäßige VS Code-Symbol verwendet. |
command |
Ja | Pfad zur ausführbaren Datei oder Befehlsname für Erkennung und Start. |
args |
Nein | String-Array, das zwischen command und der Dateieingabe eingefügt wird. Der Standardwert ist []. |
input |
Nein | Wie die App die Dateieingabe übermittelt: path, json_argument oder json_stdin. Der Standardwert ist path. |
supports_ssh |
Nein | Ob der Handler für Dateien in SSH-Arbeitsbereichen angeboten werden soll. Der Standardwert ist false. Verwenden Sie json_stdin, wenn der Handler Angaben zu Remotehost und Pfad benötigt. |
Der Wert input steuert, was auf args folgt:
pathhängt den Pfad als letztes Befehlsargument an.json_argumenthängt ein JSON-Objekt mittarget,path,appPathundlocationan. Der Wertlocationist ein Objekt mit 1-basierten Werten fürlineundcolumnodernull.json_stdinschreibt das JSON-Objekt in die Standardeingabe, anstatt ein Argument hinzuzufügen. Es enthält außerdemhostConfig,remoteWorkspaceRootundremotePath; diese Felder haben den Wertnull, wenn sie nicht zutreffen.
Beispielsweise kann company_editor dieses Argument erhalten, wenn der Benutzer einen
bestimmten Quellcodeort öffnet:
{
"target": "custom:company_editor",
"path": "/repo/src/index.ts",
"appPath": null,
"location": { "line": 12, "column": 3 }
}Wenn ein benutzerdefinierter Handler als bevorzugter Editor ausgewählt wird, bleibt diese Auswahl auf dieselbe Weise wie bei einem integrierten Editor erhalten, einschließlich projektspezifischer Einstellungen.
TUI-Optionen
Wenn Sie codex ohne Unterbefehl ausführen, wird die interaktive Terminalbenutzeroberfläche (TUI) gestartet. Codex stellt unter [tui] einige TUI-spezifische Konfigurationsoptionen bereit, darunter:
tui.notifications: Benachrichtigungen aktivieren/deaktivieren (oder auf bestimmte Typen beschränken)tui.notification_method:auto,osc9oderbelfür Terminalbenachrichtigungen auswählentui.notification_condition:unfocusedoderalwaysfür den Zeitpunkt auswählen, zu dem Benachrichtigungen ausgelöst werdentui.animations: ASCII-Animationen und Schimmereffekte aktivieren/deaktivierentui.alternate_screen: die Verwendung des alternativen Bildschirmpuffers steuern (aufneversetzen, um den Terminal-Scrollback beizubehalten)tui.show_tooltips: Onboarding-Tooltips auf dem Willkommensbildschirm ein- oder ausblenden
Der Standardwert von tui.notification_method ist auto. Im Modus auto bevorzugt Codex OSC-9-Benachrichtigungen (eine Terminal-Escapesequenz, die manche Terminals als Desktop-Benachrichtigung interpretieren), wenn das Terminal diese offenbar unterstützt, und greift andernfalls auf BEL (\x07) zurück.
Die vollständige Liste der Schlüssel finden Sie in der Konfigurationsreferenz.