Skip to main content
Glama
AaAndrew233

ChatGPT Codex Bridge

by AaAndrew233

ChatGPT Codex Bridge

简体中文 | Sicherheit | Mitwirken

Eine lokale MCP-Brücke, die es ChatGPT ermöglicht, registrierte Codex-Projekte zu inspizieren, den Codex-Sitzungsverlauf zu lesen und bestätigte Aufgaben an die lokale Codex-CLI zu übermitteln.

[!IMPORTANT] Dies ist ein unabhängiges Community-Projekt. Es ist kein offizielles OpenAI-Produkt und weder mit OpenAI verbunden noch von OpenAI unterstützt. ChatGPT, Codex und OpenAI sind Marken ihrer jeweiligen Inhaber.

Was es tut

  • Erkennt Projekte, die bereits in Codex Desktop registriert sind, ohne Zugriff auf das gesamte Home-Verzeichnis zu gewähren.

  • Führt Analyse und Planung in der schreibgeschützten Codex-Sandbox durch.

  • Erfordert ein kurzlebiges, einmalig verwendbares Bestätigungstoken vor Schreibvorgängen im Arbeitsbereich.

  • Listet und liest sichtbare Codex-Sitzungen mit Cursor-Paginierung und Schwärzung.

  • Unterstützt zeitlich begrenzten, vom Benutzer bestätigten Zugriff auf einzelne projekttlose Sitzungen im Bereich „Recent“ von Codex Desktop.

  • Erstellt begrenzten Projektverlaufskontext, ohne mehrere Gigabyte große Verläufe in den Speicher zu laden.

  • Erstellt und setzt persistente Codex-Desktop-Sitzungen über das lokale Codex-App-Server-Protokoll fort.

  • Übergibt von ChatGPT bereitgestellten Kontext als nicht vertrauenswürdigen Referenztext an Codex, mit Erkennung von Geheimnissen.

  • Verwendet Hintergrundjobs, damit lange Codex-Aufgaben keine MCP-Tunnelanfrage offen halten.

Die Brücke stellt kein beliebiges Shell-Tool bereit und lauscht nicht auf einem öffentlichen Port. Der Fernzugriff erfolgt über den offiziellen OpenAI Secure MCP Tunnel Client.

Related MCP server: ChatGPT MCP Bridge

Architektur

flowchart LR
    A[ChatGPT] -->|MCP connector| B[OpenAI Secure MCP Tunnel]
    B -->|outbound tunnel| C[tunnel-client on your machine]
    C -->|stdio MCP| D[ChatGPT Codex Bridge]
    D -->|sandboxed commands| E[Codex CLI]
    D -->|read-only indexes| F[Codex projects and sessions]
    D -. optional local IPC .-> G[Codex Desktop sidebar refresh]

Der optionale Seitenleisten-Aktualisierungspfad hängt von einer privaten, nicht unterstützten Codex-Desktop-Erweiterung ab und ist nicht in diesem Repository enthalten. Die Kernbrücke funktioniert ohne sie; neu erstellte persistente Sitzungen erfordern möglicherweise einen Neustart von Codex Desktop, bevor sie in der Seitenleiste erscheinen.

Anforderungen

  • macOS oder Linux mit Python 3.11+

  • Eine funktionierende codex-CLI-Installation und Anmeldung

  • Codex Desktop für automatische Projekterkennung und Sitzungsverlaufsfunktionen

  • Homebrew für den dokumentierten Tunnel-Installationspfad

  • OpenAI-Organisationszugriff auf Secure MCP Tunnels

Dieses Projekt wird derzeit auf macOS getestet. Windows wird nicht unterstützt, da der optionale Desktop-Benachrichtigungspfad Unix-Sockets verwendet.

Schnellstart

git clone https://github.com/AaAndrew233/chatgpt-codex-bridge.git
cd chatgpt-codex-bridge
./scripts/bootstrap.sh

bootstrap.sh erstellt eine lokale virtuelle Umgebung, installiert die überprüfte Abhängigkeitssperre und generiert nicht verfolgte config.json- und .mcp.json-Dateien. Es überschreibt niemals vorhandene Konfigurationen.

Öffnen Sie config.json und wählen Sie eine Autorisierungsquelle:

{
  "codex_command": "codex",
  "model": null,
  "codex_project_catalog": "~/.codex/.codex-global-state.json",
  "allowed_roots": [],
  "session_access_ttl_seconds": 3600
}
  • Behalten Sie model als null bei, um Ihre aktuelle Codex-Konfiguration zu übernehmen.

  • Lassen Sie allowed_roots leer, um nur in Codex Desktop registrierte Projekte zu verwenden.

  • Fügen Sie allowed_roots nur dann enge Projektverzeichnisse hinzu, wenn die automatische Erkennung nicht verfügbar ist.

  • session_access_ttl_seconds steuert die Lebensdauer einer genehmigten projekttlosen Sitzungsberechtigung im Speicher und darf 24 Stunden nicht überschreiten.

  • Autorisieren Sie niemals / oder Ihr Home-Verzeichnis. Die Brücke lehnt beides ab.

Führen Sie die lokalen Prüfungen aus:

./scripts/check_public_release.py
.venv/bin/python -m unittest discover -s tests -v

Verbindung über Secure MCP Tunnel

Installieren Sie den offiziellen Client:

brew install openai/tools/tunnel-client
tunnel-client --version
tunnel-client help quickstart

Speichern Sie den Laufzeitschlüssel in einer Datei außerhalb dieses Repositorys und schränken Sie dessen Berechtigungen ein:

chmod 600 /ABSOLUTE/PATH/TO/runtime-key

Erstellen Sie eine verwaltete Hintergrundlaufzeit. Ersetzen Sie alle Platzhalterwerte:

tunnel-client runtimes connect \
  --alias codex-bridge \
  --profile codex-bridge \
  --tunnel-id '<YOUR_TUNNEL_ID>' \
  --runtime-api-key 'file:/ABSOLUTE/PATH/TO/runtime-key' \
  --mcp-command '/ABSOLUTE/PATH/TO/chatgpt-codex-bridge/scripts/run_server.sh'

Überprüfen Sie, ob die verwaltete Laufzeit läuft, fehlerfrei und bereit ist:

tunnel-client runtimes status codex-bridge --json

Erstellen oder aktualisieren Sie dann den Connector in den ChatGPT-Connector-Einstellungen. Der offizielle Tunnel-Onboarding-Leitfaden ist die maßgebliche Quelle für Organisationsrollen, Tunnel-IDs, Laufzeitschlüssel und aktuelle Befehle: openai/tunnel-client/docs/onboarding.md.

Verwenden Sie keinen Admin-Schlüssel für die langlaufende Laufzeit. Committen Sie keine Laufzeitschlüssel, Tunnel-IDs, generierten Profile, config.json oder .mcp.json.

Erster Test in ChatGPT

Starten Sie eine neue ChatGPT-Konversation mit aktiviertem Connector und fragen Sie:

Call codex_status. Show only whether the bridge is healthy, the available tool names,
and the registered project names. Do not modify files.

Testen Sie dann eine schreibgeschützte Aufgabe:

Use codex_analyze on <PROJECT_PATH> to summarize the project structure and identify
the three highest-risk areas. Poll the job until it finishes and retrieve every output page.
Do not modify files.

Für einen Schreibvorgang muss ChatGPT zuerst codex_prepare_apply aufrufen, Ihnen den genauen Plan zeigen, Ihre ausdrückliche Bestätigung einholen und erst dann codex_apply mit dem zurückgegebenen Token aufrufen.

Für eine projekttlose Sitzung unter Recent ruft ChatGPT zuerst codex_list_sessions(include_unassigned=true) auf. Das Ergebnis zeigt nur geschwärzte Seitenleisten-Metadaten. Anschließend muss es codex_prepare_session_access aufrufen, Ihnen den Sitzungstitel, das kanonische Arbeitsverzeichnis, den Zugriffsmodus und gegebenenfalls die genaue Schreibanfrage zeigen und auf ausdrückliche Genehmigung warten. Das zurückgegebene Zugriffstoken aktiviert eine In-Memory-Berechtigung nur für diese Sitzung. Schreibvorgänge im Arbeitsbereich erfordern zusätzlich das Bestätigungstoken für die genaue Anfrage, das von demselben Vorbereitungsaufruf zurückgegeben wird.

MCP-Werkzeuge

Tool

Zweck

Schreibbestätigung

codex_status

Status, Fähigkeiten, Projekte, Jobs und Kompatibilitäts-Snapshot

Nein

codex_list_projects

Autorisierte Codex-Projekte auflisten

Nein

codex_prepare_project_context

Begrenzten, paginierten Projektverlaufskontext erstellen

Nein

codex_analyze

Eine schreibgeschützte Codex-Aufgabe übermitteln

Nein

codex_plan

Eine reine Planungs-Codex-Aufgabe übermitteln

Nein

codex_prepare_apply

