
Wie man eine Claude Code-Sitzung aufzeichnet – und jeden anderen Agenten, der nicht kooperieren will: Ein praktischer Feldführer
- openaiNEUOpenAI: GPT-6 Astra2026-09-0455Intelligenz77Coding
- googleNEUGoogle: Gemini 3.8 Flash2026-09-0247Intelligenz76Coding
- qwenNEUQwen: Qwen3.8 Max (0902)2026-09-0247Intelligenz72Coding
- anthropicNEUAnthropic: Claude Fable 5.12026-09-0157Intelligenz82Coding
- AlibabaNEUQwen: Qwen3.8 Flash2026-08-26$0.15 / $0.47 pro 1 Mio. Tokens
- z-aiNEUZ.ai: GLM 5.3 Flash2026-08-2646Intelligenz72Coding
- DeepSeekDeepSeek: DeepSeek V4 Flash Vision (Exp)2026-08-21$0.15 / $0.29 pro 1 Mio. Tokens
- z-aiZ.ai: GLM 5.32026-08-1849Intelligenz75Coding
- obsidianQwen3.8 27B2026-08-1541Intelligenz68Coding
- qwenQwen: Qwen3.8 27B (free)2026-08-13qwen/qwen3.8-27b-free
- deepseekDeepSeek: DeepSeek V4 Pro 08132026-08-1242Intelligenz69Coding
- grokSpaceXAI: Grok 4.62026-08-1251Intelligenz77Coding
- metaMeta: Muse Spark 1.22026-08-0547Intelligenz72Coding
- qwenQwen: Qwen3.8 Max2026-08-0347Intelligenz72Coding
- deepseekDeepSeek: DeepSeek V4 Flash 07312026-07-3141Intelligenz69Coding
- minimaxMiniMax: MiniMax-H32026-07-31minimax/minimax-h3
- qwenQwen: Qwen3.7 Flash2026-07-27$0.03 / $0.13 pro 1 Mio. Tokens
- orcaOrcaDub: OrcaDub 1.02026-07-27orca/dub
- anthropicAnthropic: Claude Opus 52026-07-2454Intelligenz78Coding
- googleGoogle: Gemini 3.6 Flash2026-07-2140Intelligenz69Coding
Ja: Sie können heute eine Claude-Code-Sitzung aufzeichnen, und was Sie erhalten, ist das Ganze (jede Modellrunde, jeder Tool-Aufruf, jede Datei, die der Agent berührt hat) in einer Form, die Sie erneut abspielen können. Das ist die Kurzfassung, und sie gilt heute. Die Langfassung ist, dass die Aufzeichnungsfähigkeit pro Harness durch zwei Fragen entschieden wird: Kann das Harness auf einen Proxy gerichtet werden, und wird sein Drahtformat verstanden, sobald der Datenverkehr ankommt? Claude Code besteht beide Fragen, und das Gleiche gilt für eine Codex-CLI, die mit einem API-Schlüssel angemeldet ist. Ein Agent mit einer fest im Quellcode verdrahteten Provider-URL, ein Agent, der in einem Container oder auf einer VPS läuft, und ein Harness, das mit einem Abonnement angemeldet ist, gehen jeweils einen anderen Weg, und einer von ihnen kommt heute nicht an.
Was sich geändert hat: Diese Agenten sind keine Demos mehr. Sie sitzen mit Shell-Zugriff in deinem Repository, bearbeiten Dateien, führen die Testsuite aus und eröffnen Pull Requests. Wenn einer von ihnen etwas tut, das du nicht erwartet hast – ob er die falsche Datei löscht, denselben fehlschlagenden Test in einer Schleife ausführt oder einen Nachmittag Rechenzeit verbrennt –, ist der Scrollback des Terminals kein Beweis. Er ist eine Darstellung, und zwar eine unvollständige.
Was du brauchst, ist der Mitschnitt: was tatsächlich an das Modell gesendet wurde, was tatsächlich zurückkam und was der Agent zwischen den Turns getan hat. Dieser Mitschnitt ist auch der Anfang einer Eval-Suite, denn eine aufgezeichnete Sitzung ist ein Regressionstest, den du gegen das nächste Modell oder den nächsten Prompt erneut abspielen kannst. Der Haken ist, dass jedes Framework davon ausgeht, dass es direkt mit seinem Provider spricht, und fast keines davon macht es leicht, das zu ändern.
Was entscheidet darüber, ob ein Harness aufgezeichnet werden kann?
Jede „Kannst du es aufnehmen?“-Frage läuft auf dieselben zwei Fragen hinaus.
Das Erste: Kann das Harness auf einen Proxy ausgerichtet werden? Vier Wege decken das ab, in absteigender Reihenfolge der Bequemlichkeit.
• Die base-URL-Variable. Die dafür erstellte Route: Die Harness liest eine base-URL-Umgebungsvariable aus, und Sie legen diese fest.
• Den Harness selbst starten. Ein Kindprozess erbt die Umgebung seines Elternprozesses, sodass auch ein Gateway erfasst wird, das einen Coding-Agenten startet, ohne dass der Agent kooperieren muss.
• TLS-Interception.Bei den Harnesses, die überhaupt keine Konfiguration lesen, startet der Recorder den Agenten und Sie aktivieren die Interception.
• Anhängen. Wenn der Agent an einem Ort läuft, an dem der Recorder ihn nicht starten kann, bleibt nur das Anhängen.
Wenn keiner dieser Fälle zutrifft, erreicht der Datenverkehr den Rekorder nie und es gibt nichts zu besprechen.
Zweitens: Sobald Datenverkehr ankommt – wird sein Übertragungsformat verstanden? Bytes zu erfassen ist nicht das Produkt. Der Recorder muss das Gespräch erkennen, an dessen Stelle er steht, einschließlich der Tool-Call-Formen, der Streaming-Frames und der Wiederholungsversuche; andernfalls ist die Aufzeichnung ein pcap, kein Replay. Ein Format, das der Recorder versteht, erzeugt eine Session, die man abspielen kann; ein privater Dialekt erzeugt einen Mitschnitt, den man nur anstarren kann.
Die Antwort fällt je nach Harness unterschiedlich aus, und zwar in Details, bei denen man sich leicht vertut: Es ist dieselbe Lektion, die sich ergibt, wenn man vergleicht, wie sich das DeepSeek-Harness von Claude Code unterscheidet. Der Rest dieses Artikels zeigt, wie die beiden Fragen aussehen, wenn man die Harnesses tatsächlich ausführt.

