OpenAI의 코딩 agent(사용자를 대신해 여러 단계의 작업을 스스로 처리하는 AI) Codex가 코드를 대신 쓰는 도구를 넘어 몇 시간씩 혼자 일하는 작업자로 쓰이고 있습니다. OpenAI 개발자 경험 팀은 Slack 대화를 캡처한 이미지 한 장을 건네고 “이거 그냥 만들어 줄 수 있어?“라고 묻는 것만으로 macOS용 실시간 통역 앱을 받아 냈고, 밤새 15시간 넘게 혼자 돌아간 작업으로 400명 규모 행사용 질의응답 사이트를 만들었습니다. 결과를 가른 것은 prompt 문구보다 맥락을 건네는 방법, plugin, 그리고 사람이 중간에 확인하는 장치였습니다. 무엇을 건네고 어디서 사람이 살펴야 하는지 순서대로 정리합니다.
맥락은 옮겨 적지 말고 통째로 건네기
출발점은 팀원들이 Slack에서 주고받은 짧은 대화였습니다. 한 사람이 실시간 번역기를 만들어 보자고 했고, 다른 사람이 OpenAI Agents SDK와 GPT Realtime API를 쓰자고 덧붙였습니다. 이 대화를 복사해 붙여 넣는 대신 appshot 기능을 썼습니다. Mac 키보드 양쪽의 Command 키를 엄지로 함께 누르면 Slack 창이 그 안의 글, 메타데이터와 함께 Codex로 넘어갑니다.
Codex는 곧바로 Swift 기반 macOS 앱의 뼈대를 만들기 시작했고, 코드 작성부터 빌드, 검증, 실행 파일 묶기까지 4분 2초가 걸렸습니다. 완성된 StageTranslate는 SwiftUI와 AppKit으로 만든 macOS 앱으로, 마이크 입력, WebSocket 연결, 오디오 재생, OpenAI Realtime API 연동을 갖췄습니다. 영어로 말하면 실시간으로 받아 적고, 독일어 글과 독일어 음성으로 바꿔 들려줍니다.
다만 처음 실행했을 때는 오디오 권한과 입력 장치가 맞지 않았습니다. 시스템 사운드 설정에서 마이크 입력과 출력 장치를 바로잡은 뒤에야 번역이 제대로 돌아갔습니다. 앱은 agent가 몇 분 만에 만들어도, 실제 장비와 환경에 맞추는 마지막 확인은 여전히 사람의 몫으로 보입니다.
이 앱을 맡긴 엔지니어는 데이터 과학자 출신으로 Swift, AppKit, WebSocket을 거의 다뤄 본 적이 없었습니다. 그 빈자리를 채운 것이 ‘Build macOS Apps’ plugin입니다. AppKit 연동, 빌드·실행·디버깅, Liquid Glass 스타일, 서명과 공증 등 macOS 앱 개발에 필요한 skill 11Ghazi가 들어 있습니다.
OpenAI 개발자 경험 팀은 음성 받아쓰기와 appshot을 아직 덜 쓰이는 생산성 기능 두 가지로 꼽습니다. 사람은 타자보다 말이 훨씬 빠르고, 최신 언어 모델은 두서없는 말도 정돈된 지시로 바꿔 이해한다는 설명입니다. 팀에 따르면 Codex는 appshot만 보고도 90%가 넘는 경우에 사용자의 의도를 맞힙니다.
Codex에 맥락을 쌓아 두는 네 Ghazi 장치
한 번 건넨 맥락이 다음 작업에도 이어지게 하는 장치도 있습니다.
| 장치 | 하는 일 | 쓸 때 알아 둘 점 |
|---|---|---|
| Plugin | skill(재사용할 지시와 팀의 작업 요령), 외부 앱 연결, MCP 서버(외부 시스템의 도구를 AI에 연결하는 규격)를 한 묶음으로 설치 | Gmail, Slack, GitHub, Figma, Google Drive 등을 디렉터리에서 골라 설치 |
| Memories | 대화 thread가 달라도 사용자의 선택을 기억(예: Python 패키지 관리에 pip 대신 uv) | 기본값은 꺼짐. ’Skip tool-assisted chats’를 켜면 외부 도구와 웹 검색 결과는 기억하지 않음 |
| Chronicle | 화면의 맥락을 잠깐 포착해 사용자가 하는 일을 추론(예: 실패한 GitHub Actions 진단) | Pro 구독자가 직접 켜는 연구 미리보기 기능 |
| 개인 설정 | 모든 대화에 적용할 지시를 등록 | 홈 폴더에 AGENTS.md 파일을 두는 것과 비슷한 효과 |
Memories와 Chronicle은 token(AI가 글을 처리하는 단위)을 더 쓰지만, 지난 프로젝트의 세부 사정을 기억하는 동료가 생기는 만큼 그 비용을 치를 만하다는 것이 OpenAI 팀의 판단입니다. 민감한 데이터를 자주 다룬다면 ’Skip tool-assisted chats’를 켜 두는 편이 안전합니다.
plugin 가운데 OpenAI Developers plugin은 API 키를 브라우저의 대시보드로 Ghazi 않고 Codex 안에서 바로 만들고 설정하게 해 줍니다. 키를 잃어버리거나 작업 흐름이 끊기는 일을 줄이기 위해서입니다. 까다로운 문제를 한 thread에서 해결했다면, 끝에 그 과정을 skill이나 plugin으로 저장하라고 지시할 수 있습니다. 다음부터는 같은 일을 따로 설명하지 않아도 처리합니다.
컴퓨터를 직접 다루는 세 Ghazi 방식
큰 기업에서는 귀중한 데이터가 API 없는 오래된 사내 대시보드에 갇혀 있기도 합니다. 이를 재현한 예시로, 저장소 활동을 보여 주는 분석 대시보드에서 월간 보고서를 받으려면 달력에서 날짜를 일일이 고르고 항목마다 내려받기 버튼을 눌러야 했습니다.
이 일을 Codex의 computer use(AI가 사람처럼 화면을 보고 마우스와 키보드를 조작하는 기능)에 맡겼습니다. 음성으로 지난 7일의 커밋 기록은 CSV로, 6월 초부터 오늘까지의 pull request 데이터는 JSON으로 내려받으라고 지시하자 Codex가 화면 구성과 접근성 식별자를 살핀 뒤 별도의 소프트웨어 커서로 날짜 선택기를 조작했습니다. 같은 식별자를 쓰는 앱이 여러 개 떠 있자 짐작하지 않고 창 이름으로 대상을 골랐습니다. macOS에서는 사용자의 마우스 커서를 빼앗지 않아, 그동안 사람은 다른 창에서 일할 수 있습니다.
웹 작업도 같습니다. Google Docs에 적어 둔 설문 질문을 읽어 Google Forms에 객관식, 척도형, 주관식 질문을 만들고 모든 질문을 필수 응답으로 바꾸는 일을 Codex가 처리했습니다. 반복 클릭이 많고 필수 설정을 빠뜨리기 쉬운 일입니다.
| 방식 | 부르는 법 | 알맞은 작업 |
|---|---|---|
| 네이티브 computer use | @computer 또는 @앱 이름 | API가 없는 데스크톱 앱과 오래된 사내 프로그램 |
| Chrome 확장 | @chrome | 이미 로그인한 브라우저에서 하는 웹 작업 |
| 앱 안 브라우저 | @browser | 로컬 웹 앱 개발, 레이아웃과 DOM 점검, 화면 동작 테스트 |
headless Chromium(화면 없이 돌아가는 브라우저)으로 자동화하면 CAPTCHA와 로그인 차단에 막히기 쉽습니다. Chrome 확장은 사용자가 이미 로그인한 세션을 그대로 쓰므로 Gmail처럼 로그인이 필요한 서비스나 다단계 인증이 걸린 웹 앱에 알맞습니다.

