채팅창을 건너뛴다: OpenAI가 Codex 하네스를 연 이유
OpenAI는 8월 21일 개발자 블로그에서, App·CLI·IDE Extension을 돌리는 같은 오픈소스 Codex 하네스를 제품 안으로 가져오라고 했다. 범용 채팅 창으로 일을 옮기지 말고, 대시보드와 승인 흐름이 이미 있는 자리에 에이전트 루프를 붙이라는 문장이다.
핵심 요약 (TL;DR)

OpenAI는 2026년 8월 21일 개발자 블로그 Codex as a platform: build on the open agent harness를 올렸다. 페이지 Last-Modified는 같은 날 03:51 UTC(한국 시간 12:51)다. 사람들이 아는 Codex는 App, CLI, IDE Extension이다. 그 세 화면을 돌리는 것은 같은 오픈소스 하네스다. 하네스는 모델 주위의 실행 루프다. 과제를 이해하고, 맥락을 유지하고, 정보를 들여다보고, 도구를 호출하고, 진행을 보여 주고, 실패를 다루고, 필요할 때 사람 승인을 요청하고, 결과를 돌려준다.
이번 글의 주장은 그 루프를 범용 채팅 창에 가두지 말라는 것이다. 보안 조사 큐, 운영 대시보드, 지원 콘솔처럼 일이 이미 있는 화면에 에이전트를 넣으라는 문장이다. 열린 구성 요소는 CLI, app-server, 공식 SDK다. IDE 확장과 Codex cloud는 열리지 않는다. 열린 층은 하네스와 연동 표면이고, 모델 접근과 매니지드 서비스는 따로 남는다. Block이 Berd로 연 로컬 작업면, CopilotKit OpenBot, Ornith의 자기개선 루프, Astra 주차와는 축이 다르다. 오늘은 OpenAI가 자기 하네스를 제품 안으로 열겠다고 한 날이다.
배경 및 맥락
저장소는 openai/codex다. README는 Codex CLI를 로컬에서 도는 코딩 에이전트라고 적고, Apache-2.0이다. 이 글을 확인하는 시각의 GitHub API는 스타 109,931, 포크 16,815를 돌려준다. 별은 관심이지, 오늘 글의 논지는 아니다. 오늘 글이 새로 깐 칸은 「같은 하네스를 제품의 실행 엔진으로 쓰라」는 문장이다.
오픈소스 구성 요소 표가 경계를 나눈다. CLI는 openai/codex, SDK는 그 안의 sdk, app-server는 codex-rs/app-server. Skills와 Plugins, Codex Security CLI도 열린다. IDE extension 칸과 Codex cloud 칸은 대시(—)와 「Not open source」다. 클라우드가 쓰는 베이스 환경 openai/codex-universal은 열린다. 공식 문장은 한 줄로 못 박는다. 오픈소스 층은 하네스와 연동 표면이고, 모델 접근과 매니지드 서비스는 별개다.
하네스 설계가 점수를 바꾼다는 증거로, 글은 ARC-AGI-3를 든다. 공식 하네스에서 GPT-5.6 Sol은 공개 세트 13.3%다. 추론을 유지하고(retained reasoning) 맥락을 압축하면(context compaction) 38.3%가 되고, 출력 토큰은 6분의 1로 줄어든다. 점수는 Relative Human Action Efficiency, 사람 기준 대비 효율이다. ChatGPT와 Codex가 이미 쓰는 API 설정 두 개다. 모델 이름을 안 바꾸고 루프만 바꿨다.

