
Claude Code 세션과 협조하지 않는 다른 모든 에이전트를 기록하는 방법: 실용 현장 가이드
- openaiNEWOpenAI: GPT-6 Astra2026-09-0455지능77코딩
- googleNEWGoogle: Gemini 3.8 Flash2026-09-0247지능76코딩
- qwenNEWQwen: Qwen3.8 Max (0902)2026-09-0247지능72코딩
- anthropicNEWAnthropic: Claude Fable 5.12026-09-0157지능82코딩
- AlibabaNEWQwen: Qwen3.8 Flash2026-08-26$0.15 / $0.47 100만 토큰당
- z-aiNEWZ.ai: GLM 5.3 Flash2026-08-2646지능72코딩
- DeepSeekDeepSeek: DeepSeek V4 Flash Vision (Exp)2026-08-21$0.15 / $0.29 100만 토큰당
- z-aiZ.ai: GLM 5.32026-08-1849지능75코딩
- obsidianQwen3.8 27B2026-08-1541지능68코딩
- qwenQwen: Qwen3.8 27B (free)2026-08-13qwen/qwen3.8-27b-free
- deepseekDeepSeek: DeepSeek V4 Pro 08132026-08-1242지능69코딩
- grokSpaceXAI: Grok 4.62026-08-1251지능77코딩
- metaMeta: Muse Spark 1.22026-08-0547지능72코딩
- qwenQwen: Qwen3.8 Max2026-08-0347지능72코딩
- deepseekDeepSeek: DeepSeek V4 Flash 07312026-07-3141지능69코딩
- minimaxMiniMax: MiniMax-H32026-07-31minimax/minimax-h3
- qwenQwen: Qwen3.7 Flash2026-07-27$0.03 / $0.13 100만 토큰당
- orcaOrcaDub: OrcaDub 1.02026-07-27orca/dub
- anthropicAnthropic: Claude Opus 52026-07-2454지능78코딩
- googleGoogle: Gemini 3.6 Flash2026-07-2140지능69코딩
네, 현재 Claude Code 세션을 기록할 수 있으며, 그 결과는 재생 가능한 형태의 전체(모든 모델 턴, 모든 도구 호출, 에이전트가 건드린 모든 파일)입니다. 이것이 짧은 버전이고, 오늘날에도 사실입니다. 더 긴 버전은 이렇습니다. 기록 가능성은 하네스마다 두 가지 질문으로 결정됩니다. 하네스를 프록시에 연결하도록 설정할 수 있는가, 그리고 트래픽이 도착하면 그 와이어 형식을 이해할 수 있는가입니다. Claude Code는 둘 다 충족하며, API 키로 로그인한 Codex CLI도 마찬가지입니다. 소스에 공급자 URL이 하드코딩된 에이전트, 컨테이너나 VPS에서 실행되는 에이전트, 구독으로 로그인한 하네스는 각각 다른 경로를 취하며, 그중 하나는 오늘날 도달하지 못합니다.
달라진 점은 이 에이전트들이 더 이상 데모가 아니라는 것입니다. 이제 그들은 셸 액세스 권한으로 여러분의 리포지토리에 상주하며, 파일을 편집하고, 테스트 스위트를 실행하고, 풀 리퀘스트를 엽니다. 그중 하나가 예상치 못한 행동을 할 때, 즉 잘못된 파일을 삭제하거나, 같은 실패 테스트를 반복하거나, 오후 내내 컴퓨팅 자원을 태우는 경우, 터미널 스크롤백은 증거가 아닙니다. 그것은 하나의 렌더링일 뿐이며, 그것도 불완전한 렌더링입니다.
여러분에게 필요한 것은 실제 통신 기록입니다. 모델에 실제로 무엇이 보내졌는지, 실제로 무엇이 돌아왔는지, 그리고 에이전트가 턴 사이에 무엇을 했는지가 필요합니다. 그 기록은 또한 평가 스위트의 시작점이기도 합니다. 캡처된 세션은 다음 모델이나 다음 프롬프트에 대해 재생할 수 있는 회귀 테스트이기 때문입니다. 문제는 모든 하네스가 자신이 공급자와 직접 통신한다고 가정하며, 그중 거의 아무것도 그 대상을 바꾸기 쉽게 만들지 않는다는 점입니다.
하네스를 기록할 수 있는지 여부를 결정하는 것은 무엇입니까?
모든 '녹화해 줄 수 있냐'는 질문은 결국 같은 두 가지 질문으로 귀결된다.
첫 번째: 하네스를 프록시에 지정할 수 있나요? 편리한 순서대로 네 가지 방법이 이를 다룹니다.
• base-URL 변수입니다. 이를 위해 구성된 경로: 하네스가 base-URL 환경 변수를 읽고, 사용자가 이를 설정합니다.
• 하네스를 직접 생성합니다. 자식 프로세스는 부모 환경을 상속하므로, 코딩 에이전트를 생성하는 게이트웨이도 에이전트의 협력 없이 포착됩니다.
• TLS 가로채기. 구성을 전혀 읽지 않는 하네스의 경우, 레코더가 에이전트를 실행하며 사용자는 가로채기에 옵트인합니다.
• 연결. 레코더가 에이전트를 시작할 수 없는 환경에서 에이전트가 실행되면, 남은 방법은 연결입니다.
그중 어느 것도 해당되지 않는다면, 트래픽은 녹음기에 도달하지 않으므로 논의할 내용이 없습니다.
두 번째: 일단 트래픽이 도착하면, 그 와이어 형식이 이해되는가? 바이트를 캡처하는 것이 제품이 아니다. 레코더는 자신이 대신하고 있는 대화를 인식해야 한다. 도구 호출 형태, 스트리밍 프레임, 재시도까지 포함해서 말이다. 그렇지 않으면 녹음은 재생이 아니라 pcap일 뿐이다. 레코더가 이해하는 형식은 재생할 수 있는 세션을 만들어 내지만, 사설 프로토콜은 바라볼 수만 있는 캡처를 만들어 낸다.
답은 하네스마다 다르며, 실수하기 쉬운 세부 사항에서도 차이가 납니다. 이는 다음을 비교하면서 얻은 것과 같은 교훈입니다: DeepSeek 하네스가 Claude Code와 어떻게 다른지. 이 글의 나머지 부분에서는 실제로 하네스를 실행했을 때 그 두 질문이 어떤 모습인지 보여 줍니다.

