Een spoelbandrecorder laat een gloeiend lint van code in een geopende laptop stromen onder een enkele rode opnamelamp.
Guides & Insights

Hoe neem je een Claude Code-sessie op, en elke andere agent die niet wil meewerken: een praktische veldgids

Auteur

Gideon Frost

Publicatiedatum

Nieuwste modellen · 20Bekijk alle modellen
Benchmarks: Artificial Analysis · dagelijks bijgewerkt
Terug naar alle berichten

Ja: je kunt vandaag een Claude Code-sessie opnemen, en wat je krijgt is het geheel (elke modelbeurt, elke tool-aanroep, elk bestand dat de agent heeft aangeraakt) in een vorm die je kunt afspelen. Dat is de korte versie, en die klopt vandaag. De langere versie is dat opneembaarheid per harness wordt bepaald door twee vragen: kan de harness op een proxy worden gericht, en wordt het wire-formaat begrepen zodra het verkeer aankomt. Claude Code doorstaat beide, en dat geldt ook voor een Codex CLI die is aangemeld met een API-sleutel. Een agent met de provider-URL hardcoded in zijn broncode, een agent die in een container of op een VPS draait, en een harness die is aangemeld met een abonnement volgen elk een ander pad, en één daarvan komt vandaag niet aan.

Wat er veranderd is, is dat deze agenten geen demo's meer zijn. Ze zitten in je repository met shell-toegang, bewerken bestanden, draaien de testsuite en openen pull requests. Wanneer een van hen iets doet dat je niet had verwacht — of dat nu het verwijderen van het verkeerde bestand is, het blijven herhalen van dezelfde mislukte test, of het verbranden van een middag rekentijd — dan is de scrollback van de terminal geen bewijs. Het is een weergave, en dan nog een onvolledige.

Wat je nodig hebt is het verkeer over de lijn: wat er daadwerkelijk naar het model is gestuurd, wat er werkelijk terugkwam, en wat de agent tussen de beurten door deed. Die vastlegging is ook het begin van een eval-suite, want een vastgelegde sessie is een regressietest die je opnieuw kunt afspelen tegen het volgende model of de volgende prompt. Het addertje onder het gras is dat elke harness ervan uitgaat dat hij rechtstreeks met zijn provider communiceert, en bijna geen enkele daarvan maakt dat makkelijk te wijzigen.

Wat bepaalt of een harness kan worden opgenomen?

Elke 'kun-je-het-opnemen'-vraag komt neer op dezelfde twee vragen.

De eerste: kan het testharnas naar een proxy worden gericht? Vier routes bestrijken dit, in aflopende volgorde van gemak.

De base-URL-variabele. De route die hiervoor is gebouwd: de harness leest een omgevingsvariabele met de base-URL, en die stel jij in.

De harness zelf opstarten. Een kindproces erft de omgeving van zijn ouderproces, dus een gateway die een coding agent opstart, wordt ook vastgelegd, zonder medewerking van de agent.

TLS-interceptie. Voor de harnesses die helemaal geen configuratie lezen, start de recorder de agent en kies je zelf voor interceptie.

Koppelen. Wanneer de agent ergens draait waar de recorder hem niet kan starten, blijft alleen koppelen over.

Als geen van die gevallen van toepassing is, bereikt het verkeer de recorder nooit en valt er niets te bespreken.

De tweede: zodra het verkeer aankomt, wordt het wireformaat ervan begrepen? Het vastleggen van bytes is niet het product. De recorder moet het gesprek herkennen waarvoor hij in de plaats treedt, inclusief de tool-call-vormen, de streamingframes en de retries; anders is de opname een pcap, geen replay. Een formaat dat de recorder begrijpt, levert een sessie op die je kunt afspelen; een privédialect levert een capture op waar je alleen maar naar kunt staren.

Het antwoord verschilt per harness, en het verschilt in details die makkelijk fout kunnen gaan: het is dezelfde les die voortkwam uit het vergelijken van hoe de DeepSeek-harness van Claude Code verschilt. De rest van dit artikel laat zien hoe de twee vragen eruitzien wanneer je de harnesses daadwerkelijk uitvoert.

A three-card decision diagram running from "Pointed at a proxy?" through "Wire format known?" to a "Recordable" badge.

Claude Code, de Codex CLI en de Agents SDK

