Codex 공식문서 — 핵심 개념
Codex 공식문서 — 핵심 개념
한 줄 요약
OpenAI Codex 공식문서가 말하는 “코딩 에이전트”는 LLM 본체를 둘러싼 운영 골격(하네스) 위에서 돌아가며, 그 골격은 컨텍스트·툴·가드레일·검증이라는 4개 기둥으로 짜여 있다. 왜 배우나 — 같은 모델이라도 이 4기둥을 어떻게 설계하느냐에 따라 결과 품질·안전성·재현성이 크게 달라지기 때문이다.
[!info] 하네스란? “하네스(harness)“는 LLM 본체를 둘러싸고 실제로 일을 시키는 운영 골격을 말한다. 마구(馬具)처럼 모델이라는 말(馬)에 씌워 방향을 잡아주는 장치라고 보면 된다. 더 큰 그림은 하네스엔지니어링이란, 용어가 막히면 용어집을 함께 본다.
그림
flowchart TB
subgraph H["하네스 4기둥 (LLM 본체를 둘러싼 운영 골격)"]
direction LR
C["① 컨텍스트<br/>일 시키기 전에<br/>쥐여줄 배경·기억"]
T["② 툴<br/>외부 세계에<br/>손 뻗는 통로"]
G["③ 가드레일<br/>넘지 말 선과<br/>멈춤 장치"]
V["④ 검증<br/>한 일이 맞는지<br/>확인·되돌리기"]
end
LLM(["AI 모델 본체"]) --> H
C --> 작업["에이전트 작업 실행"]
T --> 작업
G --> 작업
V --> 작업
작업 --> 결과(["검증된 결과물"])
flowchart LR
A["① AGENTS.md<br/>(기초)"] --> B["② Skills/Plugins<br/>(골조)"]
B --> Cc["③ MCP<br/>(배관)"]
Cc --> D["④ Subagents<br/>(인테리어)"]
A -.->|"맞춤화 권장 빌드 순서<br/>각 층은 경쟁 아닌 보완"| D
쉽게 풀기
새 직원(에이전트)에게 일을 맡긴다고 상상해 보자. 일을 잘 시키려면 네 가지가 필요하다. 이것이 곧 하네스 4기둥이다.
-
컨텍스트 — 일 시작 전에 쥐여주는 배경지식과 기억.
- 신입에게 매번 말로 설명하는 대신 책상에 업무 수칙을 붙여두는 것과 같다.
- 여기에 들어가는 도구들: 프로젝트 설명서(AGENTS.md), 전역/저장소를 층층이 겹치는 계층형 가이드, 지난 대화를 회상하는 Memories, 의뢰서 역할의 프롬프트, 그리고 맞춤화를 쌓는 권장 순서(Customization 4층).
-
툴 — 에이전트가 바깥 세계에 손을 뻗는 통로.
- 직원이 전화·이메일·결재 시스템을 써야 일이 되듯, 에이전트도 파일을 고치고 명령을 실행하고 외부 서비스에 접속해야 한다.
- 여기에 들어가는 것들: 재사용 워크플로(Skills), 외부 도구 연결 표준(MCP), 잡무를 위임받는 Subagents, 같은 에이전트를 여러 환경에서 부르는 실행 면(App/IDE/CLI/Cloud), 대화창 없이 자동 호출하는 Non-interactive 모드.
-
가드레일 — 넘지 말아야 할 선과, 넘으려 할 때 멈추는 장치.
- 아이를 놀이터 안에서는 마음껏 뛰게 하되 도로로는 못 나가게 막는 울타리와 같다.
- 여기에 들어가는 것들: 기술적 경계인 Sandbox, 언제 사람에게 물을지 정하는 Approval Policy, 검토자 에이전트가 대신 판단하는 Auto-review, 명령 단위 예외 규칙(Rules), 권한 묶음(Permissions), 그리고 이들을 합친 종합 보안 운영 모델.
-
검증 — 한 일이 진짜 맞는지 확인하고, 틀리면 되돌리는 절차.
- 수술 전후 사진을 찍어두고 잘못되면 원상복구하는 안전망과 같다.
- 여기에 들어가는 것들: 동작 시점마다 스크립트를 끼우는 Hooks, 스냅샷·diff 검토(Git 체크포인트/Review), 반복·검증 루프(Workflows), 시행착오로 정립된 Best Practices.
마지막으로 어느 기둥에도 딱 속하지 않고 전 기둥을 받치는 받침 개념이 둘 있다 — 기본값을 저장하는 설정 파일(Config)과, 두뇌의 성능 등급을 고르는 Models다.
핵심 정리
① 컨텍스트 — 일 시키기 전에 무엇을 쥐여줄 것인가
| 개념 | 한 줄 정의 | 핵심 포인트 |
|---|---|---|
| AGENTS.md | 작업 시작 전 항상 먼저 읽는 프로젝트 설명서 | 작게 유지·반복 실수의 교훈을 추가(피드백 루프) |
| 계층형 가이드 | 전역(~/.codex/AGENTS.md)+저장소를 층층이 겹침 | 작업 폴더에 가까운 파일이 우선 |
| Memories | 선호·관례·함정을 로컬 저장해 다음 작업으로 회상 | 기본 꺼짐·보조 회상용·비밀정보 금지 |
| Prompting | ”무엇을 원하는지” 전달하는 사용자 메시지 | 의도·범위·맥락이 명확할수록 결과 좋음 |
| Customization 4층 | 맞춤화 권장 빌드 순서 | AGENTS.md → Skills/Plugins → MCP → Subagents |
[!note] 꼭 지켜야 할 규칙은 어디에? “반드시 지켜야 할 규칙”은 Memories가 아니라 AGENTS.md/문서에 둔다. Memories는 어디까지나 보조 회상 계층이며 기본 꺼짐 상태, 일부 지역에서는 제공되지 않는다.
② 툴 — 에이전트가 세계에 손을 뻗는 통로
| 개념 | 한 줄 정의 | 핵심 포인트 |
|---|---|---|
| Skills | 반복 작업을 SKILL.md 한 묶음으로 포장한 재사용 워크플로 | 점진적 공개로 컨텍스트 낭비 방지 |
| MCP | Codex를 외부 도구·데이터로 잇는 표준 규격 | Host─Client─Server 구조 |
| Subagents | 노이즈·전문 작업을 위임하는 보조 에이전트 | 본 에이전트의 집중 보호 |
| 실행 면(Surface) | App/IDE/CLI/Cloud 등 여러 진입점 | 같은 에이전트를 어디서든 동일하게 |
| Non-interactive | codex exec로 스크립트·CI에서 자동 호출 | 기본 읽기전용·최소 권한만 부여 |
[!note] MCP 서버가 노출하는 3가지
- Tools — 에이전트가 수행할 수 있는 행동
- Resources — 에이전트가 읽을 수 있는 데이터
- Prompts — 재사용 가능한 템플릿
③ 가드레일 — 넘지 말 선과 멈춤 장치
| 개념 | 한 줄 정의 | 핵심 포인트 |
|---|---|---|
| Sandbox | 수정 범위·네트워크를 가두는 기술적 경계 | 승인 피로(approval fatigue) 감소 |
| Approval Policy | 언제 멈춰 사람에게 물을지 정하는 규칙 | 샌드박스와 별개의 두 통제 |
| Auto-review | 승인 요청을 검토자 에이전트가 판단 | 권한 확장 아님·경계는 그대로 |
| Rules | 샌드박스 밖 명령 접두사 허용/확인/금지 | 위험 명령 끼워넣기 분해 |
| Permissions | 접근 범위를 묶은 권한 프로파일(베타) | 작업별 자율성 등급 선택 |
| 보안 운영 모델 | 위 통제들을 결합한 종합 원칙 | 조직 차원 강제 가능 |
- Sandbox 모드 3종 구분:
read-only/workspace-write(기본) /danger-full-access - Approval Policy 3종 구분:
untrusted/on-request/never - 샌드박스(경계 자체)와 승인정책(경계 넘을 때 멈출지)은 함께 작동하는 별개의 통제라는 점 이해
④ 검증 — 한 일이 진짜 맞는지 확인·되돌리기
| 개념 | 한 줄 정의 | 핵심 포인트 |
|---|---|---|
| Hooks | 동작 특정 시점에 내 스크립트를 끼우는 확장 | 유출 차단·검증 실행·로깅·메모리 요약 |
| Git 체크포인트/Review | 작업 전후 스냅샷+diff 사람 검토 | 언제든 원상복구 가능 |
| Workflows | 작게 쪼개 테스트·리뷰로 반복 검증 | 스스로 점검하며 전진 |
| Best Practices | 시행착오로 정립된 운영 권장 원칙 | 명확한 지시·작은 단위·검증 가능한 정지조건 |
[!note] Hooks 시점 예시
PreToolUse,PostToolUse,UserPromptSubmit,Stop,SessionStart,SubagentStart— 도구 사용 전후·턴 종료·세션/서브에이전트 시작 등에 끼워 넣는다.
⑤ 받침 개념 (전 기둥 공통)
| 개념 | 한 줄 정의 | 핵심 포인트 |
|---|---|---|
Config (config.toml) | 기본 동작값을 저장하는 로컬 설정·우선순위 체계 | 매번 손으로 안 맞춰도 됨 |
| Models | 작업 난이도·속도에 맞춰 두뇌 성능 등급 선택 | 신입 vs 베테랑 고르기 |
실제 예시
컨텍스트 — AGENTS.md 한 장으로 규칙 물려주기
<!-- 파일경로: <저장소루트>/AGENTS.md -->
# 이 저장소에서 일하는 법
- 빌드: `npm run build` (반드시 통과 후 커밋)
- 테스트: `npm test` — 실패 시 절대 머지 금지
- 리뷰 기준: 함수당 50줄 이하, 주석은 "왜"만
- 폴더 관례: src/ 비즈니스 로직, scripts/ 일회성 도구
<!-- 같은 실수가 반복되면 그 교훈을 여기에 추가해 다음 세션이 물려받게 한다 -->
가드레일 — config.toml로 기본 동작값 고정
# 파일경로: ~/.codex/config.toml
# 샌드박스(경계)와 승인정책(멈춤)은 별개의 두 통제
sandbox_mode = "workspace-write" # 작업폴더 내 수정만 허용(기본값)
approval_policy = "on-request" # 경계를 넘을 때만 사람에게 물음
툴 — Non-interactive 모드로 CI에서 자동 호출
# CI 파이프라인에서 대화창 없이 에이전트 실행, 결과만 표준출력으로 받음
# 기본은 읽기전용 샌드박스 — 자동화엔 "필요한 최소 권한"만 부여한다
codex exec "변경된 파일의 타입 에러를 모두 고쳐라" \
--sandbox workspace-write
요약 & 셀프체크
3줄 요약
- Codex 하네스는 컨텍스트·툴·가드레일·검증의 4기둥으로 짜이며, Config·Models가 이를 받친다.
- 가드레일에서 핵심은 “샌드박스(경계)“와 “승인정책(멈춤)“이 별개의 두 통제로 함께 작동한다는 점이다.
- 규칙은 AGENTS.md/문서에, 회상은 Memories에 — 역할을 섞지 않는 것이 운영 안정성의 출발점이다.
스스로 답해보기
- 같은 명령이 누군가에겐 막히고 누군가에겐 통과된다면, 샌드박스와 승인정책 중 무엇을 먼저 점검해야 할까?
- “반드시 지켜야 할 규칙”을 Memories에 넣으면 안 되는 이유는?
- Customization 4층(AGENTS.md → Skills/Plugins → MCP → Subagents)을 순서대로 쌓는 이유를 집 짓기에 빗대 설명할 수 있는가?
연결
[!tip] Codex 원문 교차검증 — 수집범위 / 누락
- 저장한 원문 파일 수: 25개 (
_원문아카이브/codex/하위, 모두 공식.md원문 엔드포인트에서 수집해 내비게이션 잡음 없이 본문만 확보).- 저장 목록: overview, quickstart, best-practices, prompting, customization, agents-md, memories, sandboxing, auto-review, subagents-concept, workflows, agent-approvals-security, permissions, rules, hooks, skills, subagents, mcp, config-basic, config-reference, config-advanced, cli-reference, noninteractive, models, glossary.
- 의도적으로 제외한 영역(하네스/에이전틱 엔지니어링 핵심에서 벗어나 우선순위가 낮음):
- 플랫폼·UI 운영 디테일: App/IDE 개별 settings·commands·troubleshooting, Windows/Chrome 확장, In-app browser, Appshots, Computer Use.
- 도메인 use-cases 다수(Figma→코드, RNA-seq, 단백질 폴딩, 받은편지함 관리 등 약 25+건) — 응용 예시라 개념 도출엔 불필요.
- 결제·조직 운영: pricing, enterprise(admin-setup/governance/managed-config), auth/access-tokens, CI/CD auth, Amazon Bedrock 배포.
- 통합·배포 채널: GitHub/Slack/Linear integrations, github-action, sdk, app-server, sites, plugins/build, security 플러그인·threat-model.
- 기타: changelog, videos, migrate, environment-variables, config-sample(=reference로 대체), feature-maturity, open-source, remote-connections, speed.
- 비고:
config-advanced와config-reference는 분량이 커서(각 45KB/70KB) 원문은 보관하되, 개념 노트에서는 “Config 계층” 한 항목으로 압축.출처(공식문서 엔드포인트)
- AGENTS.md: https://developers.openai.com/codex/guides/agents-md
- 계층형 가이드 / Customization: https://developers.openai.com/codex/concepts/customization
- Memories: https://developers.openai.com/codex/memories
- Prompting: https://developers.openai.com/codex/prompting
- Skills: https://developers.openai.com/codex/skills
- MCP: https://developers.openai.com/codex/mcp
- Subagents: https://developers.openai.com/codex/concepts/subagents
- 실행 면(Quickstart): https://developers.openai.com/codex/quickstart
- Non-interactive: https://developers.openai.com/codex/noninteractive
- Sandbox / Approval Policy: https://developers.openai.com/codex/concepts/sandboxing
- Auto-review: https://developers.openai.com/codex/concepts/sandboxing/auto-review
- Rules: https://developers.openai.com/codex/rules
- Permissions: https://developers.openai.com/codex/permissions
- 보안 운영 모델: https://developers.openai.com/codex/agent-approvals-security
- Hooks: https://developers.openai.com/codex/hooks
- Workflows: https://developers.openai.com/codex/workflows
- Best Practices: https://developers.openai.com/codex/learn/best-practices
- Config: https://developers.openai.com/codex/config-basic , https://developers.openai.com/codex/config-reference
- Models: https://developers.openai.com/codex/models