Claude Code, Codex CLI 및 Agents SDK
Claude Code는 다른 모든 것이 평가 기준으로 삼는 사례입니다. 그 이유는 ANTHROPIC_BASE_URL을 읽기 때문입니다. 이 변수를 레코더로 설정하고 에이전트를 시작하면 세션이 한 턴씩 차례로 도착합니다. 즉 프롬프트, 도구 호출, 파일 편집, 그리고 그 사이에 오가는 모델의 응답이죠. 우리는 실제 버그 수정(실제 저장소, 실제 결함, 첫 프롬프트부터 작동하는 수정까지 이어지는 세션)을 대상으로 종단 간 검증했습니다. 그리고 그 첫 번째 실제 에이전트는 어떤 픽스처도 만들어 내지 못했던 네 가지 문제를 일으켰습니다. 네 가지 모두 이후 수정되었는데, 이는 솔직하게 말해 합성 트래픽만으로는 실제 에이전트가 코드베이스와 단둘이 남았을 때 하는 행동을 대비할 수 없다는 뜻입니다.
API 키로 로그인한 Codex CLI는 OPENAI_BASE_URL을 경유해도 마찬가지입니다. 레코더를 가리키면 세션을 얻을 수 있고, 하네스 사용 방식에서 달라지는 것은 없습니다.
프로그래밍 방식 에이전트는 모든 경로 중 가장 쉬운 경로를 물려받습니다. 자식 프로세스는 부모 환경을 상속하므로, 코딩 에이전트를 생성하는 게이트웨이도 에이전트의 협력 없이 포착됩니다. base-URL 변수를 에이전트를 생성하는 그 프로세스에서 한 번만 설정하면, 그 프로세스가 실행하는 모든 에이전트는 스스로 레코더에 도달합니다. CI, 오케스트레이터, 또는 Agents SDK를 통해 에이전트를 실행한다면, 여러분은 이미 이 경로를 사용하고 있는 것입니다.
The recorder in all of these cases is OrcaReplay. It installs with npm i -g orcareplay, needs Node 20 or newer, and has no native dependencies: nothing to compile, nothing to build. It captures the same agent traffic that OrcaRouter routes across OrcaRouter's model catalog.