Claude Code is de maatstaf waaraan al het andere wordt afgemeten, want het leest ANTHROPIC_BASE_URL. Stel die variabele in op de recorder, start de agent, en de sessie komt beurt voor beurt binnen: de prompts, de toolaanroepen, de bestandswijzigingen, de antwoorden van het model daartussen. We hebben het end-to-end gevalideerd met een echte bugfix (een echte repository, een echt defect, een sessie die van de eerste prompt tot de werkende oplossing loopt), en die eerste echte agent brak vier dingen die geen enkele testopzet had opgeleverd. Alle vier zijn sindsdien verholpen, wat de eerlijke manier is om te zeggen dat synthetisch verkeer je niet voorbereidt op wat een echte agent doet wanneer hij alleen wordt gelaten met een codebase.

De Codex CLI, aangemeld met een API-sleutel, is hetzelfde verhaal via OPENAI_BASE_URL. Wijs hem naar de recorder en je krijgt de sessie; verder verandert er niets aan hoe je de harness gebruikt.

Programmatische agents erven de gemakkelijkste route van allemaal. Een subproces erft de omgeving van het bovenliggende proces, dus een gateway die een codeeragent start, wordt ook vastgelegd, zonder medewerking van de agent. Stel de base-URL-variabele één keer in in het proces dat het spawnen verzorgt, en elke agent die door dat proces wordt gelanceerd, komt vanzelf bij de recorder terecht. Als je agents draait vanuit CI, vanuit een orchestrator, of via de Agents SDK, is dit het pad dat je al bewandelt.

In al deze gevallen is de recorder OrcaReplay. Het installeert met npm i -g orcareplay, heeft Node 20 of hoger nodig, en heeft geen native afhankelijkheden: niets te compileren, niets te bouwen. Het registreert hetzelfde agentverkeer: OrcaRouter routeert het via de modelcatalogus van OrcaRouter.

The OrcaReplay GitHub repository page with its README showing the npm i -g orcareplay installation command.

Een agent die geen basis-URL-variabele leest.

Sommige harnesses hardcoden de provider-URL in hun broncode. Geen omgevingsvariabele, geen configuratiebestand, geen vlag. Het instellen van ANTHROPIC_BASE_URL doet niets, omdat niets het leest. Als de recorder de agent kan starten, is er nog een route, en dat is de route waar mensen zich het meest zorgen over maken: TLS-interceptie.

Opt-in is precies dat: een opt-in; het is standaard uitgeschakeld. Wanneer u het voor een run inschakelt, creëert de recorder een certificaatautoriteit die uniek is voor die run, en die autoriteit wordt alleen vertrouwd door de agent die de recorder start: deze wordt aan dat ene proces overgedragen, niet geïnstalleerd in uw systeem-sleutelhanger, en blijft niet achter voor de volgende run. Wanneer de run eindigt, wordt de autoriteit verwijderd. De agent verbindt zich met zijn hardcoded host precies zoals het altijd deed; de recorder antwoordt, en de sessie komt tot stand alsof de URL al die tijd configureerbaar was geweest.

Wat de route bewust weigert te doen, is even belangrijk als wat hij wél doet. Hij leest de hosts op zijn allowlist en niets anders. Hosts buiten de allowlist worden ongelezen getunneld en vastgelegd als een adres en een byteaantal: bewijs dat de agent contact heeft opgenomen met iets, en niet één byte van wat er is gezegd. Die grens is een ontwerpbeslissing, geen beperking waar we nog niet aan toegekomen zijn; dezelfde discipline is terug te vinden in OrcaRouter's agent firewall, waar de allowlist het product is in plaats van een neveneffect van het vastleggen.

The OrcaRouter agent firewall solutions page with its title and introduction visible.

De crux is die uit de eerste vraag: onderschepping werkt wanneer de recorder de agent start. Een agent die al in een container draait, heeft de certificeringsinstantie van die run nooit ontvangen en zal het antwoord van de recorder niet vertrouwen.

Een agent die niet op deze machine staat

Een container heeft zijn eigen omgeving. De base-URL-variabele die je in je shell instelt, bereikt de container niet, en een recorder op de host kan geen proces starten dat al ergens anders bestaat: op een VPS, in CI, in een sandbox die de harness zonder je iets te vragen heeft opgezet. Op starten gebaseerde capture faalt hier niet omdat de agent moeilijk is, maar omdat de recorder er nooit bij kan.

Voor precies dit geval is er orca attach: het neemt een agent op die de recorder niet kan starten, zoals eentje in een container of op een VPS. De richting draait om: in plaats van dat de recorder de agent start en hem een omgeving aanreikt, maakt hij verbinding met een agent die al draait en neemt hem op.

Wat attach niet doet, is de tweede vraag voor je beantwoorden. Het zorgt ervoor dat het verkeer de recorder bereikt; of dat verkeer een sessie wordt die je kunt afspelen, hangt er nog steeds van af of het wire-formaat begrepen wordt. Attach een agent die een formaat spreekt dat de recorder kent, en je krijgt een afspeelbare sessie. Attach er een die dat niet doet, en je hebt de muur gevonden, die goedkoper is om met opzet te vinden dan midden in een incident.