Claude Code, die Codex CLI und das Agents SDK
Claude Code ist der Maßstab, an dem alles andere gemessen wird, denn es liest ANTHROPIC_BASE_URL. Setzen Sie diese Variable auf den Recorder, starten Sie den Agenten, und die Sitzung kommt Zug um Zug an: die Prompts, die Tool-Aufrufe, die Dateibearbeitungen und dazwischen die Antworten des Modells. Wir haben es Ende-zu-Ende anhand eines echten Bugfixes validiert (mit einem echten Repository, einem echten Fehler und einer Sitzung, die vom ersten Prompt bis zum funktionierenden Fix läuft), und dieser erste echte Agent hat vier Probleme verursacht, die kein Test-Fixture erzeugt hatte. Alle vier sind inzwischen behoben, was die ehrliche Art ist zu sagen, dass synthetischer Datenverkehr Sie nicht auf das vorbereitet, was ein echter Agent tut, wenn er allein mit einer Codebasis gelassen wird.
Für den Codex CLI, der mit einem API-Schlüssel angemeldet ist, gilt dasselbe über die Umgebungsvariable OPENAI_BASE_URL. Richten Sie ihn auf den Recorder aus, und Sie erhalten die Sitzung; nichts anderes ändert sich daran, wie Sie die Testumgebung verwenden.
Programmatische Agenten erben den einfachsten Weg überhaupt. Ein Kindprozess erbt die Umgebung seines Elternprozesses, also wird auch ein Gateway, das einen Coding-Agenten startet, ohne dessen Zutun erfasst. Setzen Sie die base-URL-Variable einmal in dem Prozess, der das Starten übernimmt, und jeder Agent, den er startet, gelangt von selbst zum Recorder. Wenn Sie Agenten aus CI, von einem Orchestrator oder über das Agents SDK ausführen, sind Sie bereits auf diesem Weg.
Der Recorder ist in all diesen Fällen OrcaReplay. Er installiert sich mit npm i -g orcareplay, benötigt Node 20 oder höher und hat keine nativen Abhängigkeiten: nichts zu kompilieren, nichts zu bauen. Er erfasst denselben Agent-Traffic, den OrcaRouter über OrcaRouters Modellkatalog routet.