base-URL 변수를 읽지 않는 에이전트
일부 하네스는 소스 코드에 공급자 URL을 하드코딩한다. 환경 변수도, 구성 파일도, 플래그도 없다. 설정된 ANTHROPIC_BASE_URL은 아무 효과도 없다. 그 값을 읽는 곳이 없기 때문이다. 리코더가 에이전트를 실행할 수 있다면, 여전히 하나의 경로가 있으며, 그것은 사람들이 가장 우려하는 경로, 즉 TLS 가로채기다.
옵트인은 말 그대로 옵트인입니다. 기본적으로 꺼져 있습니다. 특정 실행에 대해 이 기능을 켜면, 레코더가 해당 실행에만 고유한 인증 기관을 생성하며, 이 인증 기관은 레코더가 시작하는 에이전트만 신뢰합니다. 즉, 그 하나의 프로세스에만 전달되며, 시스템 키체인에는 설치되지 않고, 다음 실행을 위해 남겨지지도 않습니다. 실행이 끝나면 인증 기관은 삭제됩니다. 에이전트는 항상 그래왔듯이 하드코딩된 호스트에 연결하고, 레코더가 응답하며, 세션은 URL이 처음부터 구성 가능했던 것처럼 도착합니다.
라우트가 의도적으로 거부하는 것은 그것이 하는 일만큼이나 중요합니다. 라우트는 자신의 허용 목록에 있는 호스트만 읽을 뿐 다른 것은 읽지 않습니다. 허용 목록에 없는 호스트는 내용을 읽지 않은 채 터널링되고, 주소와 바이트 수로 기록됩니다. 이는 에이전트가 무언가에 접촉했다는 증거일 뿐, 주고받은 내용의 단 한 바이트도 포함하지 않습니다. 그 경계는 우리가 아직 다루지 못한 한계가 아니라 설계상의 결정입니다. 동일한 원칙은 OrcaRouter의 에이전트 방화벽에도 그대로 적용되며, 여기서 허용 목록은 기록의 부산물이 아니라 제품 그 자체입니다.