Wat verandert een abonnementslogin?

Dezelfde binary kan al dan niet worden opgenomen, afhankelijk van hoe deze is aangemeld. Een Codex CLI die met een API-sleutel is aangemeld, wordt vastgelegd via OPENAI_BASE_URL: stel de variabele in op de recorder en je bent klaar. Meld dezelfde CLI aan met een ChatGPT-abonnement, en hij praat helemaal niet meer met dat endpoint; hij praat met zijn eigen backend, geauthenticeerd als jij, en er is geen oorsprong om te herschrijven. De basis-URL-variabele bestaat nog steeds, maar welke waarde je er ook aan geeft, die wordt niet de service die de harness daadwerkelijk gebruikt.

Dit is de tweede vraag die faalt, niet de eerste. De bytes kunnen in beweging worden gebracht; de recorder kan ze zelfs zien. Maar het gesprek is gericht aan een backend waarvoor de recorder niet kan invallen, in een flow die niet de API is die de recorder spreekt. Er is geen replay te produceren, want er is geen oorsprong die de recorder kan worden.

Het eerlijke antwoord over een harness die met een abonnement is aangemeld, is vandaag de dag dat hij niet opneembaar is, en de nuttige les is dat de aanmeldingsmethode deel uitmaakt van de beslissing over opneembaarheid. Als je opnames nodig hebt voor evaluaties of voor een audittrail, voer de opgenomen sessies dan uit met een API-sleutel en behoud het abonnement voor interactief werk — hoe je een opgenomen sessie omzet in een regressie-evaluatie behandelt die cyclus van begin tot eind. En voordat je een harness standaardiseert, stel er eerst de twee vragen aan; wij doen dat per harness nog steeds precies zo, meest recentelijk met de Prime Agent-harness.

De kern

Je kunt vandaag een Claude Code-sessie opnemen met één commando en één omgevingsvariabele:

npm i -g orcareplay

• Wijs ANTHROPIC_BASE_URL naar de recorder

• Voer de agent uit

Een Codex CLI met een API-sleutel is even ver weg. Een hardcoded URL kost je een opt-in voor TLS-interceptie die alleen zijn allowlist leest (dezelfde discipline die de agent-firewall van OrcaRouter afdwingt) en zijn eigen certificaten vergeet wanneer de run eindigt. Een container of een VPS kost je orca attach. Een abonnementslogin kost je de opname zelf: die harness wordt niet opgenomen, en daar worden vandaag geen configuratiewijzigingen in aangebracht.

Het hele besluit in één oogopslag:

• Claude Code — API-sleutel voor aanmelden vs. route naar de recorder ANTHROPIC_BASE_URL vs. vandaag opneembaar: Ja

• Codex CLI — Inlog-API-sleutel vs Route naar de recorder OPENAI_BASE_URL vs Vandaag opneembaar Ja

• Harness met de provider-URL hardcoded — Sign-in Any vs Route to the recorder: opt-in TLS-interceptie, gelanceerd door de recorder vs vandaag opneembaar: Ja

• Agent in een container of op een VPS — Overal inloggen versus routeren naar de recorder orca attach versus nu opneembaar: ja, als het wireformaat bekend is

• Codex CLI — Inloggen: ChatGPT-abonnement versus Route naar de recorder: Geen versus Vandaag opneembaar: Nee

De laatste rij is de enige combinatie die helemaal geen route naar de recorder heeft.

Stel de twee vragen voordat je een harnas adopteert, niet pas na je eerste incident; de antwoorden zijn goedkoop te krijgen, en ze bepalen of de sessie die je op een dag wanhopig nodig zult hebben, überhaupt bestaat.

Bronvermelding: elk gedrag en elk cijfer in dit artikel (de afvangpaden van `ANTHROPIC_BASE_URL` en `OPENAI_BASE_URL`, de vier na de fixture opgetreden defecten en hun oplossingen, de levenscyclus van het TLS-certificaat, het allowlist-en-tunnelgedrag, `orca attach` en de installatievereisten) komt uit onze eigen validatieruns tegen de genoemde harnesses, voor het laatst uitgevoerd op 2026-09-04. We citeren geen benchmarks van derden, omdat we die niet hebben uitgevoerd.

© 2026 OrcaRouter

Voor aanbieders

Beheer je een inferentieplatform? Zet je modellen op OrcaRouter.

providers@orcarouter.ai

Word lid van de community

Discordsupport@orcarouter.aiXGitHubYouTube