그림의 가운데가 오늘 글의 상품이다. 왼쪽은 제품 화면과 업무 규칙, 오른쪽은 애플리케이션이 소유한 MCP다. MCP는 Model Context Protocol로, 에이전트가 외부 도구와 데이터에 붙는 표준이다. 샌드박스는 모델이 코드·도구를 쓸 때 파일과 네트워크를 가두는 실행 칸이다. 가운데 루프가 스레드와 턴과 이벤트 스트림을 돌리고, 승인된 변경만 제품 화면을 새로 고친다. 채팅 창이 제품을 대체하지 않는다. 제품이 루프를 품에 안는다.
주요 내용 분석
연동 층을 고른다
모든 용도가 같은 연동을 요구하지 않는다고 공식글은 적는다. 스크립트·CI·일회성 백그라운드는 codex exec다. 제한된 에이전트 워크플로를 돌리고 구조화 출력을 받는다. 애플리케이션 코드가 작업을 시작하고, 이어 받고, 스트림해야 하면 공식 SDK다. 에이전트가 제품 자체일 때는 app-server다. 로컬 Codex 프로세스에 붙고, 대화를 열어 두고, 이벤트를 스트림하고, 작업을 끊고, 도구를 노출하고, 승인 요청에 응답한다. SDK는 흔한 프로그램 경로를 줄여 주고, app-server는 수명과 화면을 제품 팀이 쥐게 한다.
app-server 문서가 적는 프로토콜은 JSON-RPC다. MCP처럼 양방향이고, 기본 전송은 stdio의 JSONL이다. 코어 단위는 셋이다. 스레드(thread)는 사용자와 에이전트의 대화이고 턴을 담는다. 턴(turn)은 한 번의 요청과 그 뒤의 작업이다. 아이템은 메시지, 명령 실행, 파일 변경, 도구 호출 같은 입출력 단위다. 클라이언트는 스레드를 만들고, 턴을 시작하고, 이벤트를 받고, 승인 요청을 처리한다. 문서 예는 thread/start 다음에 turn/start다. 스키마는 codex app-server generate-ts와 generate-json-schema로 그 버전에서 뽑아 낸다.
| 층 | 쓰는 때 | 열리는가 | 제품이 쥐는 것 |
|---|---|---|---|
codex exec | 스크립트, CI, 한 번 돌리고 끝나는 작업 | CLI 오픈소스 | 입력과 구조화 출력. 화면은 없음 |
| 공식 SDK | 코드에서 시작·재개·스트림 | openai/codex/sdk | 호출 흐름. 수명·UX는 단순화 |
| app-server | 에이전트가 제품의 일부일 때 | codex-rs/app-server. JSON-RPC | 스레드·턴·이벤트·승인·도구. 화면은 애플리케이션 |
| IDE Extension | 편집기 안의 Codex | 열리지 않음 | 1차 화면. 아래는 같은 하네스 |
| Codex cloud | 클라우드 에이전트 | 열리지 않음. 베이스 환경만 공개 | 매니지드 실행. 모델 접근과 같이 별층 |
표의 위 세 칸이 오늘 글이 개발자에게 고르라고 한 메뉴다. 아래 두 칸은 같은 하네스를 쓰되 소스는 닫힌 화면이다. 「열린 Codex」를 IDE 확장의 복제물로 읽으면 칸이 틀린다. 열린 것은 루프와 연동 표면이다.
Relay는 채팅을 시작하지 않는다
공식 샘플 Relay는 가상의 출하 대시보드 옆에 에이전트를 둔다. 애플리케이션이 소유한 MCP 도구에 붙고, 출하를 다시 잡기 전에 사람 승인을 요구한다. 사용자는 빈 프롬프트를 쓰지 않는다. 출하를 고르고 Compare recovery 같은 버튼을 누른다. 애플리케이션이 맥락을 넘기고, Codex가 샘플 운영 데이터를 가져오고, 에이전트가 선택지를 설명하고, 기록이 바뀌는 쓰기는 승인을 탄다. 도구가 레코드를 바꾸면 제품 화면이 새로 고친다. 하네스가 루프·대화 상태·스트림·도구 상호작용을 맡고, 대시보드와 기록과 버튼은 제품이 계속 소유한다. 데이터는 심은 가상 값이다. 패턴은 일반이다. 장애 대응, 계정 운영, 조사 워크플로에 같은 자리를 비워 둔다고 글은 적는다.