문제는 첫 번째 질문에서와 동일합니다. 인터셉션은 레코더가 에이전트를 실행할 때만 작동합니다. 컨테이너 내부에서 이미 실행 중인 에이전트는 해당 실행의 인증 기관을 받은 적이 없으므로 레코더의 응답을 신뢰하지 않습니다.
이 머신에 없는 에이전트
컨테이너는 자체 환경을 갖습니다. 셸에서 설정한 base-URL 변수는 그 내부에 도달하지 않으며, 호스트의 레코더는 이미 다른 곳에 존재하는 프로세스를 시작할 수 없습니다. 예를 들어 VPS, CI, 또는 하네스가 묻지 않고 만든 샌드박스에서는 그렇습니다. 실행 기반 캡처가 여기서 실패하는 이유는 에이전트가 어렵기 때문이 아니라 레코더가 그 프로세스를 건드릴 수 없기 때문입니다.
정확히 이런 경우에는 orca attach가 있습니다. 이 명령은 기록기가 실행할 수 없는 에이전트(예: 컨테이너 또는 VPS에 있는 에이전트)를 기록합니다. 방향이 반대로 바뀝니다. 기록기가 에이전트를 시작하고 환경을 넘겨주는 대신, 이미 실행 중인 에이전트에 연결하여 기록합니다.
attach가 해주지 않는 것은 두 번째 질문에 대한 답입니다. 그것은 트래픽을 레코더로 전달하는 문제를 해결합니다. 그 트래픽이 재생 가능한 세션이 되는지 여부는 여전히 와이어 형식이 이해되는지에 달려 있습니다. 레코더가 아는 형식을 말하는 에이전트를 attach하면 재생 가능한 세션을 얻을 수 있습니다. 그렇지 않은 에이전트를 attach하면 벽을 발견하게 되는데, 이 벽은 인시던트 중간에 발견하는 것보다 의도적으로 찾는 것이 더 비용이 적게 듭니다.
구독 로그인은 무엇을 변경하나요?
동일한 바이너리는 로그인 방식에 따라 기록 가능할 수도 있고 그렇지 않을 수도 있습니다. API 키로 로그인한 Codex CLI가 캡처되는 경로는 OPENAI_BASE_URL: 레코더를 가리키면 끝입니다. 동일한 CLI를 ChatGPT 구독으로 로그인하면 해당 엔드포인트와는 전혀 통신하지 않습니다. 대신 사용자로 인증된 상태로 자체 백엔드와 통신하므로 재작성할 출처가 없습니다. base-URL 변수는 여전히 존재하지만, 가리키는 대상은 실제로 하네스가 사용하는 서비스가 되지 않습니다.
이번에 실패한 질문은 첫 번째가 아니라 두 번째입니다. 바이트를 이동시킬 수 있고, 레코더는 그 바이트까지 볼 수 있습니다. 하지만 그 대화는 레코더가 대신할 수 없는 백엔드를 대상으로 하며, 그 흐름은 레코더가 구사하는 API가 아닙니다. 레코더가 될 수 있는 원본이 없기 때문에 재현할 리플레이도 없습니다.
오늘날 구독 로그인 상태의 하네스에 대해 솔직히 말하면, 그것은 기록할 수 없습니다. 그리고 유용한 교훈은 로그인 방식이 기록 가능 여부를 결정하는 요소의 일부라는 점입니다. 평가나 감사 추적을 위한 기록이 필요하다면, 기록된 세션은 API 키로 실행하고 대화형 작업에는 구독을 유지하세요 — 기록된 세션을 회귀 평가로 전환하는 방법그 루프를 처음부터 끝까지 다룹니다. 그리고 어떤 하네스를 표준으로 정하기 전에, 먼저 그 하네스에 두 가지 질문을 던져 보세요. 우리는 하네스마다 정확히 그렇게 하고 있으며, 가장 최근에 그렇게 한 하네스는 Prime Agent 하네스.
핵심 요점
오늘 하나의 명령어와 하나의 환경 변수로 Claude Code 세션을 기록할 수 있습니다:
• npm i -g orcareplay
• ANTHROPIC_BASE_URL을 레코더로 지정하십시오
• 에이전트를 실행하세요
API 키를 사용하는 Codex CLI도 같은 거리에 있다. 하드코딩된 URL은 허용 목록만 읽고(OrcaRouter의 에이전트 방화벽이 적용하는 것과 동일한 규율) 실행이 끝나면 자체 인증서를 잊어버리는 TLS 인터셉트에 옵트인해야 하는 비용이 든다. 컨테이너 또는 VPS를 사용하면 orca attach를 실행해야 한다. 구독 로그인은 녹화 자체가 비용으로 든다: 그 하네스는 녹화되지 않으며, 오늘은 구성 변경도 없다.
결정 전체를 한눈에:
• Claude Code — 로그인 API 키 vs 레코더로 라우팅 ANTHROPIC_BASE_URL vs 오늘 기록 가능: 예
• Codex CLI — 로그인 API 키 vs 레코더로 라우팅 OPENAI_BASE_URL vs 오늘 기록 가능: 예
• 공급자 URL이 하드코딩된 하네스 — 임의 로그인 vs 레코더로 라우팅(레코더가 실행하는 옵트인 TLS 가로채기) vs 오늘 기준 기록 가능: 예
• 컨테이너 또는 VPS에서 실행되는 에이전트 — 어디서든 로그인 vs 레코더로 라우팅 orca attachvs 현재 기록 가능: 예, 와이어 형식을 알고 있다면
• Codex CLI — 로그인: ChatGPT 구독 vs 레코더로 라우팅: 없음 vs 오늘 기록 가능: 아니요
마지막 행은 레코더로 가는 경로가 전혀 없는 유일한 조합입니다.
하네스를 채택하기 전에 그 두 가지 질문을 하세요. 첫 사고 이후가 아니라요. 답을 얻는 것은 값싸며, 그 답이 언젠가 당신이 절실히 필요로 하게 될 세션이 존재하는지 여부를 결정합니다.
출처 참고: 이 글에 있는 모든 동작과 수치(`ANTHROPIC_BASE_URL` 및 `OPENAI_BASE_URL` 캡처 경로, 픽스처 이후 발생한 네 가지 장애와 그 수정, TLS 인증서 수명 주기, 허용 목록 및 터널 동작, `orca attach`, 설치 요구 사항)는 명명된 하네스에 대해 당사가 직접 수행한 검증 실행에서 비롯되었으며, 가장 최근 실행은 2026-09-04입니다. 당사는 타사 벤치마크를 실행하지 않았으므로 인용하지 않습니다.