▲ 사람 커서와 따로 도는 AI 조작
몇 시간짜리 작업은 목표 파일과 감시 장치부터
큰 개발 작업은 5시간에서 20시간까지 걸립니다. OpenAI 팀이 전날 밤 클라우드 서버에서 시작해 둔 작업 세 Ghazi는 다음과 같습니다.
| 작업 | 걸린 시간 | 내용 |
|---|---|---|
| 실시간 질의응답 사이트 | 15시간 30분 55초 | 400명 규모 행사용 사이트를 처음부터 제작. 실시간 동기화에 Convex, 배포에 Vercel, 질문 검토에 OpenAI Moderation API |
| 사내 폼 제작 도구 | 5시간 57초 | 오픈소스 폼 빌더를 ChatGPT 인증을 붙인 사내 도구로 개조 |
| 최적 결정 트리 패키지 | 7시간 1분 40초 | Julia와 R로 작성된 논문 알고리즘을 Rust 백엔드의 Python 패키지로 구현 |
이렇게 긴 작업을 사람이 계속 지켜볼 수는 없습니다. 그래서 다음 장치를 처음부터 함께 지시했습니다.
- 목표 파일: 계획과 마일스톤을 GOALS.md 파일에 적게 합니다.
- 진행 대시보드: progress-dashboard.html 파일을 만들고 계속 갱신하게 해, 마일스톤 상태(완료, 진행 중, 대기)와 테스트 통과율, 막힌 곳을 한눈에 봅니다.
- 점검용 하위 thread: 하나의 대화에 모든 일을 몰지 않고 코드 리뷰와 목표 점검을 맡는 thread를 따로 둡니다. 점검 thread는 마일스톤마다 구현 상태를 GOALS.md와 대조해, 목표에서 벗어나면 주 thread를 바로잡습니다.
- Slack 보고: 끝난 마일스톤, 진행 중인 일, API 키 누락 같은 막힌 곳을 Slack 채널로 알리게 합니다. 주말에는 휴대전화로 그 채널만 보다가 인증 문제가 생기면 풀어 주면 됩니다.
- 곁가지 대화:
/side명령으로 주 thread 옆에 임시 대화를 열어 지난 한 시간 동안 한 일, 다음 계획, 막힌 곳을 묻고 방향을 고칩니다. 곁가지 대화는 사라지므로 중요한 결정은 반드시 주 thread로 옮겨야 합니다.
배포 키가 없어 작업이 멈췄을 때도 방법이 있었습니다. 막힌 항목을 곁가지 대화로 가져가 어떻게 풀 수 있는지 묻자, Codex는 Convex 배포 키를 원격 서버의 환경 변수 파일에 바로 쓰는 셸 명령을 만들어 주었습니다. 비밀값을 대화 기록에 붙여 넣지 않기 위해서입니다.
클라우드에서 도는 thread는 개발자 PC의 Chrome에 접근할 수 없습니다. 이때 원격 thread가 로컬 작업 thread를 띄워 브라우저 테스트를 맡기고 결과를 돌려받습니다. 실제로 개발자가 잠든 새벽 3시에 로컬 Chrome이 열려 폼 생성 과정을 처음부터 끝까지 검증했습니다.
끝나는 기준은 프로그램이 확인할 수 있게
/goal 명령은 오래 유지되는 목표를 정하고, Codex가 매 추론 단계마다 결과를 성공 기준과 대조해 정말 끝났는지 판단하게 합니다. 기준이 모호하면 요구를 형식적으로만 채우고 끝내는 ‘원숭이 손’ 같은 결과가 나올 수 있습니다. 테스트 묶음이나 특정 문자열 확인처럼 프로그램이 판정할 수 있는 기준을 적어야 합니다. 한 개발자는 이 방식으로 Codex를 40시간 동안 돌려 Doom을 Swift로 다시 구현했습니다. 대규모 코드 이전과 리팩터링, 배포 재시도, 자동 실험이 주된 쓰임입니다.
긴 작업을 버티게 하는 바탕은 compaction(긴 대화에서 핵심 상태만 남기고 나머지를 압축하는 기능)입니다. 2025년 11월 19일 GPT-5.1-Codex-Max와 함께 나왔고, 이 모델은 여러 context window(모델이 한 번에 참고할 수 있는 글의 범위)에 걸쳐 압축하며 일하도록 학습됐습니다. 덕분에 앞선 요구 사항을 잊지 않고 token도 아낄 수 있다는 설명입니다.