Ein Agent, der keine Basis-URL-Variable liest.
Manche Harnesses verdrahten die Provider-URL fest in ihrem Quellcode. Keine Umgebungsvariable, keine Konfigurationsdatei, kein Flag. Das Setzen von ANTHROPIC_BASE_URL bewirkt nichts, weil nichts es ausliest. Wenn der Recorder den Agenten starten kann, gibt es dennoch einen Weg, und zwar den, der den meisten Sorgen bereitet: TLS-Interception.
Sich dafür zu entscheiden ist genau das: ein Opt-in; es ist standardmäßig deaktiviert. Wenn Sie es für einen Lauf aktivieren, erzeugt der Recorder eine für diesen Lauf eindeutige Zertifizierungsstelle, und dieser Stelle vertraut nur der Agent, den der Recorder startet: Sie wird an genau diesen einen Prozess übergeben, nicht in Ihrem System-Schlüsselbund installiert und nicht für den nächsten Lauf zurückgelassen. Wenn der Lauf endet, wird die Zertifizierungsstelle gelöscht. Der Agent verbindet sich genau wie immer mit seinem fest codierten Host; der Recorder antwortet, und die Sitzung kommt so zustande, als ob die URL die ganze Zeit über konfigurierbar gewesen wäre.
Was die Route bewusst ablehnt, ist genauso wichtig wie das, was sie tut. Sie liest die Hosts auf ihrer Zulassungsliste und sonst nichts. Hosts außerhalb der Zulassungsliste werden ungelesen getunnelt und als Adresse und Byteanzahl aufgezeichnet: ein Beweis, dass der Agent etwas kontaktiert hat, aber kein einziges Byte von dem, was gesagt wurde. Diese Grenze ist eine Designentscheidung, keine Einschränkung, die wir noch nicht behoben haben; dieselbe Disziplin zieht sich durch die Agent-Firewall von OrcaRouter, bei der die Zulassungsliste das Produkt und kein Nebeneffekt der Aufzeichnung ist.

