9월 10일 오픈AI가 공개 베타로 연 Agents API에는 새 모델이 없다. 새로운 기능도 사실상 없다. 자기 코딩 에이전트 Codex를 돌릴 때 쓰던 배선을 그대로 꺼내 남에게 빌려주기 시작했을 뿐이다. 그런데 이 배선은 지금까지 파는 물건이 아니었다. 에이전트를 진지하게 만드는 팀이라면 각자 깎아 쓰는 물건이었다.
오픈AI가 붙인 홍보 문구도 그 점을 숨기지 않는다. "Codex 하니스로 클라우드 에이전트를 만들고 돌리세요. 운영은 오픈AI가 전부 맡습니다."
하니스라는 말이 나온 자리
하니스(harness)는 원래 사람 몸을 낙하산이나 안전줄에 붙들어 매는 장비다. 사람을 개조하지 않고 바깥 장비와 이어주는 물건이다. AI 쪽에서 이 단어가 가리키는 것도 그와 닮았다. 모델 가중치는 손대지 않은 채, 그 모델을 바깥 세계에 연결하는 배선 전체를 말한다.
배선에는 이런 것들이 들어간다. 모델에게 쓸 수 있는 도구 목록을 어떤 형식으로 보여줄지, 도구를 부른 결과를 어떤 모양으로 되돌려줄지, 대화가 길어져 맥락 창이 꽉 차면 앞부분을 무엇부터 버릴지, 도구 호출이 실패하면 다시 시도할지 접을지. 전부 모델 바깥의 결정이고, 전부 사람이 정해야 하는 값이다.
이 말이 업계 용어로 굳은 건 올해 2월 무렵이다. 개발자 Can Boluk이 모델 열다섯 개에 코딩 벤치마크를 돌리면서 가중치는 그대로 두고 코드 편집 형식만 바꿔봤다. 어떤 모델은 정확도가 6.7%에서 68.3%로 올랐다. 들어간 돈은 300달러 남짓이었다. 비슷한 시기에 오픈AI도 자사 블로그에 하니스 엔지니어링이라는 제목의 글을 올렸다.
그래서 지난 반년 동안 에이전트를 만드는 팀들은 각자 이 배선을 깎았다. 그중 가장 성가신 대목은 대체로 하나였다. 상태였다. 에이전트가 지금 무엇을 하다가 어디까지 갔는지를 어딘가에 적어둬야 하고, 중간에 넘어지면 그 기록을 보고 다시 일으켜 세워야 한다. 재미있는 작업은 아니지만 이걸 안 하면 에이전트가 30분짜리 일도 못 버틴다.
오픈AI가 이번에 API로 판 게 정확히 그 부분이다.
오픈AI가 떼어낸 것
Agents API가 다루는 대상은 네 가지인데, 둘은 개발자가 적어 넣고 둘은 오픈AI가 돌려준다.
적어 넣는 첫 번째는 Agent다. 어떤 모델을 쓸지, 무슨 지시를 줄지, 어떤 도구와 MCP 서버를 붙일지를 적는 설정 묶음이다. MCP는 모델이 외부 도구와 데이터에 닿는 방식을 표준화한 프로토콜인데, 도구마다 제각각이던 연결 규격을 하나로 맞춰뒀다는 게 핵심이다. 도구를 MCP 서버로 빼놓으면 그 도구는 모델이 바뀌어도 그대로 쓸 수 있다. 뒤에 다시 나올 얘기다.
두 번째는 Environment, 코드가 실제로 돌아가는 샌드박스다. 격리된 임시 컴퓨터라고 보면 된다. 오픈AI가 띄워주는 것을 써도 되고, 자기 서버에 올려도 되고, 제휴 업체 아홉 곳 중에 골라도 된다. Blaxel, Cloudflare, Daytona, DigitalOcean, E2B, Modal, Oracle, Runloop, Vercel이 이름을 올렸다.
오픈AI가 돌려주는 쪽의 첫 번째가 Session이다. 에이전트 한 대가 지금 돌아가고 있는 상태 그 자체를 가리킨다. 앞에서 상태 관리가 가장 성가신 대목이라고 적었는데, 이유는 에이전트 작업이 길고 잘 깨지기 때문이다. 속도 제한에 걸리고, 외부 API가 몇 초씩 침묵하고, 컨테이너가 죽는다. 30분짜리 작업이라면 이 중 하나는 거의 반드시 만난다. 오픈AI의 세션은 그런 일이 생겨도 소멸하지 않는다. 멈춘 자리에 그대로 남아 있고, 몇 시간 뒤에 맥락을 안은 채 이어서 돌릴 수 있다. 나머지 하나인 Events는 그 세션이 뱉는 입출력 흐름이고 웹훅이나 SSE로 받는다.
이 넷 위에서 관리형 하니스가 처리하는 일은 대략 이렇다. 맥락 창이 한계에 가까워지면 앞부분을 알아서 요약해 줄인다. 붙여둔 도구가 많을 때 상황에 맞는 것을 찾아 고르고, 동시에 부를 수 있는 것들은 병렬로 부른다. 큰 작업은 쪼개 서브에이전트에게 넘기되 각자에게 별도의 맥락을 준다. 웹 검색 같은 기본 도구는 처음부터 들어 있다.
직접 만들면 몇 주가 걸리고, 만든 뒤에도 계속 손봐야 하는 것들이다.