▲ 주 thread와 점검 thread의 역할 분담
일을 나누는 방법: subagent, thread 넘기기, hook
subagent는 작업 일부를 맡는 보조 agent로, 자기만의 context window를 써서 주 대화를 어지럽히지 않습니다. subagents.toml 파일로 역할 설명, 도구 권한, sandbox 정책, 추론 강도를 정합니다. 프런트엔드, 백엔드, 테스트, 문서 조사, 코드 리뷰처럼 역할을 나누고, 단순 점검에는 빠르고 가벼운 모델을, 꼼꼼한 리뷰에는 추론 능력이 높은 모델을 배정할 수 있습니다. 권장할 방식은 아니지만, 초기 화면의 스크린숏에 ’별로’라는 짧은 말만 붙여 보냈을 때도 Codex는 대화 영역이 비좁게 배치됐다고 판단했습니다. 주 thread가 UI 전담 subagent에 수정을 맡겼고, 그 subagent가 브라우저에서 결과까지 확인했습니다.
thread 넘기기는 위임 과정을 사람도 볼 수 있게 하는 방식입니다. 위임을 사람이 지켜봐야 하면 thread 넘기기를, 주 모델만 알면 되면 subagent를 고르면 됩니다. 주말 게임 프로젝트에서는 ‘크리에이티브 디렉터’ thread가 미술, 음악, 애니메이션, 게임 규칙을 맡은 thread를 지휘했고, AGENTS.md에 각 thread가 디렉터의 승인을 받아야 작업을 끝낼 수 있다고 적었습니다.
hook은 정해진 시점에 정해진 스크립트를 반드시 실행하는 장치로, config.toml에 설정합니다. 쓰임은 다음과 같습니다.
- prompt에 API 키 같은 비밀값이 섞여 나가지 않게 가로채기
- 실행하려는 셸 명령을 허용 목록과 대조하기
- 대화 기록을 회사의 관측·분석 시스템으로 보내기
- 턴이 끝날 때 테스트와 linter(코드 규칙 검사 도구)를 돌리기
OpenAI Agents SDK 저장소에서는 Codex가 턴을 끝낼 때마다 저장소를 정리하는 Python 스크립트를 hook으로 돌립니다. OpenAI 팀은 agent에 자율을 많이 줄수록 언어 모델의 판단에만 기대지 않는 이런 안전장치가 더 필요하다고 강조합니다.
시간에 맞춰 도는 automation
Codex의 automation은 두 종류입니다.
| 종류 | 방식 | 쓰임 |
|---|---|---|
| thread 안 heartbeat | 기존 대화 안에서 정해진 간격으로 깨어나 확인 | 서버 준비 상태 확인, Slack·메일·Linear 변경 사항을 Obsidian 노트에 매일 정리 |
| 새 thread 예약 작업 | 정해진 때 새 대화를 열어 일괄 처리하고 검토 뒤 보관 | 주간 팀 요약, 분석 집계 |
DigitalOcean plugin으로 클라우드 서버를 만들 때는 준비에 몇 분이 걸립니다. Codex는 5분마다 서버 상태를 확인하는 heartbeat를 스스로 걸어 두고, 준비가 끝나자 그 작업을 지운 뒤 SSH 키를 설정했습니다.
Slack과 예약 작업, git worktree(같은 저장소의 작업 공간을 따로 여는 기능)를 엮으면 유지 보수도 맡길 수 있습니다. 번역 앱의 사용자 의견이 모이는 Slack 채널을 30분마다 읽어 칭찬, 버그, 기능 요청으로 나누고, 버그와 기능 요청은 별도 브랜치와 worktree에서 구현해 pull request를 연 뒤 리뷰어를 지정합니다. 24시간 안에 리뷰가 없으면 다시 알립니다.
개인 작업에도 쓸 수 있습니다. 매주 금요일 한 주의 대화를 돌아보고 skill을 더하거나 지우며 AGENTS.md를 정리하게 하거나, 이메일 답장 초안을 만든 뒤 사람이 실제로 보낸 메일과 비교해 차이와 선호를 문서로 쌓게 하는 식입니다.
Codex의 바탕에는 오픈소스 app-server 프로토콜이 있습니다. 데스크톱 앱, 터미널 CLI, Visual Studio Code 확장이 모두 이 JSON-RPC 통신으로 같은 agent 엔진에 연결되고, JetBrains IDE나 Xcode 같은 외부 도구도 같은 방식으로 붙습니다. 개발자는 이 위에 자신만의 앱을 만들고 기존 ChatGPT 요금제의 사용량으로 돌릴 수 있습니다. OpenAI 팀은 4시간짜리 작업으로 복고풍 화면의 Codex 전용 앱을 만들었고, 이 앱의 대화는 데스크톱 Codex와 그대로 연동됐습니다.
정리: Codex에 일을 맡기기 전에 갖출 것
이 사례들에서 드러나는 핵심은 prompt를 다듬는 요령보다 맡기는 구조를 설계하는 일이 결과를 좌우한다는 점으로 보입니다. OpenAI 팀은 최신 추론 모델에는 특별한 주문 같은 prompt 기법이 필요 없고, 충분하고 분명한 맥락과 모호하지 않은 목표가 필요하다고 강조합니다. 그리고 agent를 다룰 때 되풀이해 물어야 할 질문을 제시합니다.
- 직접 손대기 전에 Codex에 맡겨 보았는가
- 완성을 막는 것이 권한인가, 맥락인가, 도구인가
- 한 번씩 묻고 답하는 대신 반복 루프로 돌릴 수 있는가
- 중간 단계에 사람이 꼭 끼어야 하는가
당장 해 볼 수 있는 일은 다음과 같습니다.
- 맥락은 붙여 넣지 말고 appshot과 음성 받아쓰기로 건넵니다.
- 몇 시간짜리 작업은 목표 파일, 진행 대시보드, 점검 thread를 먼저 지시합니다.
- 끝나는 기준은 테스트처럼 프로그램이 확인할 수 있게 정합니다.
- 비밀값은 대화에 붙이지 말고, 파일에 직접 쓰는 명령을 받아 실행합니다.
- hook으로 테스트와 linter를 자동으로 돌려 자율 작업의 안전장치를 둡니다.
agent가 몇 분 만에 앱을 만들어도 실제 장비에서 돌아가는지, 목표를 제대로 채웠는지는 사람이 확인해야 합니다. 확인할 지점을 미리 정해 두는 것이 긴 작업을 맡기는 첫걸음입니다.