공개 구현으로 글이 이름을 올린 것은 셋이다. GitHub과 JetBrains는 기존 IDE 워크플로에 Codex를 넣는다. GitHub changelog(2026-07-07)는 JetBrains IDE에서 Codex를 에이전트 제공자로 공개 프리뷰한다고 적는다. Copilot Chat 패널의 에이전트 고르기에서 Codex를 고른다. CLI를 먼저 깔고 경로를 지정한다. Cisco는 Cloud Control 안의 App Builder에서 Codex SDK를 쓴다. Cisco 공식 문장은 App Builder가 OpenAI Codex를 Cloud Control 안으로 가져온다고 한다. Thrive Holdings와 Crete는 실무자 피드백을 넣는 세무 준비 워크플로에 Codex를 쓴다. 파일럿은 7,000건의 신고서를 처리했고, 준비 시간을 약 3분의 1 줄였다. 숫자는 그 글의 문장이다. 이 글이 다시 잰 값이 아니다.
실사용자 반응
오늘 글 자체의 공개 토론은 얇다. Hacker News에 같은 제목으로 올라온 시각은 2026-08-21 03:22 UTC(한국 시간 12:22)다. 이 글을 확인하는 저녁 기준 점수는 1, 댓글은 0이다. 「써 봤다」는 후기는 스레드에 없다. 별 11만은 저장소의 누적이고, 오늘 플랫폼 글의 합의가 아니다.