설계 파트너들이 내놓은 숫자
오픈AI는 먼저 써본 회사들의 수치를 함께 내놨다. 발표에 이름이 오른 곳은 Cirridae, Long Lake, WithCoverage, SafetyKit, Dwelly, Hypha, deepsense.ai, Nash.ai다.
SafetyKit은 케이스 검토 워크플로를 옮긴 뒤 건당 비용이 60% 줄었다고 했다. 성능은 유지하면서다. Cirridae는 평가 점수가 0.71에서 0.85로 오르고 지연 시간이 4분의 1이 됐다고 보고했다.
셋 중 가장 많은 것을 알려주는 건 Hypha의 사례다. 이 회사는 에이전트 실행 프레임워크를 샌드박스에서 떼어낸 뒤 실패 응답이 86% 줄었다고 했다. 숫자보다 방법이 흥미롭다. 판단을 담당하는 부분과 코드가 실제로 도는 부분을 한 덩어리로 묶어두면, 샌드박스가 넘어질 때 진행 중이던 판단까지 함께 날아간다. 둘을 떼어놓으면 실행 환경이 죽어도 세션은 살아 있으니 새 샌드박스를 붙여 이어가면 된다. 바꿔 말하면 에이전트 실패의 상당수는 모델이 틀려서가 아니라 인프라가 흔들려서 생긴다는 뜻이다.
다만 이 수치들을 자기 프로젝트에 옮겨 적을 수는 없다. Cirridae의 0.85가 0.71보다 얼마나 나은 것인지는 채점 기준을 봐야 알 수 있는데 그게 공개되지 않았다. 더 중요한 건 비교 대상이다. 이들이 Agents API 이전에 무엇을 쓰고 있었는지가 발표에 없다. 하니스를 잘 만들어 쓰던 팀이 오픈AI 것으로 갈아타고 얻은 개선이라면 Agents API의 성과지만, 하니스랄 것이 없던 상태에서 붙인 결과라면 그건 하니스 일반의 성과다. 두 경우의 의미가 전혀 다른데 지금 자료로는 구분되지 않는다. 여덟 곳 모두 오픈AI와 함께 작업한 설계 파트너이기도 하다.
추가 요금이 없다는 말의 범위
오픈AI는 Agents API 자체에 별도 요금이 없다고 밝혔다. 쓰는 모델과 도구에 대해서만 평소대로 내면 된다는 것이다. 맞는 말이다. 다만 청구서가 얇아진다는 뜻은 아니다.
계산서는 세 줄로 쌓인다. 모델 토큰이 첫 줄이고, gpt-6-astra 기준으로 입력 100만 토큰에 10달러, 출력 100만 토큰에 50달러다. 도구 사용료가 둘째 줄이고, 웹 검색은 1,000회에 10달러다. 셋째 줄은 컨테이너 시간이다. 오픈AI가 띄워주는 샌드박스는 메모리 1GB에서 64GB까지 등급이 나뉘고 20분짜리 세션 기준 0.03달러에서 1.92달러 사이다. 분 단위로 매기되 최소 5분을 받는다.
여기까지는 계산기를 두드리면 나온다. 문제는 그다음이다.
하니스가 알아서 서브에이전트를 띄우고 도구를 병렬로 부른다는 건, 작업 하나가 모델을 몇 번 부르는지 내가 더는 세지 않는다는 뜻이다. 예전에는 반복문이 내 코드 안에 있었으니 호출 횟수가 내 손에 있었다. 이제는 같은 작업을 던져도 하니스의 판단에 따라 호출 수가 달라지고, 재시도까지 붙으면 편차는 더 커진다. 완료된 작업 한 건에 얼마가 들었는지는 돌려보기 전에는 알 수 없다. 비용 통제의 손잡이를 하니스와 함께 넘긴 셈이다.

