Am Ende kann Codex CLI Arbeit, die es nicht selbst erledigen sollte, an eine Session in osFoundry abgeben: eine Agent-Session, eine Team-Session oder einen Loop. Es schickt ein Ziel, eine Zusammenfassung dessen, was es schon weiß, und das Ergebnis, das es zurückhaben will. Der Owner der Session bekommt eine Benachrichtigung und klickt auf Accept and run (annehmen und ausführen) oder Decline (ablehnen). Sobald der Run fertig ist, liest Codex das Ergebnis in derselben Terminal-Session und macht weiter. Gibst du ihm stattdessen einen Runner-Platz, kann es selbst einen begrenzten Run starten, ganz ohne Klick.
Wer macht was
| Codex CLI | osFoundry | |
|---|---|---|
| Login | Dein eigenes Codex-Login. Codex hält das osFoundry-OAuth-Token | Bestätigt die Verbindung einmal, für einen Workspace und die Scopes, die du ankreuzt |
| Worauf es zugreifen kann | Sessions, zu denen es eingeladen wurde, über sieben *_session_*-Tools | Das entscheidet der Platz: Viewer liest, Contributor postet Notizen und schlägt Handoffs vor, Runner kann zusätzlich Runs anfordern |
| Wer die Arbeit macht | Codex arbeitet weiter in deinem Repository | Die Session läuft auf ihrer eigenen Agent-Runtime, mit eigenen Agenten, Tools und Modelleinstellungen |
| Wer freigibt | Codex fragt dich vor jedem schreibenden Tool (default_tools_approval_mode = "writes") | Ein Handoff wartet auf Accept and run vom Session-Owner. Ein Runner-Platz ist die dauerhafte Freigabe für request_session_run |
| Wie lange es läuft | max_rounds 1 bis 10 im Aufruf | Dem Owner angezeigt als "Up to N rounds on your agent runtime" |
| Was zurückkommt | Status und Ergebnis der Tasks, die diese Verbindung gestartet hat, und Notizen an sie | Die interne Agentenanalyse der Session bleibt in osFoundry |
Einrichtung
1. Die Verbindung anlegen
Klick in osFoundry auf das Schlüsselsymbol in der Kopfzeile und öffne den Tab Connected ("Connected agents"). Unter "Connect in three steps" stellst du Assistant auf Other MCP client, gibst einen Anzeigenamen wie Codex CLI ein und klickst auf Add assistant. Der Owner sieht diesen Namen bei jedem Handoff, also nimm einen, den er wiedererkennt.
Beispiel: Der Tab Connected agents mit einer Codex-CLI-Verbindung
2. Den Server zu Codex hinzufügen, mit dem Run-Scope
codex mcp add osfoundry --url https://api.osfoundry.io/api/v1/external-mcp Öffne dann ~/.codex/config.toml und beschränke die Tabelle auf das, was dieser Job braucht:
[mcp_servers.osfoundry] url = "https://api.osfoundry.io/api/v1/external-mcp" scopes = ["osfoundry:read", "osfoundry:write", "osfoundry:run"] default_tools_approval_mode = "writes" enabled_tools = [ "list_granted_resources", "list_project_resources", "read_session_state", "read_session_task_result", "read_session_mail", "post_session_note", "propose_session_handoff", "cancel_session_handoff", "request_session_run", ] osfoundry:run ist der Scope hinter request_session_run. Lass ihn weg, wenn Codex immer nur vorschlagen soll. Die Handoff- und Notiz-Tools brauchen osfoundry:write, die drei lesenden osfoundry:read. Mit "writes" fragt Codex vor den vier Tools nach, die nicht als read-only markiert sind, und führt die lesenden ohne Rückfrage aus.
3. Anmelden
codex mcp login osfoundry Der Browser öffnet die Seite "Connect an agent" von osFoundry. Mit den Scopes oben zeigt "Requested capabilities" drei Zeilen. Die dritte lautet "Run sessions where you grant a runner role". Wähl den Workspace, dann "Use pending: Codex CLI", setz das Häkchen bei der Bestätigung und klick auf Connect.
4. Die Verbindung dem Projekt mit der Session hinzufügen
Zurück im Tab Connected steht bei der Verbindung "Connected." Unter Projects wählst du das Projekt und klickst auf Add to project. Damit sieht die Verbindung die infrage kommenden Sessions des Projekts. In keine davon darf sie bisher schreiben.
Beispiel: Der Bereich Projects mit einem hinzugefügten Projekt
5. Ihr einen Platz in der Session geben
Weiter unten kommt "Agent, Team, and Loop sessions". Die Hilfezeile sagt schon alles: "Invite it to a session as Contributor to post notes and propose handoffs, or Runner to also request runs. A handoff still needs the session owner's approval."
Agent, Team, and Loop sessions [ Team session ▾ ] [ Release desk ▾ ] [ Contributor ▾ ] [ Save role ] Beispiel: Der Bereich Agent, Team, and Loop sessions mit Codex CLI als Contributor in einer Team-Session
Die Liste bietet nur Sessions aus Projekten an, zu denen diese Verbindung hinzugefügt wurde. Wähl Typ, Session und Rolle und klick auf Save role. Fang mit Contributor an. Speicherst du später Runner für dieselbe Session, ersetzt das die Rolle.
Ein echter Run
Auf dem Rechner, auf dem dieser Text entstanden ist, ist Codex nicht installiert, die Session unten ist also ein simuliertes Beispiel. Die Tool- und Argumentnamen sind die, die der Live-Server über tools/list liefert, mit dem Präfix mcp__osfoundry__, das Codex vor MCP-Tools setzt. Repository, Session und alle Werte sind Demo-Inhalte.
Example (simulated) > The CSV export fix is merged. Hand the customer note and the KB update to the osFoundry Release desk team, then tell me what they wrote. • mcp__osfoundry__list_granted_resources {} ← 1 project: "Billing v2" • mcp__osfoundry__list_project_resources {"project_id": "…", "resource_type": "team_session", "search": "release"} ← team_session "Release desk" • mcp__osfoundry__propose_session_handoff { "session_type": "team_session", "session_id": "…", "goal": "Write the customer note for the CSV export fix and update the KB article on exports.", "context_summary": "Exports over 10k rows were cut at 10,000. Fixed in PR #212 (streams rows, no cap). Affects plans with scheduled exports. No data was lost; re-running an export now returns all rows.", "requested_output": "Draft note (<120 words) and the KB article diff, for review.", "max_rounds": 4, "idempotency_key": "codex-csv-212-note"} [Codex asks: allow this tool call? → yes] ← handoff pending owner review (in osFoundry the owner opens "Codex CLI requests a handoff" → Review handoff → Handoffs → Outside assistant requests → Accept and run) • mcp__osfoundry__read_session_state {"session_type": "team_session", "session_id": "…"} ← running, recent task "Requested by an outside assistant" • mcp__osfoundry__read_session_task_result {"session_type": "team_session", "session_id": "…", "task_id": "…"} ← completed: draft note + KB diff • mcp__osfoundry__post_session_note {"session_type": "team_session", "session_id": "…", "subject": "Thanks, one correction", "body": "The fix shipped in 3.18.2, not 3.18.1.", "idempotency_key": "codex-csv-212-fix"} [Codex asks: allow this tool call? → yes] The Release desk drafted a 96-word note and a KB diff that replaces the "exports are capped at 10,000 rows" paragraph. I posted a version correction back to the session. Auf der Owner-Seite geht es schnell. Die Benachrichtigung lautet "Codex CLI requests a handoff" mit "Review the request in Release desk." und einem Button Review handoff. Der öffnet den Tab Handoffs der Session. Unter "Outside assistant requests" steht das Ziel in voller Länge, "Context and expected output" lässt sich aufklappen, und die Zeile "Up to 4 rounds on your agent runtime" zeigt, wie viel der Run tun darf. Accept and run stellt ihn in die Warteschlange ("Handoff accepted and run queued"). Decline beendet ihn.
Beispiel: Die Benachrichtigung Codex CLI requests a handoff mit dem Button Review handoff
Beispiel: Eine offene Anfrage eines externen Assistenten im Handoffs-Tab der Session, mit Accept and run und Decline
Hat Codex das Falsche geschickt, zieht cancel_session_handoff mit der handoff_id es zurück, solange der Owner noch nicht angenommen hat.
Wo die Grenze liegt
Vorschlag und Run sind mit Absicht zwei Tools. propose_session_handoff fragt einen Menschen. Es braucht osfoundry:write, einen Contributor-Platz sowie einen für Menschen lesbaren context_summary und requested_output, und nichts startet, bevor der Owner klickt. request_session_run überspringt den Klick. Es braucht osfoundry:run und einen Runner-Platz, den der Owner vorab vergeben hat, der Klick ist also einmal passiert, als der Platz vergeben wurde. Beide begrenzen max_rounds auf 10. Der Vorschlag begrenzt goal auf 5.000 Zeichen, der Run auf 10.000.
Codex sieht Ergebnisse, keine Überlegungen. read_session_task_result liefert nur Tasks, die diese Verbindung gestartet hat. read_session_mail liefert Notizen an die Verbindung und Notizen, die sie selbst gepostet hat, und in der Tool-Beschreibung steht "Internal agent analysis is excluded." post_session_note fügt eine zugeordnete Notiz hinzu, auf die die Agenten der Session antworten können, und sie "does not trigger an automatic run".
Die Session läuft da, wo sie immer läuft. Ein Handoff bringt weder das Modell noch die Keys noch das Repository von Codex nach osFoundry. Er transportiert Text, und die Session arbeitet mit ihren eigenen Agenten und Tools. Alles, was nur lokal auf dem Desktop existiert, etwa ein lokaler Ordner oder ein nicht synchronisiertes Element, bleibt außer Reichweite. Die initialize-Antwort des Servers sagt das auch: "Local-only data is unavailable to cloud clients."
Den Zugriff zu entziehen ist ein Klick. Entfern den Platz im Tab Connected oder widerruf die Verbindung, und der nächste Session-Aufruf von Codex wird abgelehnt.
Für den ersten Versuch eignet sich ein Loop, den du bisher von Hand startest. Lade Codex CLI als Contributor ein, schließ eine Änderung in deinem Repository ab und bitte Codex, den nächsten Run des Loops mit einer Zusammenfassung der Änderungen vorzuschlagen. Handoffs zeigt, wie die osFoundry-eigenen Agenten Kontext zwischen Schritten weitergeben, und Agent Sessions zeigt, wo der Tab Handoffs sitzt.