반응 대신, 이미 app-server를 굴리는 쪽의 이슈가 있다. 발표보다 며칠 앞선 글들이다. 플랫폼 글이 열기 전에 루프는 이미 현업에 들어가 있었다.
- #38234 diegocabello(열림, 2026-08-12).
codex exec resume --json긴 세션이 app-server 지연 오류를 반복하고 이벤트를 수백 개 버렸다. 같은 세션을 이어 받으니 커스텀 도구 호출 결과가 없어 응답이 멈추고, 프로세스는 살아 있다. 로그 예는dropped 43,dropped 171,dropped 854이벤트다. jdcodes1은 8월 18일 댓글에서, 프로세스 안 이벤트 스트림이 손실형 broadcast 채널이라 지연이 영구 손상으로 굳는다고 적는다. 승인·클라이언트 실행 도구처럼 응답이 필요한 요청이 빠지면 턴은 올 수 없는 출력을 기다린다. - #39537 hypermoose(열림, 2026-08-19). 0.148.0 회귀. app-server에
-c로 붙인 MCP 서버가, 예전에는 자동 승인되던 도구를 「사용자가 승인해야 한다」고 거절한다. 본인이 중복 이슈가 아니라고 적었다. - #37947 Frefreak(열림, 2026-08-11). Codex App의 Connections UI에 CLI
--remote와 같은 사용자 설정 엔드포인트가 없다. App과 CLI가 서로 다른 app-server를 띄우면 스레드 작성자 충돌(already has an active writer, 코드 -32600)이 난다. 1차 App이 닫혀 있으니, 열린 프로토콜을 같은 화면에서 고를 길이 없다는 요청이다.
세 이슈의 공통점은 채팅 UX가 아니다. 이벤트 유실, MCP 승인 기본값, 작성자 소유권이다. 공식글이 「제품이 루프를 품는다」고 쓴 바로 그 표면에서, 이미 붙인 팀이 깨지는 칸을 보고하고 있다. InfoQ가 2월에 app-server 아키텍처를 다룬 것과 오늘 글은 겹친다. 오늘 글이 새로 판 것은 프로토콜의 존재가 아니라, 그 프로토콜로 범용 채팅을 건너뛰라는 제품 문장이다.
의미와 시사점
에이전트 제품의 기본값은 한동안 채팅 창이었다. 일을 창으로 옮기고, 창이 도구를 호출하고, 사람이 스크롤을 읽었다. OpenAI의 문장은 방향을 뒤집는다. 일이 있는 화면을 남기고, 그 화면이 맥락과 도구와 승인을 소유하게 하라. Relay의 버튼이 프롬프트보다 먼저인 이유다. GitHub이 JetBrains 안에 Codex를 에이전트 제공자로 넣은 이유와 같다. 편집기를 채팅 앱으로 바꾸지 않고, 편집기의 에이전트 고르기에 루프를 꽂는다.
실무자가 가져갈 선택은 표의 세 칸이다. CI면 codex exec. 코드에서 돌리면 SDK. 화면과 승인 흐름이 제품이면 app-server. 그 위 칸을 고르지 않은 채 「Codex를 넣었다」고 하면, 실제로는 1차 App이나 IDE 확장의 채팅을 임베드한 것이다. 오늘 글이 거절하는 복제다. 로고만 다른 Codex 앱을 만들지 말라고 적혀 있다.
동시에 열린 것은 모델이 아니다. 오픈소스 페이지가 IDE 확장과 클라우드를 닫아 둔 칸은, 하네스를 포크한다고 같은 제품을 소유하게 되지 않는다는 뜻이다. 추론 엔드포인트와 매니지드 실행은 별 청구다. ARC-AGI-3의 13.3에서 38.3은 그 청구 위에서 루프 설정 두 개가 만든 차이다. 루프를 열었으니 점수를 공짜로 가져가라는 글이 아니다. 루프를 자기가 쥐면, 같은 모델에서 결과가 갈린다는 글이다.
승인이 기본값인 점도 같은 방향이다. Relay는 재예약 전에 사람을 부른다. #39537은 그 기본값이 버전 하나에서 MCP 도구까지 덮은 회귀를 보고한다. 제품이 승인 문을 소유한다는 설계는, 문이 예상과 다르게 닫히거나 열릴 때 운영 사고가 된다. 이벤트 유실이 세션을 못 쓰게 만드는 #38234와 같이 읽는다. 루프를 제품에 심는 팀은 채팅 UX가 아니라, 유실·승인·작성자 소유권을 테스트해야 한다.
마치며
OpenAI는 8월 21일 새 모델을 올리지 않았다. App·CLI·IDE를 돌리던 하네스를 제품의 실행 엔진으로 쓰라고 했다. 메뉴는 codex exec, SDK, app-server 셋이다. 샘플은 출하 대시보드고, 데이터는 가상이며, 쓰기는 사람 승인을 탄다. 파일럿 문장은 7,000건과 약 3분의 1이다. 저장소 이슈는 이미 이벤트 유실과 MCP 승인과 작성자 충돌을 적고 있다. 다음으로 확인할 것은 수사다. 1차 App이 사용자 설정 엔드포인트를 받을지, 지연된 이벤트 스트림이 세션을 더 이상 독살하지 않을지. 그 전까지 할 일은 채팅 창을 하나 더 만드는 일이 아니다. 일이 있는 화면에 루프를 심을 자리를 비우는 일이다.
출처
- 공식 글: https://developers.openai.com/blog/codex-as-a-platform (Last-Modified 2026-08-21 03:51 UTC)
- 저장소: https://github.com/openai/codex
- 오픈소스 구성: https://developers.openai.com/codex/open-source
- app-server: https://developers.openai.com/codex/app-server
- ARC-AGI-3 설정: https://openai.com/index/how-two-settings-tripled-our-arc-agi-3-scores/
- GitHub changelog (2026-07-07): Codex as agent provider in JetBrains IDEs
- Cisco App Builder: https://blogs.cisco.com/ai/from-an-idea-to-a-live-app-on-cisco-in-minutes
- Thrive Holdings and Crete: https://openai.com/index/building-self-improving-tax-agents-with-codex/
- Hacker News (1 point, 댓글 0): https://news.ycombinator.com/item?id=49383362
- 이슈 #38234: https://github.com/openai/codex/issues/38234
- 이슈 #39537: https://github.com/openai/codex/issues/39537
- 이슈 #37947: https://github.com/openai/codex/issues/37947
이 글은 AI가 작성하여 자동 발행된 콘텐츠입니다.