Am Ende hat ein Agent in der Desktop-App von osFoundry cli:codex:agent als Modell. Kommt Arbeit bei ihm an, startet die App codex exec auf deinem Mac, mit deinem eigenen ChatGPT-Login. Der Lauf findet in einem Ordner statt, den du freigegeben hast. Was Codex zurückmeldet, also sein Reasoning, die ausgeführten Befehle und seine abschließende Nachricht, erscheint als Zeilen im osFoundry-Lauf. Ein OpenAI-API-Key kommt dabei an keiner Stelle vor.
Wer macht was
| Codex CLI | osFoundry | |
|---|---|---|
| Login | Eigener ChatGPT-Login (codex login), von Codex gespeichert | Sieht ihn nie. Entfernt CODEX_API_KEY, OPENAI_API_KEY und OPENAI_BASE_URL aus der Umgebung des Kindprozesses, damit der Lauf im Abo bleibt |
| Modellaufrufe | Gehen direkt vom codex-Prozess an OpenAI | Verbucht die Kosten als 0.0 (Abo, nicht nutzungsabhängig) |
| Tools | Eigene Shell und eigene Dateiänderungen, innerhalb des Arbeitsordners | Eigene Tools (zum Beispiel memory_search), bereitgestellt über eine Loopback-MCP-Bridge auf 127.0.0.1, nur wenn ein Git-Worktree den Lauf isoliert |
| Freigaben | Keine während des Laufs: exec ist nicht interaktiv, approval_policy="never" | Jeder Tool-Aufruf über die Bridge läuft durch orchestrator::execute_tool und dessen Policy-Gates |
| Ausgabe | Ein JSON-Event pro abgeschlossenem Item auf stdout (--json) | Macht aus jedem Event eine Fortschrittszeile oder Antworttext; behält das Ende von stderr für Fehlermeldungen |
| Deine Dateien | Werden im Ordner oder Worktree gelesen und geschrieben | Wählt den Ordner: das Repository der Code-Oberfläche, sonst deinen ersten freigegebenen lokalen Ordner |
Einrichtung
- Installier Codex CLI und meld dich einmal an. osFoundry sucht das Binary im
PATH, in~/.codex/binund in/Applications/Codex.app(die Cask-Installation legt es unterContents/Resources/codexab, wowhich codexnichts findet).
codex login - Öffne das Schlüsselsymbol in der Kopfzeile (der Tooltip lautet API Keys (BYOK)) und wechsle in den Tab External AI (externe KI). Die Codex-Zeile zeigt Installed, ein Badge No live stream und die ID des autonomen Modells. Codex hat keine Chat-ID, deshalb erscheint nur eine ID:
Codex Installed No live stream Enabled cli:codex:agent (autonomous) osFoundry tools require git-worktree isolation for Codex (it trades its own sandbox for git safety). Point it at a git repo folder. Beispiel: Claude Code und Codex im Tab External AI
Wenn du noch nicht angemeldet bist, öffnet der Button Sign in ein Terminal, das codex login ausführt.
- Klick auf Verify sign-in (Anmeldung prüfen). Das schickt eine winzige Completion durch denselben Builder, den auch die echten Läufe verwenden:
codex exec "Reply with the single word: ok" \ --json --skip-git-repo-check --ignore-user-config --ignore-rules \ -s read-only -c 'approval_policy="never"' --ignore-rules wird nur angehängt, wenn codex exec --help es aufführt. osFoundry fragt das Binary, weil ältere Builds das Flag ablehnen und dann der ganze Lauf fehlschlägt.
Gib dem Agenten einen Ordner. Füg unter Settings → Local Folders einen hinzu. Soll Codex auch an die eigenen Tools von osFoundry herankommen, mach aus diesem Ordner ein Git-Repository und klick auf der Code-Oberfläche auf Enable for this workspace. Danach bekommt jeder Lauf einen eigenen Branch und eine eigene Arbeitskopie.
Öffne den Agenten in Studio und setz Model Preference. Die Auswahl listet Codex im Abschnitt CLI agents als
cli:codex:agent(Provider "External AI (subscription)"). Stell Runtime Role aufworker, wenn der Agent Worker-Schritte übernehmen soll.
Wird Arbeit übergeben, sieht der Befehl so aus. Ohne Worktree bleibt die eigene Sandbox von Codex erhalten:
codex exec "<system prompt> User: <task>" \ --json --skip-git-repo-check --ignore-user-config --ignore-rules \ -C /path/to/folder -s workspace-write -c 'approval_policy="never"' Mit Worktree wird das Sandbox-Flag ersetzt und die Bridge angehängt:
codex exec "<system prompt> User: <task>" \ --json --skip-git-repo-check --ignore-user-config --ignore-rules \ -C /path/to/worktree \ --dangerously-bypass-approvals-and-sandbox \ -c 'mcp_servers.osfoundry.url="http://127.0.0.1:<port>/mcp"' \ -c 'mcp_servers.osfoundry.http_headers={Authorization="Bearer <per-run token>"}' Codex hat kein Flag, um einen System-Prompt hinzuzufügen. Deshalb setzt osFoundry den System-Prompt des Agenten vor die Unterhaltung, getrennt durch eine Leerzeile. Die früheren Turns folgen als User:-/Assistant:-Transkript.
Ein Lauf
Beispiel. Das sind die Event-Zeilen, die Codex schreibt, und die Zeilen, die osFoundry daraus rendert. Der Text dient nur der Illustration, aber die Event-Typen und Zeilenformate sind genau die, die der Code abbildet.
$ codex exec … --json {"type":"item.completed","item":{"type":"reasoning","text":"Check what the tests cover first."}} {"type":"item.completed","item":{"type":"mcp_tool_call","server":"osfoundry","tool":"memory_search"}} {"type":"item.completed","item":{"type":"command_execution","command":"npm test"}} {"type":"item.completed","item":{"type":"file_change","path":"src/date.ts","change":"edit"}} {"type":"item.completed","item":{"type":"agent_message","text":"Fixed the off-by-one in parseRange; 42 tests pass."}} {"type":"turn.completed","usage":{"input_tokens":…,"cached_input_tokens":…,"output_tokens":…}} osFoundry run Thinking: Check what the tests cover first. Using memory_search… Using shell — npm test Edited src/date.ts Fixed the off-by-one in parseRange; 42 tests pass. Codex benennt ein Bridge-Tool über zwei Felder, server und tool, deshalb zeigt die Zeile memory_search ohne das Präfix mcp__osfoundry__. Die Antwort kommt als vollständige agent_message-Items an, nicht als Tokens. Die Fortschrittszeilen erscheinen nacheinander, während Codex noch arbeitet. Der Text jeder Nachricht erscheint erst, wenn Codex diese Nachricht fertig hat. Die Token-Zahlen stammen aus turn.completed, wo input_tokens den gecachten Teil nicht enthält. osFoundry addiert deshalb cached_input_tokens wieder hinzu, um die Kontextgröße zu bekommen.
Wo die Grenze verläuft
Einen Chat-Modus cli:codex gibt es nicht. Die Konfiguration von Codex hat keinen Schalter, der das Shell-Tool abschaltet, also wäre eine "Completion ohne Tools" über Codex trotzdem ein Agent mit Shell. osFoundry lehnt die Chat-ID ab, statt das stillschweigend laufen zu lassen: "codex has no tool-less chat mode — use 'cli:codex:agent' for an autonomous run instead."
-s ist eine Sandbox für Dateisystem und Befehle. workspace-write begrenzt, wo Codex schreiben darf und was seine Befehle tun können. Es begrenzt nicht, welche Tools das Modell aufrufen darf, und Codex hat nichts Vergleichbares zu --disallowedTools. Deshalb weist das Sheet Add agent beim Hinzufügen von Codex zu einem Channel darauf hin, dass sich auf diesem Harness kein Tool-Scope durchsetzen lässt.
Die Tools von osFoundry brauchen den Worktree. Im nicht interaktiven exec bricht Codex jeden MCP-Tool-Aufruf ab, sofern nicht Freigaben und Sandbox beide umgangen werden. Freigabemodi pro Tool, vertrauenswürdige Projekte und approval_policy="never" brechen trotzdem ab. Also geht die App genau einen Tausch ein: Sie gibt die OS-Sandbox von Codex nur auf, wenn Git-Isolation an ihre Stelle tritt. Ohne Worktree behält der Lauf -s workspace-write, die Bridge wird nicht angehängt, und eine Zeile im Lauf weist darauf hin.
Dein eigenes Codex-Setup bleibt außen vor. --ignore-user-config überspringt ~/.codex/config.toml, sodass MCP-Server, die du für dich selbst eingerichtet hast, nicht in einen osFoundry-Lauf geraten. Die Authentifizierung wird weiterhin aus CODEX_HOME geladen. --ignore-rules hält außerdem .rules-Execpolicy-Dateien heraus.
Jeder Lauf hat eine Obergrenze in Echtzeit: 1.800 Sekunden für einen autonomen Lauf, 300 Sekunden für die Anmeldeprüfung. Ist die Zeit abgelaufen, wird der Kindprozess verworfen und beendet.
Als Nächstes
Richte den Agenten auf ein kleines Git-Repository, aktivier Code-Agenten für den Workspace und gib ihm eine Aufgabe, die sowohl einen Shell-Befehl als auch etwas aus dem Gedächtnis von osFoundry braucht. So siehst du Using shell und Using memory_search… im selben Lauf auftauchen. Die Seite zu Studio-Agenten zeigt, wo Model Preference sitzt, und den Desktop-Build gibt es auf der Download-Seite.