세션은 어디에 남는가
데이터는 미국에만 머문다. 다른 지역을 고를 수 없다. Zero Data Retention도 지원하지 않는다. ZDR은 요청을 처리한 뒤 공급자 쪽에 아무것도 남기지 않는 옵션인데, 규제를 받는 업종이 외부 API를 검토할 때 대체로 가장 먼저 확인하는 항목이다. 이 둘이 막히면 금융이나 의료 쪽 워크로드는 시작도 못 한다.
추적용 API도 아직 없다. 세션 안에서 모델이 어떤 판단을 거쳐 어느 도구를 불렀는지를 끌어내 자기 관측 시스템으로 보내는 통로가 베타에는 빠져 있다. 하니스를 넘긴다는 건 판단 과정을 남의 프로세스 안으로 밀어 넣는다는 뜻인데, 그 안을 들여다볼 창이 아직 안 뚫린 상태다. 오픈AI가 띄운 샌드박스는 한 시간 동안 아무 일도 없으면 지워진다. 세션 상태는 별도로 보관되니 작업이 통째로 날아가지는 않지만, 샌드박스 안에 써둔 파일을 영구 저장소로 믿으면 안 된다.
가장 까다로운 건 상태의 위치다. 샌드박스를 자기 인프라에 올려도 세션 상태는 오픈AI 쪽에 남는다. 코드가 어디서 도는가와 에이전트의 진행 상황이 어디에 적혀 있는가는 별개의 문제다. 실행 환경은 가져와도 기억은 두고 온다.
해커뉴스 토론에서 반복해서 나온 이름이 Assistants API였다. 오픈AI가 밀다가 접은 그 API 위에 서비스를 얹었던 사람들이 이번에는 직접 만들겠다고 적었다는 것이다. 그 자리에서 나온 조언 하나가 인상적이다. 오픈AI의 세션 아이디를 자기 업무 기록의 유일한 식별자로 쓰지 말라는 것. 주문 번호든 작업 티켓이든 기준이 되는 번호는 내 데이터베이스에 두고, 세션 아이디는 거기 붙는 참조값 정도로 다루라는 얘기다. 그래야 나중에 갈아탈 여지가 남는다. 이 스레드에는 248점에 댓글 140개가 달렸다고 보도됐다.
루프를 누가 돌릴 것인가
오픈AI는 이제 같은 목적의 물건을 세 층으로 판다. 셋을 가르는 기준은 하나다. 에이전트 루프를 누구의 프로세스가 돌리는가.
Responses API는 모델을 부르는 얇은 창구다. 모델이 도구를 쓰겠다고 하면 그걸 받아 실행하고 결과를 다시 넣어주는 반복문은 내 코드가 돌린다. Agents SDK는 그 반복문을 라이브러리로 만들어 준다. 세션과 가드레일과 관측 기능이 들어 있지만 돌아가는 곳은 여전히 내 애플리케이션 안이다. Agents API는 그 반복문을 오픈AI 서버로 옮긴다. 나는 작업을 던지고 이벤트를 받는다.
말이 추상적이면 배포를 떠올리면 된다. 에이전트가 두 시간짜리 작업을 하는 중에 내 서버를 재배포한다고 해보자. Responses API와 Agents SDK를 쓰고 있었다면 진행 중이던 작업은 프로세스와 함께 사라진다. 살리려면 상태를 어딘가에 적어두고 복구하는 코드를 내가 짜놨어야 한다. Agents API에서는 아무 일도 일어나지 않는다. 루프가 내 서버에 없기 때문이다.
이 차이를 어떻게 볼 것인지가 선택의 전부에 가깝다. 에이전트가 멈췄을 때 재개를 책임지는 쪽이 내 서비스가 아니라 인프라여도 괜찮다면 Agents API가 남는 장사다. 반대로 이미 잘 굴러가는 단순한 워크플로를 여기로 옮길 이유는 없다. 출시가 요란하다고 멀쩡한 파이프라인을 다시 쓸 일은 아니고, 옮긴다면 하던 일이 어디까지 갔는지 맞춰보는 대조 로직을 먼저 만들어야 한다. 그게 없으면 끊긴 자리에서 같은 일을 두 번 하는 에이전트가 나온다.
직접 만든 하니스와 빌린 하니스
2월의 실험이 보여준 건 하니스를 바꾸면 성능이 열 배 달라진다는 사실이었다. 그때 하니스는 뜯어고칠 수 있는 물건이었다. 편집 포맷을 바꾸고 실패 처리를 바꿔가며 300달러어치를 돌려볼 수 있었기 때문에 6.7%가 68.3%가 됐다.
Agents API의 하니스는 그렇게 다루는 물건이 아니다. 설정할 수는 있어도 뜯어볼 수는 없다. 맥락을 언제 어떻게 압축할지, 서브에이전트에게 무엇을 넘길지는 오픈AI가 정한다. 대신 그 규칙은 오픈AI가 Codex를 굴리며 다듬어온 것이고, 대다수 팀이 처음부터 만드는 것보다 낫다. 절반의 팀에게는 명백히 좋은 거래다.
문제는 이 거래에 상태가 딸려 온다는 데 있다. 모델은 갈아타기 쉽다. 도구를 MCP 서버로 빼두고 지시문을 파일로 관리하면 모델 이름 한 줄만 바꾸면 된다. 샌드박스도 제휴사 아홉 곳 사이를 옮겨 다닐 수 있다. 그런데 돌아가고 있는 세션은 옮길 수 없다. 에이전트가 지금 무엇을 하다가 어디서 멈췄는지에 대한 기록은 오픈AI 쪽에 있고, 그 형식은 공개된 규격이 아니다.
열흘쯤 전 발표된 엔비디아의 허깅페이스 인수도 같은 모양이었다. 그 건에서 갈라진 것은 복제할 수 있는 것과 복제할 수 없는 것이었다. 모델 가중치 파일은 얼마든지 복사되지만 사람들이 모델을 찾으러 가는 자리는 복사되지 않았고, 129억 달러는 뒤쪽에 매겨진 값이었다. 이번에는 이식할 수 있는 것과 이식할 수 없는 것이 갈렸다. 모델과 도구와 샌드박스는 옮길 수 있고, 진행 중인 세션은 옮길 수 없다. 두 번 다 값이 붙은 쪽은 만드는 물건이 아니라 그 물건이 지나가는 자리였다.
그래서 지금 Agents API를 검토하는 팀이 답해야 할 질문은 성능이 아니다. 에이전트가 중간까지 해둔 일을 내 쪽에 얼마나 적어둘 것인가. 그 기록이 있으면 하니스는 언제든 바꿔 낄 수 있는 부품이 되고, 없으면 세션 아이디가 곧 계약이 된다.