Ein kurzlebiges Token für eine genaue Schreibanfrage ausstellen

Nein

codex_apply

Eine Codex-Aufgabe mit Schreibzugriff auf den Arbeitsbereich übermitteln

Ja

codex_job_status

Einen Hintergrundjob abfragen

Nein

codex_job_result

Ein abgeschlossenes Ergebnis mit Ausgabepaginierung lesen

Nein

codex_cancel_job

Einen in der Warteschlange befindlichen oder laufenden Job abbrechen

Nein

codex_list_sessions

Sichtbare Codex-Sitzungen mit Paginierung auflisten

Nein

codex_read_session

Sichtbare Benutzer- und Assistentennachrichten mit Schwärzung lesen

Nein

codex_prepare_session_access

Eine zeitlich begrenzte Berechtigung für eine projekttlose Recent-Sitzung vorbereiten

Benutzerfreigabe

codex_create_desktop_session

Eine persistente Codex-Desktop-Sitzung erstellen

Nur Schreibmodus

codex_continue_desktop_session

Eine persistente Sitzung fortsetzen

Nur Schreibmodus

codex_handoff_chat_context

Eine Sitzung mit explizitem ChatGPT-Kontext erstellen

Nur Schreibmodus

Sicherheitsmodell

Die Vertrauensgrenze ist bewusst eng gefasst:

  • Der Projektzugriff ist auf validierte Codex-Projektwurzeln oder explizite enge Wurzeln beschränkt.

  • Projekttlose Recent-Sitzungen bleiben standardmäßig verborgen und erfordern eine kurzlebige Berechtigung, die an eine Sitzung, ein kanonisches Verzeichnis und einen Modus gebunden ist.

  • Sensible Verzeichnisse wie .ssh, .aws, .gnupg, .kube, .config und Library werden bei der automatischen Erkennung abgelehnt.

  • Codex-Unterprozesse erhalten eine minimale Umgebung und laufen mit expliziten Sandbox-Modi.

  • Schreib-Tokens laufen ab, sind einmalig verwendbar und an das genaue Projekt und die Anfrage gebunden.

  • Die Sitzungsausgabe wird auf für Benutzer sichtbare Nachrichten gefiltert und vor dem Verlassen des Rechners geschwärzt.

  • Anfrage-, Ausgabe-, Scan-, Nebenläufigkeits-, Aufbewahrungs- und Zeitüberschreitungsgrenzen sind begrenzt.

  • ChatGPT-Kontext wird als nicht vertrauenswürdige Eingabe behandelt und kann lokale Richtlinien nicht außer Kraft setzen.

Lesen Sie docs/security-model.md, bevor Sie die Brücke einem Team zugänglich machen. Sicherheitslückenmeldungen sollten SECURITY.md folgen.

Betriebsgrenzen

Standardgrenzen sind in config.example.json dokumentiert und werden beim Start durchgesetzt. Wichtige Standardwerte umfassen zwei gleichzeitige Jobs, eine Aufbewahrung abgeschlossener Jobs von 30 Minuten, eine Sitzungsberechtigung von einer Stunde, eine Anfrageobergrenze von 120.000 Zeichen, paginierte Jobausgabe von 100.000 Zeichen und begrenzte Streaming-Scans für den Projektverlauf.

scan_complete gibt an, ob der konfigurierte Quellscan abgeschlossen ist. context_complete gibt separat an, ob der gesamte gescannte Text in das zurückgegebene Kontextbudget passt. Ein vollständiger Scan ist nicht dasselbe wie ein unbegrenzter Export.

Entwicklung

./scripts/bootstrap.sh
.venv/bin/python -m unittest discover -s tests -v
.venv/bin/python -m compileall -q \
  bridge_core.py conversation_catalog.py desktop_assignment.py \
  desktop_sessions.py project_context.py server.py

Siehe CONTRIBUTING.md für Beitragsregeln und docs/architecture.md für Modulgrenzen.

Lizenz

Apache-Lizenz 2.0. Siehe LICENSE.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables ChatGPT to read and edit local project files, inspect Git changes, and run approved development scripts through a secure MCP tunnel, with optional Codex Desktop integration.
    53 npm
    6
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables ChatGPT to operate authorized local projects through MCP, including reading and modifying code, viewing Git changes, running configured programs, and reading local Codex sessions to continue work.
    63 npm
    6
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables ChatGPT web to read local files, search code, run shell commands, and drive a local Codex CLI via an official MCP connector, with human approval for risky commands and full audit logging.
    MIT