Der Haken ist derselbe wie bei der ersten Frage: Das Abfangen funktioniert, wenn der Recorder den Agenten startet. Ein Agent, der bereits in einem Container läuft, hat die Zertifizierungsstelle dieses Laufs nie erhalten und wird der Antwort des Recorders nicht vertrauen.
Ein Agent, der sich nicht auf dieser Maschine befindet.
Ein Container hat seine eigene Umgebung. Die Basis-URL-Variable, die Sie in Ihrer Shell festlegen, dringt nicht in ihn ein, und ein Rekorder auf dem Host kann keinen Prozess starten, der bereits woanders existiert: auf einem VPS, in CI, in einer Sandbox, die das Harness aufgebaut hat, ohne Sie zu fragen. Die startbasierte Erfassung scheitert hier nicht, weil der Agent sich schwierig verhält, sondern weil der Rekorder niemals die Möglichkeit bekommt, ihn anzufassen.
Genau für diesen Fall gibt es orca attach: Es zeichnet einen Agenten auf, den der Recorder nicht starten kann, etwa einen in einem Container oder auf einem VPS. Die Richtung kehrt sich um: Anstatt den Agenten zu starten und ihm eine Umgebung zu übergeben, hängt sich der Recorder an einen bereits laufenden Agenten an und zeichnet ihn auf.
Was das Anbinden nicht tut, ist, dir die zweite Frage zu beantworten. Es löst den Transport des Datenverkehrs zum Recorder; ob aus diesem Verkehr eine Session wird, die du wiedergeben kannst, hängt weiterhin davon ab, ob das Übertragungsformat verstanden wird. Binde einen Agenten an, der ein Format spricht, das der Recorder kennt, und du bekommst eine wiedergebbare Session. Binde einen an, der das nicht tut, und du hast die Mauer gefunden – die ist absichtlich billiger zu finden als mitten in einem Vorfall.
Was ändert sich durch eine Abonnement-Anmeldung?
Dieselbe Binärdatei kann aufgezeichnet werden oder auch nicht, je nachdem, wie sie angemeldet ist. Eine Codex-CLI, die mit einem API-Schlüssel angemeldet ist, wird über OPENAI_BASE_URL aufgezeichnet: Richte sie auf den Recorder, und schon bist du fertig. Meldest du dieselbe CLI mit einem ChatGPT-Abonnement an, spricht sie überhaupt nicht mehr mit diesem Endpunkt; sie spricht mit ihrem eigenen Backend, als du authentifiziert, und es gibt keinen Ursprung, der umgeschrieben werden könnte. Die base-URL-Variable existiert weiterhin, aber nichts, worauf du sie richtest, wird zu dem Dienst, den das Testsystem tatsächlich nutzt.
Dies ist die zweite Frage, die fehlschlägt, nicht die erste. Die Bytes können dazu gebracht werden, sich zu bewegen; der Recorder kann sie sogar sehen. Aber das Gespräch ist an ein Backend gerichtet, für das der Recorder nicht einspringen kann, in einem Ablauf, der nicht die API ist, die der Recorder spricht. Es gibt kein Replay zu erzeugen, weil es keinen Ursprung gibt, zu dem der Recorder werden kann.
Die ehrliche Antwort für ein per Abonnement angemeldetes Harness ist heute, dass es nicht aufzeichnungsfähig ist, und die nützliche Lehre daraus ist, dass die Anmeldemethode Teil der Entscheidung zur Aufzeichnungsfähigkeit ist. Wenn Sie Aufzeichnungen für Evals oder für einen Audit-Trail benötigen, führen Sie die aufgezeichneten Sitzungen mit einem API-Schlüssel aus und behalten Sie das Abonnement für interaktive Arbeit — wie man eine aufgezeichnete Sitzung in ein Regressions-Eval verwandelt, deckt diesen Ablauf von Anfang bis Ende ab. Und bevor Sie sich für ein Harness als Standard entscheiden, stellen Sie ihm zuerst die beiden Fragen; wir gehen bei jedem Harness genau so vor, zuletzt mit dem Prime Agent Harness.
Das Fazit
Sie können heute eine Claude Code-Sitzung mit einem Befehl und einer Umgebungsvariable aufzeichnen:
• npm i -g orcareplay
• Richten Sie ANTHROPIC_BASE_URL auf den Rekorder
• Führe den Agenten aus
Eine Codex-CLI mit einem API-Schlüssel ist genauso weit entfernt. Eine hartcodierte URL kostet dich ein Opt-in zur TLS-Interception, die nur ihre Allowlist liest (dieselbe Disziplin, die von OrcaRouters Agenten-Firewall durchgesetzt wird) und ihre eigenen Zertifikate vergisst, wenn der Lauf endet. Ein Container oder ein VPS kostet dich orca attach. Ein Abonnement-Login kostet dich die Aufzeichnung selbst: Dieses Harness wird nicht aufgezeichnet, und es gibt keine Konfigurationsänderungen, die das heute ändern könnten.
Die gesamte Entscheidung auf einen Blick:
• Claude Code — API-Schlüssel für die Anmeldung vs. Route zum Recorder ANTHROPIC_BASE_URL vs. heute aufzeichenbar: Ja
• Codex CLI — API-Schlüssel für die Anmeldung vs. Route zum Recorder OPENAI_BASE_URL vs. Aufzeichnung heute möglich: Ja
• Harness mit hartcodierter Provider-URL — Anmeldung: Beliebig vs. Weiterleitung an den Recorder; Opt-in-TLS-Interception, vom Recorder gestartet, vs. heute aufzeichenbar: Ja
• Agent in einem Container oder auf einem VPS — Beliebige Anmeldung vs. Weiterleitung an den Recorder orca attach vs. heute aufzeichenbar: ja, wenn das Wire-Format bekannt ist
• Codex CLI — Anmeldung: ChatGPT-Abonnement vs. Route zum Rekorder: Keine vs. Heute aufzeichenbar: Nein
Die letzte Zeile ist die einzige Kombination ohne jegliche Verbindung zum Rekorder.
Stell die beiden Fragen, bevor du ein Harness einführst, nicht erst nach deinem ersten Vorfall; die Antworten sind leicht zu bekommen, und sie entscheiden, ob die Session, die du eines Tages dringend brauchen wirst, überhaupt existiert.
Quellenhinweis: Jedes Verhalten und jede Zahl in diesem Artikel (die `ANTHROPIC_BASE_URL`- und `OPENAI_BASE_URL`-Erfassungspfade, die vier Beschädigungen nach der Fixture-Erstellung und deren Behebungen, der TLS-Zertifikatslebenszyklus, das Allowlist-und-Tunnel-Verhalten, `orca attach` sowie die Installationsanforderungen) stammen aus unseren eigenen Validierungsläufen gegen die genannten Harnesses, zuletzt am 04.09.2026. Wir zitieren keine Benchmarks von Drittanbietern, da wir keine durchgeführt haben.
