이 페이지를 Codex 구성 파일을 검색할 수 있는 레퍼런스로 사용하세요. 개념 설명과 예시는 구성 기본 사항 및 고급 구성 부터 살펴보세요.
config.toml
사용자 수준 구성은 ~/.codex/config.toml에 있습니다. .codex/config.toml 파일에 프로젝트 범위 재정의를 추가할 수도 있습니다. Codex는 사용자가 신뢰하는 프로젝트의 프로젝트 범위 구성 파일만 로드합니다.
프로젝트 범위 구성은 머신 로컬 제공자, 인증,
호스트 소유 앱 요청 메타데이터, 알림, 구성 프로필 선택
또는 텔레메트리 라우팅 키를 재정의할 수 없습니다. Codex는 프로젝트 로컬
.codex/config.toml에 openai_base_url,
chatgpt_base_url, apps_mcp_product_sku, model_provider,
model_providers, notify, profile, profiles,
experimental_realtime_ws_base_url 및 otel가 있으면 무시합니다. 대신 제공자, 알림 및 텔레메트리
키를 사용자 수준 구성에 넣으세요. 구성 프로필 파일 은
config.toml 옆에 $CODEX_HOME/profile-name.config.toml 형식으로 있으며,
--profile profile-name을 사용해 선택합니다.
샌드박스 및 승인 키(approval_policy, sandbox_mode 및 sandbox_workspace_write.*)에 대해서는 이 레퍼런스와 샌드박스 및 승인 , 쓰기 가능한 루트의 보호된 경로 및 네트워크 액세스 를 함께 참조하세요. 베타 권한 프로필은 권한 을 참조하세요.
<ConfigTable
options={[
{
key: "model",
type: "string",
description: "사용할 모델(예: gpt-5.5).",
},
{
key: "review_model",
type: "string",
description:
"/review에서 사용하는 선택적 모델 재정의(기본값은 현재 세션 모델).",
},
{
key: "model_provider",
type: "string",
description: "model_providers의 제공자 ID(기본값: openai).",
},
{
key: "openai_base_url",
type: "string",
description:
"기본 제공되는 openai 모델 제공자의 기본 URL을 재정의합니다.",
},
{
key: "model_context_window",
type: "number",
description: "활성 모델에서 사용할 수 있는 컨텍스트 창 토큰 수입니다.",
},
{
key: "model_auto_compact_token_limit",
type: "number",
description:
"기록 자동 압축을 트리거하는 토큰 임계값입니다(설정하지 않으면 모델 기본값 사용).",
},
{
key: "model_auto_compact_token_limit_scope",
type: "total | body_after_prefix",
description:
"자동 압축 임계값이 전체 활성 컨텍스트(기본값인 total)를 계산할지, 이어받은 압축 창 접두사 이후의 증가분(body_after_prefix)만 계산할지 제어합니다.",
},
{
key: "model_catalog_json",
type: "string (path)",
description:
"시작 시 불러올 JSON 모델 카탈로그의 선택적 경로입니다. 선택한 $CODEX_HOME/profile-name.config.toml 프로필 파일에서 프로필별로 이 값을 재정의할 수 있습니다.",
},
{
key: "oss_provider",
type: "lmstudio | ollama",
description:
"--oss로 실행할 때 사용하는 기본 로컬 제공자입니다(설정하지 않으면 선택을 요청하는 것이 기본값).",
},
{
key: "approval_policy",
type: "untrusted | on-request | never | { granular = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool, request_permissions = bool, skill_approval = bool } }",
description:
"Codex가 명령 실행 전에 승인을 받기 위해 일시 중지하는 시점을 제어합니다. 다른 프롬프트는 대화형으로 유지하면서 approval_policy = { granular = { ... } }를 사용해 특정 프롬프트 범주를 허용하거나 자동 거부할 수도 있습니다. on-failure은 더 이상 사용되지 않습니다. 대화형 실행에는 on-request을, 비대화형 실행에는 never를 사용하세요.",
},
{
key: "approval_policy.granular.sandbox_approval",
type: "boolean",
description:
"true이면 샌드박스 권한 상승 승인 프롬프트를 표시할 수 있습니다.",
},
{
key: "approval_policy.granular.rules",
type: "boolean",
description:
"true이면 execpolicy prompt 규칙에 의해 트리거된 승인 프롬프트를 표시할 수 있습니다.",
},
{
key: "approval_policy.granular.mcp_elicitations",
type: "boolean",
description:
"true이면 MCP 요청 프롬프트를 자동 거부하지 않고 표시할 수 있습니다.",
},
{
key: "approval_policy.granular.request_permissions",
type: "boolean",
description:
"true이면 request_permissions 도구의 프롬프트를 표시할 수 있습니다.",
},
{
key: "approval_policy.granular.skill_approval",
type: "boolean",
description:
"true이면 스킬 스크립트 승인 프롬프트를 표시할 수 있습니다.",
},
{
key: "approvals_reviewer",
type: "user | auto_review",
description:
"on-request 또는 세분화된 승인 정책에서 적격 승인 프롬프트를 검토할 주체입니다. 기본값은 user이며, auto_review는 검토자 하위 에이전트를 사용합니다. 이 설정은 샌드박스 적용 방식이나 샌드박스 내부에서 이미 허용된 검토 작업을 변경하지 않습니다.",
},
{
key: "auto_review.policy",
type: "string",
description:
"자동 검토를 위한 로컬 Markdown 정책 지침입니다. 관리형 guardian_policy_config이 우선합니다. 빈 값은 무시됩니다.",
},
{
key: "allow_login_shell",
type: "boolean",
description:
"셸 기반 도구에서 로그인 셸 의미 체계를 사용하도록 허용합니다. 기본값은 true입니다. false이면 login = true 요청이 거부되며, 생략된 login의 기본값은 비로그인 셸입니다.",
},
{
key: "sandbox_mode",
type: "read-only | workspace-write | danger-full-access",
description:
"명령 실행 중 파일 시스템 및 네트워크 액세스에 적용할 샌드박스 정책입니다.",
},
{
key: "sandbox_workspace_write.writable_roots",
type: "array",
description:
'sandbox_mode = "workspace-write"일 때 추가로 쓰기 가능한 루트입니다.',
},
{
key: "sandbox_workspace_write.network_access",
type: "boolean",
description:
"workspace-write 샌드박스 내부에서 외부 네트워크 액세스를 허용합니다.",
},
{
key: "sandbox_workspace_write.exclude_tmpdir_env_var",
type: "boolean",
description:
"workspace-write 모드의 쓰기 가능 루트에서 $TMPDIR을 제외합니다.",
},
{
key: "sandbox_workspace_write.exclude_slash_tmp",
type: "boolean",
description:
"workspace-write 모드의 쓰기 가능 루트에서 /tmp을 제외합니다.",
},
{
key: "windows.sandbox",
type: "unelevated | elevated",
description:
"Windows에서 Codex를 네이티브로 실행할 때 사용하는 Windows 전용 네이티브 샌드박스 모드입니다.",
},
{
key: "windows.sandbox_private_desktop",
type: "boolean",
description:
"네이티브 Windows에서 최종 샌드박스 하위 프로세스를 기본적으로 비공개 데스크톱에서 실행합니다. 이전 Winsta0\\\\Default 동작과의 호환성이 필요한 경우에만 false로 설정하세요.",
},
{
key: "computer_use.windows.always_allowed_app_ids",
type: "array",
description:
"Computer Use가 프롬프트 없이 열 수 있는 Windows 앱 식별자입니다. 목록에 없는 앱은 승인이 필요합니다. 저장된 항목은 ChatGPT 데스크톱 앱의 Computer Use 설정에서 제거하세요.",
},
{
key: "notify",
type: "array",
description:
"알림에 호출되는 명령입니다. Codex에서 JSON 페이로드를 받습니다.",
},
{
key: "check_for_update_on_startup",
type: "boolean",
description:
"시작 시 Codex 업데이트를 확인합니다(업데이트가 중앙에서 관리되는 경우에만 false로 설정).",
},
{
key: "feedback.enabled",
type: "boolean",
description:
"로컬 클라이언트 전반에서 /feedback를 통한 피드백 제출을 활성화합니다(기본값: true).",
},
{
key: "analytics.enabled",
type: "boolean",
description:
"이 머신/프로필의 분석을 활성화하거나 비활성화합니다. 설정하지 않으면 클라이언트 기본값이 적용됩니다.",
},
{
key: "instructions",
type: "string",
description:
"향후 사용을 위해 예약되었습니다. model_instructions_file 또는 AGENTS.md를 사용하세요.",
},
{
key: "developer_instructions",
type: "string",
description:
"세션에 주입할 추가 개발자 지침입니다(선택 사항).",
},
{
key: "log_dir",
type: "string (path)",
description:
"Codex가 로그 파일을 기록하는 디렉터리이며, 기본값은 $CODEX_HOME/log입니다. 이를 명시적으로 설정하면 해당 디렉터리에서 선택적 일반 텍스트 TUI 로그인 codex-tui.log도 활성화됩니다.",
},
{
key: "sqlite_home",
type: "string (path)",
description:
"Codex가 에이전트 작업 및 재개 가능한 기타 런타임 상태에 사용되는 SQLite 기반 상태 DB를 저장하는 디렉터리입니다.",
},
{
key: "compact_prompt",
type: "string",
description: "기록 압축 프롬프트를 인라인으로 재정의합니다.",
},
{
key: "model_instructions_file",
type: "string (path)",
description:
"AGENTS.md 대신 기본 제공 지침을 대체합니다.",
},
{
key: "personality",
type: "none | friendly | pragmatic",
description:
"supportsPersonality를 지원한다고 명시한 모델의 기본 커뮤니케이션 스타일입니다. 스레드/턴별로 또는 /personality을 통해 재정의할 수 있습니다.",
},
{
key: "service_tier",
type: "string",
description:
"새 턴에서 선호하는 서비스 등급입니다. fast 또는 활성 모델이 제공한다고 명시한 다른 등급을 사용하세요. fast는 요청 값 priority에 매핑됩니다.",
},
{
key: "experimental_compact_prompt_file",
type: "string (path)",
description:
"파일에서 압축 프롬프트 재정의를 불러옵니다(실험적).",
},
{
key: "skills.config",
type: "array",
description: "config.toml에 저장되는 스킬별 활성화 재정의입니다.",
},
{
key: "skills.config..path",
type: "string (path)",
description: "SKILL.md이 포함된 스킬 폴더의 경로입니다.",
},
{
key: "skills.config..enabled",
type: "boolean",
description: "참조된 스킬을 활성화하거나 비활성화합니다.",
},
{
key: "apps..enabled",
type: "boolean",
description:
"ID로 특정 앱/커넥터를 활성화하거나 비활성화합니다(기본값: true).",
},
{
key: "apps._default.enabled",
type: "boolean",
description:
"앱별로 재정의하지 않는 한 모든 앱에 적용되는 기본 활성화 상태입니다.",
},
{
key: "apps._default.destructive_enabled",
type: "boolean",
description:
"destructive_hint = true가 있는 앱 도구에 대한 기본 허용/거부 설정입니다.",
},
{
key: "apps._default.open_world_enabled",
type: "boolean",
description:
"open_world_hint = true가 있는 앱 도구에 대한 기본 허용/거부 설정입니다.",
},
{
key: "apps._default.approvals_reviewer",
type: "user | auto_review",
description:
"앱별로 재정의하지 않는 한 앱 도구 승인 프롬프트에 적용되는 기본 검토자입니다. 생략하면 앱이 최상위 approvals_reviewer 값을 상속합니다.",
},
{
key: "apps._default.default_tools_approval_mode",
type: "auto | prompt | writes | approve",
description:
"앱별 또는 도구별 재정의가 없는 앱 도구의 기본 승인 동작입니다.",
},
{
key: "apps..destructive_enabled",
type: "boolean",
description:
"이 앱에서 destructive_hint = true가 있는 도구를 허용하거나 차단합니다.",
},
{
key: "apps..open_world_enabled",
type: "boolean",
description:
"이 앱에서 open_world_hint = true가 있는 도구를 허용하거나 차단합니다.",
},
{
key: "apps..default_tools_enabled",
type: "boolean",
description:
"도구별 재정의가 없는 경우 이 앱의 도구에 적용되는 기본 활성화 상태입니다.",
},
{
key: "apps..approvals_reviewer",
type: "user | auto_review",
description:
"이 앱의 도구 승인 프롬프트를 검토하는 주체입니다. apps._default.approvals_reviewer을 재정의합니다.",
},
{
key: "apps..default_tools_approval_mode",
type: "auto | prompt | writes | approve",
description:
"도구별 재정의가 없는 경우 이 앱의 도구에 적용되는 기본 승인 동작입니다.",
},
{
key: "apps..tools..enabled",
type: "boolean",
description:
"앱 도구의 도구별 활성화 재정의입니다(예: repos/list).",
},
{
key: "apps..tools..approval_mode",
type: "auto | prompt | writes | approve",
description: "단일 앱 도구에 적용되는 도구별 승인 동작 재정의입니다.",
},
{
key: "tool_suggest.discoverables",
type: "array",
description:
'추가로 검색 가능한 커넥터 또는 플러그인에 대한 도구 제안을 허용합니다. 각 항목은 type = "connector" 또는 "plugin"와 id을 사용합니다.',
},
{
key: "tool_suggest.disabled_tools",
type: "array",
description:
'특정 검색 가능 커넥터 또는 플러그인에 대한 제안을 비활성화합니다. 각 항목은 type = "connector" 또는 "plugin"와 id을 사용합니다.',
},
{
key: "features.apps",
type: "boolean",
description:
"앱(커넥터) 통합을 활성화합니다(안정적, 기본적으로 켜짐).",
},
{
key: "features.hooks",
type: "boolean",
description:
"hooks.json 또는 인라인 [hooks] 구성에서 불러온 수명 주기 훅을 활성화합니다. features.codex_hooks은 더 이상 사용되지 않는 별칭입니다.",
},
{
key: "features.code_mode.enabled",
type: "boolean",
description:
"코드 모드 기능 구성을 활성화합니다. 이 기능은 개발 중이며 기본적으로 꺼져 있습니다.",
},
{
key: "features.code_mode.excluded_tool_namespaces",
type: "array",
description:
"코드 모드가 중첩된 코드 모드 도구 안내 및 실행기 노출에서 제외하는 도구 네임스페이스입니다.",
},
{
key: "features.code_mode.direct_only_tool_namespaces",
type: "array",
description:
"코드 모드에서 직접 도구 호출을 통해서만 사용할 수 있는 도구 네임스페이스입니다.",
},
{
key: "features.rollout_budget.enabled",
type: "boolean",
description:
"롤아웃 예산 추적을 활성화합니다. 이 기능은 개발 중이며 기본적으로 꺼져 있습니다. 활성화하면 features.rollout_budget.limit_tokens이 필요합니다.",
},
{
key: "features.rollout_budget.limit_tokens",
type: "integer",
description:
"롤아웃 예산 추적의 양수 토큰 한도입니다. 롤아웃 예산을 활성화하면 필수입니다.",
},
{
key: "features.rollout_budget.reminder_interval_tokens",
type: "integer",
description:
"롤아웃 예산 알림 사이의 양수 토큰 간격입니다. 기본값은 limit_tokens의 10%이며, 최솟값은 1토큰입니다.",
},
{
key: "features.rollout_budget.sampling_token_weight",
type: "number",
description:
"롤아웃 예산 계산에서 샘플링된 토큰에 적용되는 유한한 음이 아닌 배수입니다. 기본값은 1.0입니다.",
},
{
key: "features.rollout_budget.prefill_token_weight",
type: "number",
description:
"롤아웃 예산 계산에서 프리필 토큰에 적용되는 유한한 음이 아닌 배수입니다. 기본값은 1.0입니다.",
},
{
key: "hooks",
type: "table",
description:
"config.toml에서 인라인으로 구성한 수명 주기 훅입니다. hooks.json과 동일한 이벤트 스키마를 사용합니다. 예제와 지원되는 이벤트는 훅 가이드를 참조하세요.",
},
{
key: "hooks.",
type: "array",
description:
"PreToolUse, PermissionRequest, PostToolUse, PreCompact, PostCompact, SessionStart, SessionEnd, SubagentStart, SubagentStop, UserPromptSubmit 또는 Stop 같은 훅 이벤트의 매처 그룹입니다.",
},
{
key: "hooks.[].hooks",
type: "array",
description:
"매처 그룹의 훅 핸들러입니다. 현재 명령 훅을 지원하며, 프롬프트 및 에이전트 훅 핸들러는 파싱되지만 건너뜁니다.",
},
{
key: "hooks.[].hooks[].commandWindows",
type: "string",
description:
"명령 훅의 Windows 전용 명령 재정의입니다. TOML 별칭 command_windows도 사용할 수 있습니다.",
},
{
key: "features.memories",
type: "boolean",
description:
"Memories 를 활성화합니다(기본적으로 꺼짐).",
},
{
key: "mcp_servers..command",
type: "string",
description: "MCP stdio 서버의 시작 명령입니다.",
},
{
key: "mcp_servers..args",
type: "array",
description: "MCP stdio 서버 명령에 전달되는 인수입니다.",
},
{
key: "mcp_servers..env",
type: "map<string,string>",
description: "MCP stdio 서버에 전달되는 환경 변수입니다.",
},
{
key: "mcp_servers..env_vars",
type: 'array<string | { name = string, source = "local" | "remote" }>',
description:
'MCP stdio 서버의 허용 목록에 추가할 환경 변수입니다. 문자열 항목의 기본값은 source = "local"입니다. 실행기 기반 원격 stdio에서만 source = "remote"을 사용하세요.',
},
{
key: "mcp_servers..cwd",
type: "string",
description: "MCP stdio 서버 프로세스의 작업 디렉터리입니다.",
},
{
key: "mcp_servers..url",
type: "string",
description: "MCP 스트리밍 가능 HTTP 서버의 엔드포인트입니다.",
},
{
key: "mcp_servers..auth",
type: "oauth | chatgpt",
description:
"구성된 bearer 토큰과 인증 헤더 이후에 적용되는 MCP HTTP 서버의 인증 대체 방식입니다. 기본값인 oauth은 사용 가능한 경우 저장된 MCP OAuth 자격 증명을 사용합니다. chatgpt는 신뢰할 수 있는 자사 ChatGPT 오리진에 현재 ChatGPT 세션을 사용한 후 저장된 OAuth로 대체합니다. 확인되는 자격 증명 소스가 없으면 두 모드 모두 인증 없이 연결할 수 있습니다.",
},
{
key: "mcp_servers..bearer_token_env_var",
type: "string",
description:
"MCP HTTP 서버의 bearer 토큰을 제공하는 환경 변수입니다.",
},
{
key: "mcp_servers..http_headers",
type: "map<string,string>",
description: "각 MCP HTTP 요청에 포함되는 정적 HTTP 헤더입니다.",
},
{
key: "mcp_servers..env_http_headers",
type: "map<string,string>",
description:
"MCP HTTP 서버의 환경 변수에서 채워지는 HTTP 헤더입니다.",
},
{
key: "mcp_servers..enabled",
type: "boolean",
description: "구성을 제거하지 않고 MCP 서버를 비활성화합니다.",
},
{
key: "mcp_servers..required",
type: "boolean",
description:
"true이면 활성화된 이 MCP 서버를 초기화할 수 없을 때 시작/재개에 실패합니다.",
},
{
key: "mcp_servers..startup_timeout_sec",
type: "number",
description:
"MCP 서버의 기본 10초 시작 제한 시간을 재정의합니다.",
},
{
key: "mcp_servers..startup_timeout_ms",
type: "number",
description: "startup_timeout_sec의 밀리초 단위 별칭입니다.",
},
{
key: "mcp_servers..tool_timeout_sec",
type: "number",
description:
"MCP 서버의 도구별 기본 제한 시간인 60초를 재정의합니다.",
},
{
key: "mcp_servers..enabled_tools",
type: "array",
description: "MCP 서버에서 노출하는 도구 이름의 허용 목록입니다.",
},
{
key: "mcp_servers..disabled_tools",
type: "array",
description:
"MCP 서버에 대해 enabled_tools 이후에 적용되는 거부 목록입니다.",
},
{
key: "mcp_servers..default_tools_approval_mode",
type: "auto | prompt | writes | approve",
description:
"도구별 재정의가 없는 경우 이 서버의 MCP 도구에 적용되는 기본 승인 동작입니다.",
},
{
key: "mcp_servers..tools..approval_mode",
type: "auto | prompt | writes | approve",
description:
"이 서버의 단일 MCP 도구에 적용되는 도구별 승인 동작 재정의입니다.",
},
{
key: "mcp_servers..scopes",
type: "array",
description:
"해당 MCP 서버에 인증할 때 요청할 OAuth 범위입니다.",
},
{
key: "mcp_servers..oauth_resource",
type: "string",
description:
"MCP 로그인 중 포함할 선택적 RFC 8707 OAuth 리소스 매개변수입니다.",
},
{
key: "mcp_servers..experimental_environment",
type: "local | remote",
description:
"MCP 서버의 실험적 배치 위치입니다. remote는 원격 실행기 환경을 통해 stdio 서버를 시작합니다. 스트리밍 가능 HTTP의 원격 배치는 구현되지 않았습니다.",
},
{
key: "agents",
type: "table",
description:
"다중 에이전트 설정 및 사용자 지정 역할 선언입니다. 스칼라 설정 이름은 예약되어 있으므로 사용자 지정 역할 이름으로 사용할 수 없습니다.",
},
{
key: "agents.enabled",
type: "boolean",
description: "다중 에이전트 도구를 활성화하거나 비활성화합니다(기본값: true).",
},
{
key: "agents.max_concurrent_threads_per_session",
type: "number",
description:
"기본 스레드를 제외하고 동시에 열 수 있는 생성된 에이전트 스레드의 최대 개수입니다. 설정하지 않으면 Codex가 기본값을 선택합니다.",
},
{
key: "agents.max_threads",
type: "number",
description:
"agents.max_concurrent_threads_per_session의 레거시 별칭입니다.",
},
{
key: "agents.default_subagent_model",
type: "string",
description:
"생성된 에이전트의 기본 모델입니다. 명시적으로 지정한 생성 모델이 우선합니다.",
},
{
key: "agents.default_subagent_reasoning_effort",
type: "string",
description:
"생성된 에이전트의 기본 추론 노력 수준입니다. 명시적으로 지정한 생성 노력 수준이 우선합니다.",
},
{
key: "agents.interrupt_message",
type: "boolean",
description:
"에이전트 턴이 중단될 때 모델에 표시되는 메시지를 기록합니다(기본값: true).",
},
{
key: "agents..description",
type: "string",
description:
"Codex가 해당 에이전트 유형을 선택하고 생성할 때 표시되는 역할 지침입니다.",
},
{
key: "agents..config_file",
type: "string (path)",
description:
"해당 역할의 TOML 구성 계층 경로입니다. 상대 경로는 역할을 선언한 구성 파일을 기준으로 확인됩니다.",
},
{
key: "memories.generate_memories",
type: "boolean",
description:
"false이면 새로 생성된 스레드가 메모리 생성 입력으로 저장되지 않습니다. 기본값은 true입니다.",
},
{
key: "memories.use_memories",
type: "boolean",
description:
"false이면 Codex가 향후 세션에 기존 메모리를 주입하지 않습니다. 기본값은 true입니다.",
},
{
key: "memories.disable_on_external_context",
type: "boolean",
description:
"true이면 MCP 도구 호출, 웹 검색 또는 도구 검색 같은 외부 컨텍스트를 사용하는 스레드가 메모리 생성에서 제외됩니다. 기본값은 false입니다. 레거시 별칭: memories.no_memories_if_mcp_or_web_search.",
},
{
key: "memories.max_raw_memories_for_consolidation",
type: "number",
description:
"전역 통합을 위해 유지되는 최근 원시 메모리의 최대 개수입니다. 기본값은 256이며 4096로 제한됩니다.",
},
{
key: "memories.max_unused_days",
type: "number",
description:
"메모리가 마지막으로 사용된 후 통합 대상에서 제외되기까지의 최대 일수입니다. 기본값은 30이며 0-365 범위로 제한됩니다.",
},
{
key: "memories.max_rollout_age_days",
type: "number",
description:
"메모리 생성 대상으로 고려하는 스레드의 최대 보존 기간입니다. 기본값은 30이며 0-90 범위로 제한됩니다.",
},
{
key: "memories.max_rollouts_per_startup",
type: "number",
description:
"시작 단계마다 처리하는 롤아웃 후보의 최대 개수입니다. 기본값은 16이며 128으로 제한됩니다.",
},
{
key: "memories.min_rollout_idle_hours",
type: "number",
description:
"스레드를 메모리 생성 대상으로 고려하기 전 필요한 최소 유휴 시간입니다. 기본값은 6이며 1-48 범위로 제한됩니다.",
},
{
key: "memories.min_rate_limit_remaining_percent",
type: "number",
description:
"메모리 생성을 시작하기 전에 Codex 속도 제한 창에 남아 있어야 하는 최소 비율입니다. 기본값은 25이며 0-100 범위로 제한됩니다.",
},
{
key: "memories.extract_model",
type: "string",
description: "스레드별 메모리 추출에 사용할 선택적 모델 재정의입니다.",
},
{
key: "memories.consolidation_model",
type: "string",
description: "전역 메모리 통합에 사용할 선택적 모델 재정의입니다.",
},
{
key: "features.unified_exec",
type: "boolean",
description:
"통합 PTY 기반 exec 도구를 사용합니다(안정적, Windows를 제외하고 기본적으로 활성화됨).",
},
{
key: "features.shell_snapshot",
type: "boolean",
description:
"반복 명령의 실행 속도를 높이기 위해 셸 환경의 스냅샷을 생성합니다(안정적, 기본적으로 켜짐).",
},
{
key: "features.multi_agent",
type: "boolean",
description:
"다중 에이전트 협업 도구(spawn_agent, send_input, resume_agent, wait_agent 및 close_agent)를 활성화합니다(안정적, 기본적으로 켜짐).",
},
{
key: "features.goals",
type: "boolean",
description:
"영구 목표와 자동 계속을 활성화합니다(안정적, 기본적으로 켜짐).",
},
{
key: "features.remote_plugin",
type: "boolean",
description: "원격 플러그인 카탈로그를 활성화합니다(안정적, 기본적으로 켜짐).",
},
{
key: "features.personality",
type: "boolean",
description:
"성격 선택 컨트롤을 활성화합니다(안정적, 기본적으로 켜짐).",
},
{
key: "features.network_proxy",
type: "boolean | table",
description:
"샌드박스 네트워킹을 활성화합니다. domains 같은 네트워크 정책 옵션을 설정할 때는 테이블 형식을 사용하세요(실험적, 기본적으로 꺼짐).",
},
{
key: "features.network_proxy.enabled",
type: "boolean",
description: "샌드박스 네트워킹을 활성화합니다. 기본값은 false입니다.",
},
{
key: "features.network_proxy.domains",
type: "map<string, allow | deny>",
description:
"샌드박스 네트워킹의 도메인 정책입니다. 기본적으로 설정되어 있지 않으므로 allow 규칙을 추가할 때까지 외부 대상이 허용되지 않습니다. 정확한 호스트, 하위 도메인만을 위한 *.example.com, 최상위 도메인과 하위 도메인을 위한 **.example.com 및 전역 * 허용 규칙을 지원합니다. *은 공개 외부 액세스를 광범위하게 개방하므로 범위가 제한된 규칙을 사용하세요. 차단할 대상에는 deny 규칙을 추가합니다. 충돌 시 deny이 우선합니다.",
},
{
key: "features.network_proxy.unix_sockets",
type: "map<string, allow | deny>",
description:
"샌드박스 네트워킹의 Unix 소켓 정책입니다. 기본적으로 설정되어 있지 않습니다. 허용할 소켓에는 allow 항목을 추가하세요.",
},
{
key: "features.network_proxy.allow_local_binding",
type: "boolean",
description:
"더 광범위한 로컬/사설 네트워크 액세스를 허용합니다. 기본값은 false입니다. 정확한 로컬 IP 리터럴 또는 localhost 허용 규칙으로 특정 로컬 대상을 허용할 수 있습니다.",
},
{
key: "features.network_proxy.enable_socks5",
type: "boolean",
description: "SOCKS5 지원을 노출합니다. 기본값은 true입니다.",
},
{
key: "features.network_proxy.enable_socks5_udp",
type: "boolean",
description: "SOCKS5를 통한 UDP를 허용합니다. 기본값은 true입니다.",
},
{
key: "features.network_proxy.allow_upstream_proxy",
type: "boolean",
description:
"환경의 업스트림 프록시를 통한 연결을 허용합니다. 기본값은 true입니다.",
},
{
key: "features.network_proxy.dangerously_allow_non_loopback_proxy",
type: "boolean",
description:
"루프백이 아닌 리스너 주소를 허용합니다. 기본값은 false입니다. 활성화하면 프록시 리스너가 localhost 외부에 노출될 수 있습니다.",
},
{
key: "features.network_proxy.dangerously_allow_all_unix_sockets",
type: "boolean",
description:
"허용 목록에 있는 대상만 액세스하는 대신 임의의 Unix 소켓 대상을 허용합니다. 기본값은 false입니다. 엄격히 통제되는 환경에서만 사용하세요.",
},
{
key: "features.network_proxy.proxy_url",
type: "string",
description:
'샌드박스 네트워킹의 HTTP 리스너 URL입니다. 기본값은 "http://127.0.0.1:3128"입니다.',
},
{
key: "features.network_proxy.socks_url",
type: "string",
description:
'SOCKS5 리스너 URL입니다. 기본값은 "http://127.0.0.1:8081"입니다.',
},
{
key: "features.web_search",
type: "boolean",
description:
"더 이상 사용되지 않는 레거시 토글입니다. 최상위 web_search 설정을 사용하세요.",
},
{
key: "features.web_search_cached",
type: "boolean",
description:
'더 이상 사용되지 않는 레거시 토글입니다. web_search가 설정되지 않은 경우 true는 web_search = "cached"에 매핑됩니다.',
},
{
key: "features.web_search_request",
type: "boolean",
description:
'더 이상 사용되지 않는 레거시 토글입니다. web_search이 설정되지 않은 경우 true는 web_search = "live"에 매핑됩니다.',
},
{
key: "features.shell_tool",
type: "boolean",
description:
"명령 실행을 위한 기본 shell 도구를 활성화합니다(안정적, 기본적으로 켜짐).",
},
{
key: "features.enable_request_compression",
type: "boolean",
description:
"지원되는 경우 zstd로 스트리밍 요청 본문을 압축합니다(안정적, 기본적으로 켜짐).",
},
{
key: "features.skill_mcp_dependency_install",
type: "boolean",
description:
"스킬에 필요한 누락된 MCP 종속성의 설치 요청 및 설치를 허용합니다(안정적, 기본적으로 켜짐).",
},
{
key: "features.fast_mode",
type: "boolean",
description:
"활성 모델이 제공한다고 명시한 경우 Fast 등급 명령을 포함하여 TUI에서 모델 카탈로그 서비스 등급 선택을 활성화합니다(안정적, 기본적으로 켜짐).",
},
{
key: "features.prevent_idle_sleep",
type: "boolean",
description:
"턴이 실행 중일 때 머신이 절전 모드로 전환되지 않도록 합니다(실험적, 기본적으로 꺼짐).",
},
{
key: "suppress_unstable_features_warning",
type: "boolean",
description:
"개발 중인 기능 플래그가 활성화될 때 표시되는 경고를 숨깁니다.",
},
{
key: "model_providers.",
type: "table",
description:
"사용자 지정 제공자 정의입니다. 기본 제공자 ID(openai, ollama 및 lmstudio)는 예약되어 있으므로 재정의할 수 없습니다.",
},
{
key: "model_providers..name",
type: "string",
description: "사용자 지정 모델 제공자의 표시 이름입니다.",
},
{
key: "model_providers..base_url",
type: "string",
description: "모델 제공자의 API 기본 URL입니다.",
},
{
key: "model_providers..env_key",
type: "string",
description: "제공자 API key를 공급하는 환경 변수입니다.",
},
{
key: "model_providers..env_key_instructions",
type: "string",
description: "제공자 API key에 대한 선택적 설정 지침입니다.",
},
{
key: "model_providers..experimental_bearer_token",
type: "string",
description:
"제공자의 직접 bearer 토큰입니다(권장하지 않음, env_key 사용).",
},
{
key: "model_providers..requires_openai_auth",
type: "boolean",
description:
"제공자가 OpenAI 인증을 사용합니다(기본값: false).",
},
{
key: "model_providers..wire_api",
type: "responses",
description:
"제공자가 사용하는 프로토콜입니다. responses만 지원되며, 생략할 경우 기본값입니다.",
},
{
key: "model_providers..query_params",
type: "map<string,string>",
description: "제공자 요청에 추가되는 쿼리 매개변수입니다.",
},
{
key: "model_providers..http_headers",
type: "map<string,string>",
description: "제공자 요청에 추가되는 정적 HTTP 헤더입니다.",
},
{
key: "model_providers..env_http_headers",
type: "map<string,string>",
description:
"환경 변수가 있는 경우 해당 변수에서 채워지는 HTTP 헤더입니다.",
},
{
key: "model_providers..request_max_retries",
type: "number",
description:
"제공자에 보내는 HTTP 요청의 재시도 횟수입니다(기본값: 4).",
},
{
key: "model_providers..stream_max_retries",
type: "number",
description: "SSE 스트리밍 중단 시 재시도 횟수입니다(기본값: 5).",
},
{
key: "model_providers..stream_idle_timeout_ms",
type: "number",
description:
"SSE 스트림의 밀리초 단위 유휴 제한 시간입니다(기본값: 300000).",
},
{
key: "model_providers..supports_websockets",
type: "boolean",
description:
"해당 제공자가 Responses API WebSocket 전송을 지원하는지 여부입니다.",
},
{
key: "model_providers..supports_standalone_web_search",
type: "boolean",
description:
"호환되는 독립 실행형 웹 검색 엔드포인트 지원을 명시합니다(기본값: false). 독립 실행형 검색은 아직 개발 중이며 기본적으로 꺼져 있습니다. 제공자가 호환된다는 것만으로는 활성화되지 않습니다.",
},
{
key: "model_providers..auth",
type: "table",
description:
"사용자 지정 제공자의 명령 기반 bearer 토큰 구성입니다. env_key, experimental_bearer_token 또는 requires_openai_auth과 함께 사용하지 마세요.",
},
{
key: "model_providers..auth.command",
type: "string",
description:
"Codex에 bearer 토큰이 필요할 때 실행할 명령입니다. 명령은 토큰을 stdout에 출력해야 합니다.",
},
{
key: "model_providers..auth.args",
type: "array",
description: "토큰 명령에 전달되는 인수입니다.",
},
{
key: "model_providers..auth.timeout_ms",
type: "number",
description:
"토큰 명령의 최대 실행 시간(밀리초)입니다(기본값: 5000).",
},
{
key: "model_providers..auth.refresh_interval_ms",
type: "number",
description:
"Codex가 토큰을 사전에 갱신하는 밀리초 단위 주기입니다(기본값: 300000). 인증 재시도 후에만 갱신하려면 0로 설정하세요.",
},
{
key: "model_providers..auth.cwd",
type: "string (path)",
description: "토큰 명령의 작업 디렉터리입니다.",
},
{
key: "model_providers.amazon-bedrock.aws.profile",
type: "string",
description:
"기본 제공 amazon-bedrock 제공자가 사용하는 AWS 프로필 이름입니다.",
},
{
key: "model_providers.amazon-bedrock.aws.region",
type: "string",
description: "기본 제공 amazon-bedrock 제공자가 사용하는 AWS 리전입니다.",
},
{
key: "model_reasoning_effort",
type: "minimal | low | medium | high | xhigh",
description:
"지원되는 모델의 추론 노력 수준을 조정합니다(Responses API 전용, xhigh은 모델에 따라 다름).",
},
{
key: "plan_mode_reasoning_effort",
type: "none | minimal | low | medium | high | xhigh",
description:
"계획 모드 전용 추론 재정의입니다. 설정하지 않으면 계획 모드는 기본 제공 사전 설정의 기본값을 사용합니다.",
},
{
key: "model_reasoning_summary",
type: "auto | concise | detailed | none",
description:
"추론 요약의 상세도를 선택하거나 요약을 완전히 비활성화합니다.",
},
{
key: "model_verbosity",
type: "low | medium | high",
description:
"선택적 GPT-5 Responses API 상세도 재정의입니다. 설정하지 않으면 선택한 모델/사전 설정의 기본값을 사용합니다.",
},
{
key: "model_supports_reasoning_summaries",
type: "boolean",
description: "Codex가 추론 메타데이터를 보내거나 보내지 않도록 강제합니다.",
},
{
key: "shell_environment_policy.inherit",
type: "all | core | none",
description:
"하위 프로세스를 생성할 때 적용되는 기본 환경 상속 방식입니다.",
},
{
key: "shell_environment_policy.ignore_default_excludes",
type: "boolean",
description:
"다른 필터를 실행하기 전에 KEY, SECRET 또는 TOKEN을 포함하는 변수를 유지합니다(기본값: true). 자동 비밀 이름 제외를 적용하려면 false로 설정하세요.",
},
{
key: "shell_environment_policy.filters",
type: "map<string, include | exclude>",
description:
"대소문자를 구분하지 않는 정규 환경 변수 패턴 필터입니다. 포함 항목은 허용 목록을 만들며 제외된 값을 복원할 수 없습니다. 명시적 set 값은 제외 후에 적용됩니다. 동일한 계층에서 필터를 레거시 exclude 또는 include_only 배열과 함께 사용하지 마세요.",
},
{
key: "shell_environment_policy.exclude",
type: "array",
description:
"레거시 환경 변수 제외 패턴입니다. 새 구성에는 shell_environment_policy.filters를 사용하세요. 동일한 계층에서 두 형식을 함께 사용하지 마세요.",
},
{
key: "shell_environment_policy.include_only",
type: "array",
description:
"레거시 환경 변수 패턴 허용 목록입니다. 새 구성에는 shell_environment_policy.filters을 사용하세요. 동일한 계층에서 두 형식을 함께 사용하지 마세요.",
},
{
key: "shell_environment_policy.set",
type: "map<string,string>",
description:
"제외 후 주입되는 명시적 환경 값입니다. 포함 필터에서 여전히 제거될 수 있습니다.",
},
{
key: "shell_environment_policy.experimental_use_profile",
type: "boolean",
description: "하위 프로세스를 생성할 때 사용자 셸 프로필을 사용합니다.",
},
{
key: "project_root_markers",
type: "array",
description:
"프로젝트 루트를 찾기 위해 상위 디렉터리를 검색할 때 사용하는 프로젝트 루트 표시 파일 이름 목록입니다.",
},
{
key: "project_doc_max_bytes",
type: "number",
description:
"프로젝트 지침을 작성할 때 AGENTS.md에서 읽는 최대 바이트 수입니다.",
},
{
key: "project_doc_fallback_filenames",
type: "array",
description: "AGENTS.md이 없을 때 추가로 시도할 파일 이름입니다.",
},
{
key: "history.persistence",
type: "save-all | none",
description:
"Codex가 세션 기록을 history.jsonl에 저장할지 제어합니다.",
},
{
key: "tool_output_token_limit",
type: "number",
description:
"개별 도구/함수 출력을 기록에 저장하기 위한 토큰 예산입니다.",
},
{
key: "background_terminal_max_timeout",
type: "number",
description:
"빈 write_stdin 폴링(백그라운드 터미널 폴링)의 최대 폴링 시간(밀리초)입니다. 기본값: 300000(5분). 이전 background_terminal_timeout 키를 대체합니다.",
},
{
key: "history.max_bytes",
type: "number",
description:
"설정하면 가장 오래된 항목을 삭제하여 기록 파일 크기를 지정한 바이트로 제한합니다.",
},
{
key: "file_opener",
type: "vscode | vscode-insiders | windsurf | cursor | none",
description:
"Codex 출력의 인용을 여는 데 사용하는 URI 스키마입니다(기본값: vscode).",
},
{
key: "otel.environment",
type: "string",
description:
"내보내는 OpenTelemetry 이벤트에 적용되는 환경 태그입니다(기본값: dev).",
},
{
key: "otel.exporter",
type: "none | otlp-http | otlp-grpc",
description:
"OpenTelemetry 내보내기를 선택하고 엔드포인트 메타데이터를 제공합니다.",
},
{
key: "otel.trace_exporter",
type: "none | otlp-http | otlp-grpc",
description:
"OpenTelemetry 추적 내보내기를 선택하고 엔드포인트 메타데이터를 제공합니다.",
},
{
key: "otel.metrics_exporter",
type: "none | statsig | otlp-http | otlp-grpc",
description:
"OpenTelemetry 메트릭 내보내기를 선택합니다(기본값: statsig).",
},
{
key: "otel.log_user_prompt",
type: "boolean",
description:
"원시 사용자 프롬프트를 OpenTelemetry 로그와 함께 내보내도록 선택합니다.",
},
{
key: "otel.exporter..endpoint",
type: "string",
description: "OTEL 로그의 내보내기 엔드포인트입니다.",
},
{
key: "otel.exporter..protocol",
type: "binary | json",
description: "OTLP/HTTP 내보내기에서 사용하는 프로토콜입니다.",
},
{
key: "otel.exporter..headers",
type: "map<string,string>",
description: "OTEL 내보내기 요청에 포함되는 정적 헤더입니다.",
},
{
key: "otel.trace_exporter..endpoint",
type: "string",
description: "OTEL 로그의 추적 내보내기 엔드포인트입니다.",
},
{
key: "otel.trace_exporter..protocol",
type: "binary | json",
description: "OTLP/HTTP 추적 내보내기에서 사용하는 프로토콜입니다.",
},
{
key: "otel.trace_exporter..headers",
type: "map<string,string>",
description: "OTEL 추적 내보내기 요청에 포함되는 정적 헤더입니다.",
},
{
key: "otel.exporter..tls.ca-certificate",
type: "string",
description: "OTEL 내보내기 TLS의 CA 인증서 경로입니다.",
},
{
key: "otel.exporter..tls.client-certificate",
type: "string",
description: "OTEL 내보내기 TLS의 클라이언트 인증서 경로입니다.",
},
{
key: "otel.exporter..tls.client-private-key",
type: "string",
description: "OTEL 내보내기 TLS의 클라이언트 비공개 키 경로입니다.",
},
{
key: "otel.trace_exporter..tls.ca-certificate",
type: "string",
description: "OTEL 추적 내보내기 TLS의 CA 인증서 경로입니다.",
},
{
key: "otel.trace_exporter..tls.client-certificate",
type: "string",
description: "OTEL 추적 내보내기 TLS의 클라이언트 인증서 경로입니다.",
},
{
key: "otel.trace_exporter..tls.client-private-key",
type: "string",
description: "OTEL 추적 내보내기 TLS의 클라이언트 비공개 키 경로입니다.",
},
{
key: "tui",
type: "table",
description:
"인라인 데스크톱 알림 활성화 같은 TUI 전용 옵션입니다.",
},
{
key: "tui.notifications",
type: "boolean | array",
description:
"TUI 알림을 활성화합니다. 선택적으로 특정 이벤트 유형으로 제한할 수 있습니다.",
},
{
key: "tui.notification_method",
type: "auto | osc9 | bel",
description:
"터미널 알림에 사용할 알림 방식입니다(기본값: auto).",
},
{
key: "tui.notification_condition",
type: "unfocused | always",
description:
"터미널에 포커스가 없을 때만 TUI 알림을 보낼지, 포커스 여부와 관계없이 보낼지 제어합니다. 기본값은 unfocused입니다.",
},
{
key: "tui.animations",
type: "boolean",
description:
"터미널 애니메이션(환영 화면, 반짝임, 스피너)을 활성화합니다(기본값: true).",
},
{
key: "tui.alternate_screen",
type: "auto | always | never",
description:
"TUI의 대체 화면 사용을 제어합니다(기본값: auto, auto는 스크롤백을 보존하기 위해 Zellij에서 대체 화면을 건너뜀).",
},
{
key: "tui.resume_cwd",
type: "current | session",
description:
"세션을 재개하거나 포크할 때 사용할 작업 디렉터리입니다. 설정하지 않은 상태에서 현재 디렉터리가 세션에 저장된 디렉터리와 다르면 Codex가 선택을 요청합니다.",
},
{
key: "tui.vim_mode_default",
type: "boolean",
description:
"작성기를 삽입 모드가 아닌 Vim 일반 모드로 시작합니다(기본값: false). 세션별로 /vim을 사용해 전환할 수도 있습니다.",
},
{
key: "tui.raw_output_mode",
type: "boolean",
description:
"복사하기 쉬운 터미널 선택을 위해 TUI를 원시 스크롤백 모드로 시작합니다(기본값: false). /raw 또는 기본 alt-r 키 바인딩으로 전환할 수 있습니다.",
},
{
key: "tui.show_tooltips",
type: "boolean",
description:
"TUI 환영 화면에 온보딩 도구 설명을 표시합니다(기본값: true).",
},
{
key: "tui.status_line",
type: "array | null",
description:
"TUI 바닥글 상태 표시줄 항목 식별자의 정렬된 목록입니다. null는 상태 표시줄을 비활성화합니다.",
},
{
key: "tui.terminal_title",
type: "array | null",
description:
'터미널 창/탭 제목 항목 식별자의 정렬된 목록입니다. 기본값은 ["spinner", "project"]이며, null는 제목 업데이트를 비활성화합니다.',
},
{
key: "tui.theme",
type: "string",
description:
"구문 강조 테마 재정의입니다(kebab-case 테마 이름).",
},
{
key: "tui.keymap..",
type: "string | array",
description:
"TUI 작업의 키보드 단축키 바인딩입니다. 지원되는 컨텍스트에는 global, chat, composer, editor, vim_normal, vim_operator, vim_text_object, pager, list 및 approval이 있습니다. 일부 작성기 작업은 일치하는 tui.keymap.global 바인딩으로 대체됩니다. 지원되는 경우 컨텍스트별 바인딩이 우선합니다.",
},
{
key: "tui.keymap.. = []",
type: "empty array",
description:
"해당 키맵 컨텍스트에서 작업의 바인딩을 해제합니다. 키 이름은 ctrl-a, shift-enter, page-down 또는 minus 같은 정규화된 문자열을 사용합니다.",
},
{
key: "plugins..mcp_servers..enabled",
type: "boolean",
description:
"플러그인 매니페스트를 변경하지 않고 설치된 플러그인에 번들된 MCP 서버를 활성화하거나 비활성화합니다.",
},
{
key: "plugins..mcp_servers..default_tools_approval_mode",
type: "auto | prompt | writes | approve",
description:
"플러그인에서 제공하는 MCP 서버의 도구에 적용되는 기본 승인 동작입니다.",
},
{
key: "plugins..mcp_servers..enabled_tools",
type: "array",
description:
"플러그인에서 제공하는 MCP 서버가 노출하는 도구의 허용 목록입니다.",
},
{
key: "plugins..mcp_servers..disabled_tools",
type: "array",
description:
"플러그인에서 제공하는 MCP 서버에 대해 enabled_tools 이후에 적용되는 거부 목록입니다.",
},
{
key: "plugins..mcp_servers..tools..approval_mode",
type: "auto | prompt | writes | approve",
description:
"플러그인에서 제공하는 MCP 도구에 적용되는 도구별 승인 동작 재정의입니다.",
},
{
key: "tui.model_availability_nux.",
type: "integer",
description: "모델 슬러그를 키로 사용하는 내부 시작 도구 설명 상태입니다.",
},
{
key: "hide_agent_reasoning",
type: "boolean",
description:
"TUI와 codex exec 출력 모두에서 추론 이벤트를 숨깁니다.",
},
{
key: "show_raw_agent_reasoning",
type: "boolean",
description:
"활성 모델이 원시 추론 콘텐츠를 내보낼 때 이를 표시합니다.",
},
{
key: "disable_paste_burst",
type: "boolean",
description: "TUI에서 연속 붙여넣기 감지를 비활성화합니다.",
},
{
key: "windows_wsl_setup_acknowledged",
type: "boolean",
description: "Windows 온보딩 확인 여부를 추적합니다(Windows 전용).",
},
{
key: "chatgpt_base_url",
type: "string",
description: "ChatGPT 로그인 흐름에서 사용하는 기본 URL을 재정의합니다.",
},
{
key: "cli_auth_credentials_store",
type: "file | keyring | auto",
description:
"CLI에서 캐시된 자격 증명을 저장할 위치를 제어합니다(파일 기반 auth.json 또는 OS 키체인).",
},
{
key: "mcp_oauth_credentials_store",
type: "auto | file | keyring",
description: "MCP OAuth 자격 증명의 기본 저장소입니다.",
},
{
key: "mcp_oauth_callback_port",
type: "integer",
description:
"MCP OAuth 로그인 중 사용하는 로컬 HTTP 콜백 서버의 선택적 고정 포트입니다. 설정하지 않으면 Codex가 OS에서 선택한 임시 포트에 바인딩합니다.",
},
{
key: "mcp_oauth_callback_url",
type: "string",
description:
"MCP OAuth 로그인의 선택적 기본 콜백 URL 재정의입니다(예: devbox 인그레스 URL). Codex는 최종 OAuth redirect_uri을 보내기 전에 서버별 콜백 ID를 추가하므로, 완전히 파생된 URI를 제공자에 등록하세요. mcp_oauth_callback_port은 계속해서 콜백 리스너 포트를 제어합니다.",
},
{
key: "experimental_use_unified_exec_tool",
type: "boolean",
description:
"통합 exec 활성화를 위한 레거시 이름입니다. [features].unified_exec 또는 codex --enable unified_exec를 사용하세요.",
},
{
key: "tools.web_search",
type: 'boolean | { context_size = "low|medium|high", allowed_domains = [string], location = { country, region, city, timezone } }',
description:
"선택적 웹 검색 도구 구성입니다. 레거시 boolean 형식도 계속 사용할 수 있지만, 객체 형식을 사용하면 검색 컨텍스트 크기, 허용 도메인 및 대략적인 사용자 위치를 설정할 수 있습니다.",
},
{
key: "tools.view_image",
type: "boolean",
description: "로컬 이미지 첨부 도구 view_image을 활성화합니다.",
},
{
key: "web_search",
type: "disabled | cached | indexed | live",
description:
'웹 검색 모드입니다(기본값: "cached". cached는 외부 웹 액세스 없이 OpenAI에서 관리하는 인덱스를 사용하고, indexed는 검색 인덱스에서 허용한 경우에만 외부 액세스를 허용합니다. --yolo 또는 다른 전체 액세스 샌드박스 설정을 사용하면 기본값은 "live"입니다). 제한 없는 실시간 검색에는 "live"을 사용하고, 도구를 제거하려면 "disabled"을 사용하세요.',
},
{
key: "default_permissions",
type: "string",
description:
"샌드박스 도구 호출에 적용할 기본 권한 프로필의 이름입니다. 기본 제공 프로필은 :read-only, :workspace 및 :danger-full-access입니다. 사용자 지정 프로필 이름에는 일치하는 [permissions.<name>] 테이블이 필요합니다. sandbox_mode 또는 [sandbox_workspace_write]와 함께 사용하지 마세요.",
},
{
key: "permissions..description",
type: "string",
description:
"이름이 지정된 프로필에 관해 사람이 읽을 수 있는 설명입니다. 프로필은 extends를 통해 상위 프로필의 설명을 상속하지 않습니다.",
},
{
key: "permissions..extends",
type: "string",
description:
"이름이 지정된 이 프로필보다 먼저 적용되는 선택적 상위 프로필입니다. 다른 이름의 프로필, :read-only 또는 :workspace로 설정하세요. :danger-full-access, 정의되지 않은 상위 프로필 및 순환 참조는 거부됩니다.",
},
{
key: "permissions..workspace_roots",
type: "table",
description:
"세션의 런타임 작업 공간 루트와 함께 :workspace_roots 파일 시스템 규칙이 적용되는 프로필 정의 작업 공간 루트입니다.",
},
{
key: "permissions..workspace_roots.",
type: "boolean",
description:
"true일 때 경로를 프로필의 작업 공간 루트 집합에 포함합니다. 비활성화된 항목은 계속 비활성 상태로 유지됩니다.",
},
{
key: "permissions..filesystem",
type: "table",
description:
"이름이 지정된 파일 시스템 권한 프로필입니다. 각 키는 절대 경로 또는 :minimal이나 :workspace_roots 같은 특수 토큰입니다.",
},
{
key: "permissions..filesystem.glob_scan_max_depth",
type: "number",
description:
"샌드박스 시작 전에 일치 항목의 스냅샷을 생성하는 플랫폼에서 읽기 거부 glob 패턴을 확장할 최대 깊이입니다. 설정할 경우 최소 1이어야 합니다.",
},
{
key: "permissions..filesystem.",
type: '"read" | "write" | "deny" | table',
description:
'경로, glob 패턴 또는 특수 토큰에 직접 액세스를 부여하거나 해당 루트 아래에 중첩된 항목의 범위를 지정합니다. 일치하는 경로의 읽기를 거부하려면 "deny"를 사용하세요.',
},
{
key: 'permissions..filesystem.":workspace_roots".',
type: '"read" | "write" | "deny"',
description:
'각 유효 작업 공간 루트를 기준으로 하는 파일 시스템 액세스 범위입니다. 루트 자체에는 "."를 사용합니다. "**/*.env" 같은 glob 하위 경로는 "deny"로 읽기를 거부할 수 있습니다.',
},
{
key: "permissions..network.enabled",
type: "boolean",
description:
"이름이 지정된 이 권한 프로필의 네트워크 액세스를 활성화합니다. 이 설정은 샌드박스 네트워크 정책을 변경하지만 네트워크 프록시 자체를 시작하지는 않습니다.",
},
{
key: "permissions..network.proxy_url",
type: "string",
description:
"이 권한 프로필이 샌드박스 네트워킹을 활성화할 때 사용하는 HTTP 리스너 URL입니다.",
},
{
key: "permissions..network.enable_socks5",
type: "boolean",
description:
"이 권한 프로필이 샌드박스 네트워킹을 활성화할 때 SOCKS5 지원을 노출합니다.",
},
{
key: "permissions..network.socks_url",
type: "string",
description: "이 권한 프로필에서 사용하는 SOCKS5 프록시 엔드포인트입니다.",
},
{
key: "permissions..network.enable_socks5_udp",
type: "boolean",
description: "활성화된 경우 SOCKS5 리스너를 통한 UDP를 허용합니다.",
},
{
key: "permissions..network.allow_upstream_proxy",
type: "boolean",
description:
"샌드박스 네트워킹이 다른 업스트림 프록시를 통해 연결하도록 허용합니다.",
},
{
key: "permissions..network.dangerously_allow_non_loopback_proxy",
type: "boolean",
description:
"샌드박스 네트워킹 리스너에서 루프백이 아닌 바인딩 주소를 허용합니다. 활성화하면 리스너가 localhost 외부에 노출될 수 있습니다.",
},
{
key: "permissions..network.dangerously_allow_all_unix_sockets",
type: "boolean",
description:
"기본적으로 제한된 대상 집합 대신 임의의 Unix 소켓 대상을 허용합니다. 엄격히 통제되는 환경에서만 사용하세요.",
},
{
key: "permissions..network.mode",
type: "limited | full",
description: "하위 프로세스 트래픽에 사용하는 네트워크 프록시 모드입니다.",
},
{
key: "permissions..network.domains",
type: "table",
description:
"샌드박스 네트워킹의 도메인 규칙입니다. 정확한 호스트, 하위 도메인만을 위한 *.example.com, 최상위 도메인과 하위 도메인을 위한 **.example.com 및 전역 * 허용 규칙을 지원합니다. 충돌 시 deny이 우선합니다.",
},
{
key: "permissions..network.domains.",
type: "allow | deny",
description:
"정확한 호스트 또는 *.example.com나 **.example.com 같은 범위 지정 와일드카드 패턴을 허용하거나 거부합니다.",
},
{
key: "permissions..network.unix_sockets",
type: "table",
description:
"샌드박스 네트워킹의 Unix 소켓 허용 목록 재정의입니다. 소켓 경로를 키로 사용합니다. allow는 경로를 추가하고 deny는 경로를 거부합니다.",
},
{
key: "permissions..network.unix_sockets.",
type: "allow | deny",
description:
"allow으로 절대 Unix 소켓 경로를 유효 허용 목록에 추가하거나 deny로 거부합니다. 거부된 항목은 유효 허용 목록에서 제외됩니다.",
},
{
key: "permissions..network.allow_local_binding",
type: "boolean",
description:
"샌드박스 네트워킹을 통한 더 광범위한 로컬/사설 네트워크 액세스를 허용합니다. 이 설정이 false로 유지되는 경우에도 정확한 로컬 IP 리터럴 또는 localhost 허용 규칙으로 특정 로컬 대상을 허용할 수 있습니다.",
},
{
key: "projects..trust_level",
type: "string",
description:
'프로젝트 또는 작업 트리를 신뢰됨이나 신뢰되지 않음으로 표시합니다("trusted" | "untrusted"). 신뢰되지 않는 프로젝트는 프로젝트 로컬 구성, 훅 및 규칙을 포함한 프로젝트 범위의 .codex/ 계층을 건너뜁니다.',
},
{
key: "notice.hide_full_access_warning",
type: "boolean",
description: "전체 액세스 경고 프롬프트의 확인 여부를 추적합니다.",
},
{
key: "notice.hide_world_writable_warning",
type: "boolean",
description:
"Windows의 모든 사용자가 쓸 수 있는 디렉터리 경고에 대한 확인 여부를 추적합니다.",
},
{
key: "notice.hide_rate_limit_model_nudge",
type: "boolean",
description: "속도 제한 모델 전환 알림의 수신 거부 여부를 추적합니다.",
},
{
key: "notice.hide_gpt5_1_migration_prompt",
type: "boolean",
description: "GPT-5.1 마이그레이션 프롬프트의 확인 여부를 추적합니다.",
},
{
key: "notice.hide_gpt-5.1-codex-max_migration_prompt",
type: "boolean",
description:
"gpt-5.1-codex-max 마이그레이션 프롬프트의 확인 여부를 추적합니다.",
},
{
key: "notice.model_migrations",
type: "map<string,string>",
description: "확인한 모델 마이그레이션을 old->new 매핑으로 추적합니다.",
},
{
key: "forced_login_method",
type: "chatgpt | api",
description: "Codex가 특정 인증 방식만 사용하도록 제한합니다.",
},
{
key: "forced_chatgpt_workspace_id",
type: "string (uuid)",
description: "ChatGPT 로그인을 특정 작업 공간 식별자로 제한합니다.",
},
]}
client:load
/>
config.toml의 최신 JSON 스키마는 여기 에서 확인할 수 있습니다.
VS Code 또는 Cursor에서 config.toml을 편집할 때 자동 완성과 진단 기능을 사용하려면 Even Better TOML 확장 프로그램을 설치하고 config.toml 맨 위에 다음 줄을 추가하세요.
#:schema https://developers.openai.com/codex/config-schema.json 참고: experimental_instructions_file의 이름을 model_instructions_file로 변경하세요. Codex에서는 이전 키가 더 이상 권장되지 않으므로 기존 구성을 새 이름으로 업데이트하세요.
requirements.toml
requirements.toml은 사용자가 재정의할 수 없는 보안 관련 설정을 제한하는 관리자 강제 구성 파일입니다. 자세한 내용과 위치 및 예시는 관리자 강제 요구 사항 을 참조하세요.
ChatGPT Business 및 Enterprise 사용자의 경우 Codex는 클라우드에서 가져온
요구 사항도 적용할 수 있습니다. 우선순위에 관한 자세한 내용은 보안 페이지를 참조하세요.
requirements.toml에서 [features]을 사용하여 config.toml에서 사용하는 것과 동일한
정규 키로 런타임 기능 플래그를 고정하세요. 요구 사항에는 config.toml에 속하지 않는
문서화된 앱 전용 키도 포함할 수 있습니다. 생략된 키에는
제약이 적용되지 않습니다.
일부 관리형 요구 사항은 허용 목록 대신 정확한 구성 값을 강제합니다.
사용자는 강제된 경로, 업데이트 기본 설정, 로그인 셸 정책, 피드백 설정 또는
Windows 비공개 데스크톱 설정을 재정의할 수 없습니다.
관리형 권한 프로필 허용 목록을 사용하려면 Codex 0.138.0 이상이 필요합니다. Codex
0.137.0 이하는 allowed_permission_profiles 및 관리형
default_permissions을 무시합니다.
sandbox_mode와 함께 allowed_sandbox_modes을 사용하세요. 권한 프로필
배포에서는 관리형 default_permissions과 함께
allowed_permission_profiles을 사용하세요.
[models.new_thread] 테이블은 강제가 아닌 관리형 기본값을 제공합니다.
전용 CLI 플래그나 --config 재정의를 통해 명시적으로 지정한 실행 옵션이
우선합니다. 모델 또는 추론 노력 수준을 명시적으로 재정의하면 관리형
모델 필드 두 개를 모두 건너뛰며, service_tier은 독립적으로 적용됩니다.
<ConfigTable
options={[
{
key: "sqlite_home",
type: "string (path)",
description:
"Codex가 SQLite 기반 런타임 상태를 저장하는 디렉터리를 강제합니다.",
},
{
key: "log_dir",
type: "string (path)",
description: "Codex가 로컬 로그 파일을 기록하는 디렉터리를 강제합니다.",
},
{
key: "model_catalog_json",
type: "string (path)",
description: "Codex가 시작할 때 사용하는 JSON 모델 카탈로그를 강제합니다.",
},
{
key: "check_for_update_on_startup",
type: "boolean",
description: "Codex가 시작할 때 업데이트를 확인할지 여부를 강제합니다.",
},
{
key: "allow_login_shell",
type: "boolean",
description: "셸 도구가 로그인 셸을 시작할 수 있는지 여부를 강제합니다.",
},
{
key: "feedback",
type: "table",
description: "관리형 피드백 설정입니다.",
},
{
key: "feedback.enabled",
type: "boolean",
description:
"사용자가 Codex 클라이언트 전반에서 피드백을 제출할 수 있는지 여부를 강제합니다.",
},
{
key: "allowed_approval_policies",
type: "array",
description:
"approval_policy에 허용되는 값입니다(예: untrusted, on-request, never, granular).",
},
{
key: "allowed_approvals_reviewers",
type: "array",
description:
"approvals_reviewer에 허용되는 값입니다(예: user 및 auto_review).",
},
{
key: "guardian_policy_config",
type: "string",
description:
"자동 검토를 위한 관리형 Markdown 정책 지침입니다. 로컬 [auto_review].policy보다 우선합니다. 빈 값은 무시됩니다.",
},
{
key: "allowed_permission_profiles",
type: "table",
description:
"허용되는 권한 프로필의 전체 목록입니다. true으로 설정된 프로필은 허용됩니다. 생략되거나 false로 설정된 프로필은 향후 버전에 추가되는 프로필을 포함하여 거부됩니다. 요구 사항 소스를 결합할 때 항목은 프로필 이름으로 일치시킵니다.",
},
{
key: "allowed_permission_profiles.",
type: "boolean",
description:
"로드된 구성 또는 요구 사항 소스에 정의된 기본 제공 또는 사용자 지정 권한 프로필을 허용하거나 거부합니다. 우선순위가 더 높은 이후 요구 사항 소스는 false를 사용하여 우선순위가 더 낮은 이전 소스에서 허용한 프로필을 비활성화할 수 있습니다.",
},
{
key: "default_permissions",
type: "string",
description:
"관리형 기본 권한 프로필입니다. 이 프로필은 allowed_permission_profiles에서 허용되어야 합니다. 예측 가능한 동작을 위해 명시적으로 설정하세요. 생략하면 :workspace와 :read-only가 모두 명시적으로 허용된 경우에만 Codex가 :workspace을 기본값으로 사용합니다.",
},
{
key: "enforce_residency",
type: "string",
description:
"Codex 서비스 트래픽이 지원되는 데이터 레지던시를 사용하도록 요구합니다. 현재 us을 허용합니다.",
},
{
key: "models",
type: "table",
description:
"새 스레드의 관리형 모델 기본값입니다. 이 값은 사용자 및 프로젝트 기본값보다 우선하지만, 새 스레드에서 명시적으로 선택하면 재정의할 수 있습니다.",
},
{
key: "models.new_thread",
type: "table",
description:
"새 로컬 스레드가 시작될 때 적용할 기본값입니다. 각 모델 설정은 선택 사항입니다.",
},
{
key: "models.new_thread.model",
type: "string",
description:
"새 스레드의 기본 모델입니다. 명시적인 --model 또는 모델/추론 --config 재정의가 우선합니다.",
},
{
key: "models.new_thread.model_reasoning_effort",
type: "string",
description:
"새 스레드의 기본 추론 노력 수준입니다. 모델 또는 추론 노력 수준을 명시적으로 재정의하면 관리형 모델 필드 두 개를 모두 건너뜁니다.",
},
{
key: "models.new_thread.service_tier",
type: "string",
description:
"새 스레드의 기본 서비스 계층입니다. 명시적인 서비스 계층 재정의는 모델 필드와 독립적으로 우선합니다.",
},
{
key: "permissions",
type: "table",
description:
"프로필 이름을 키로 사용하는 관리자 정의 권한 프로필입니다. config.toml과 동일한 프로필 필드를 사용합니다.",
},
{
key: "permissions.",
type: "table",
description:
"관리자 정의 권한 프로필입니다. 이름은 :로 시작하거나 예약된 이름 filesystem를 사용하거나 로드된 구성의 프로필과 중복될 수 없습니다. config.toml과 동일한 프로필 필드를 사용합니다. 전체 프로필 스키마는 권한 가이드를 참조하세요.",
},
{
key: "allowed_sandbox_modes",
type: "array",
description: "sandbox_mode에 허용되는 값입니다.",
},
{
key: "windows",
type: "table",
description: "네이티브 Windows 샌드박스 요구 사항입니다.",
},
{
key: "windows.allowed_sandbox_implementations",
type: "array",
description:
"windows.sandbox에 허용되는 네이티브 Windows 샌드박스 구현입니다(elevated 및 unelevated). 목록은 비어 있으면 안 됩니다. 둘 다 허용되고 모드를 선택하지 않으면 Codex는 elevated을 우선합니다.",
},
{
key: "windows.sandbox_private_desktop",
type: "boolean",
description:
"네이티브 Windows 샌드박스가 비공개 데스크톱에서 자식 프로세스를 시작할지 여부를 강제합니다.",
},
{
key: "remote_sandbox_config",
type: "array",
description:
"호스트별 샌드박스 요구 사항입니다. hostname_patterns이 확인된 호스트 이름과 일치하는 첫 번째 항목이 해당 요구 사항 소스의 최상위 allowed_sandbox_modes을 재정의합니다. 현재 호스트별 항목은 샌드박스 모드만 재정의합니다.",
},
{
key: "remote_sandbox_config[].hostname_patterns",
type: "array",
description:
"대소문자를 구분하지 않는 호스트 이름 패턴입니다. 임의의 문자 시퀀스에는 *을, 한 문자에는 ?를 지원합니다.",
},
{
key: "remote_sandbox_config[].allowed_sandbox_modes",
type: "array",
description:
"이 호스트별 항목이 일치할 때 적용할 허용 샌드박스 모드입니다.",
},
{
key: "allowed_web_search_modes",
type: "array",
description:
"web_search에 허용되는 값입니다(disabled, cached, indexed, live). disabled은 항상 허용되며, 빈 목록은 사실상 disabled만 허용합니다.",
},
{
key: "allow_managed_hooks_only",
type: "boolean",
description:
"true이면 Codex는 사용자, 프로젝트, 세션 및 플러그인 훅을 건너뛰지만 requirements.toml 및 기타 관리형 구성 계층의 관리형 훅은 계속 허용합니다.",
},
{
key: "allow_appshots",
type: "boolean",
description:
"관리 대상 사용자의 Appshots를 비활성화하려면 false로 설정합니다. 생략하면 Appshots는 요구 사항의 제약을 받지 않으며 일반적인 제품 제공 여부를 따릅니다.",
},
{
key: "allow_remote_control",
type: "boolean",
description:
"관리 대상 사용자의 기기 원격 제어를 비활성화하려면 false으로 설정합니다. 생략하면 기기 원격 제어는 요구 사항의 제약을 받지 않으며 일반적인 제품 제공 여부를 따릅니다.",
},
{
key: "features.plugin_sharing",
type: "boolean",
description:
"로컬에서 빌드한 플러그인의 워크스페이스 공유를 비활성화하려면 클라우드 관리형 requirements.toml에서 false로 설정합니다.",
},
{
key: "features",
type: "table",
description:
"고정된 기능 값입니다. 런타임 기능에는 config.toml의 정규 이름을 사용하세요. 문서화된 앱 전용 요구 사항 키도 여기에서 지원됩니다.",
},
{
key: "features.",
type: "boolean",
description:
"문서화된 런타임 또는 앱 기능을 활성화하거나 비활성화된 상태로 유지하도록 요구합니다.",
},
{
key: "features.apps",
type: "boolean",
description:
"관리 대상 사용자의 Apps 통합 제공 여부를 활성화 또는 비활성화 상태로 고정합니다.",
},
{
key: "features.in_app_updates",
type: "boolean",
description:
"앱 내 업데이트를 비활성화하려면 requirements.toml에서 false로 설정합니다. 이 요구 사항을 생략하면 업데이트가 기본적으로 활성화된 상태로 유지됩니다.",
},
{
key: "features.in_app_browser",
type: "boolean",
description:
"기본 제공 브라우저 창을 비활성화하려면 requirements.toml에서 false로 설정합니다.",
},
{
key: "features.browser_use",
type: "boolean",
description:
"브라우저의 Computer Use 및 Browser Agent 제공을 비활성화하려면 requirements.toml에서 false로 설정합니다.",
},
{
key: "features.browser_use_external",
type: "boolean",
description:
"외부 브라우저의 Computer Use를 비활성화하려면 requirements.toml에서 false으로 설정합니다.",
},
{
key: "features.browser_use_full_cdp_access",
type: "boolean",
description:
"Browser Developer 모드를 포함하여 로컬 런타임의 전체 Chrome DevTools Protocol 액세스를 비활성화하고 ChatGPT 데스크톱 앱이 해당 설정을 활성화하지 못하게 하려면 requirements.toml에서 false로 설정합니다. 생략하면 일반적인 제품 제공 여부가 적용됩니다.",
},
{
key: "features.fast_mode",
type: "boolean",
description:
"관리 대상 사용자의 정규 fast_mode 기능을 활성화 또는 비활성화 상태로 고정합니다.",
},
{
key: "features.guardian_approval",
type: "boolean",
description:
"관리 대상 사용자의 Guardian 승인 제공 여부를 활성화 또는 비활성화 상태로 고정합니다.",
},
{
key: "features.memories",
type: "boolean",
description: "관리 대상 사용자의 Memories 제공 여부를 활성화 또는 비활성화 상태로 고정합니다.",
},
{
key: "features.multi_agent",
type: "boolean",
description: "관리 대상 사용자의 다중 에이전트 제공 여부를 활성화 또는 비활성화 상태로 고정합니다.",
},
{
key: "features.plugins",
type: "boolean",
description: "관리 대상 사용자의 플러그인 제공 여부를 활성화 또는 비활성화 상태로 고정합니다.",
},
{
key: "features.remote_plugin",
type: "boolean",
description:
"관리 대상 사용자의 원격 플러그인 카탈로그 제공 여부를 활성화 또는 비활성화 상태로 고정합니다.",
},
{
key: "features.computer_use",
type: "boolean",
description:
"Computer Use, Record & Replay 및 관련 설치 또는 활성화 흐름을 비활성화하려면 requirements.toml에서 false로 설정합니다.",
},
{
key: "features.workspace_dependencies",
type: "boolean",
description:
"관리 대상 사용자의 번들 워크스페이스 종속성 런타임 제공 여부를 활성화 또는 비활성화 상태로 고정합니다.",
},
{
key: "computer_use",
type: "table",
description:
"requirements.toml에서 강제되는 Computer Use 요구 사항입니다.",
},
{
key: "computer_use.allow_locked_computer_use",
type: "boolean",
description:
"관리되는 macOS 기기가 잠긴 후 Computer Use가 작동하지 못하도록 하려면 false로 설정합니다. 생략하면 잠긴 상태에서의 사용은 요구 사항의 제약을 받지 않습니다.",
},
{
key: "experimental_network",
type: "table",
description:
"requirements.toml에서 강제되는 네트워크 액세스 요구 사항입니다. 이러한 제약은 features.network_proxy과 별개이며 사용자 기능 플래그 없이도 샌드박스 네트워킹을 구성할 수 있습니다.",
},
{
key: "experimental_network.enabled",
type: "boolean",
description:
"샌드박스 네트워킹 요구 사항을 활성화합니다. 활성 샌드박스가 명령의 네트워크 사용을 차단하는 경우에는 네트워크 액세스 권한을 부여하지 않습니다.",
},
{
key: "experimental_network.http_port",
type: "integer",
description:
"[experimental_network] 요구 사항에 사용할 루프백 HTTP 리스너 포트입니다.",
},
{
key: "experimental_network.socks_port",
type: "integer",
description:
"[experimental_network] 요구 사항에 사용할 루프백 SOCKS5 리스너 포트입니다.",
},
{
key: "experimental_network.allow_upstream_proxy",
type: "boolean",
description:
"샌드박스 네트워킹이 환경의 업스트림 프록시를 통해 연결되도록 허용합니다.",
},
{
key: "experimental_network.dangerously_allow_non_loopback_proxy",
type: "boolean",
description:
"[experimental_network] 요구 사항에 루프백이 아닌 리스너 주소를 허용합니다. 활성화하면 리스너가 localhost 외부에 노출될 수 있습니다.",
},
{
key: "experimental_network.dangerously_allow_all_unix_sockets",
type: "boolean",
description:
"허용 목록에 포함된 대상만 액세스하는 대신 임의의 Unix 소켓 대상을 허용합니다. 엄격하게 통제되는 환경에서만 사용하세요.",
},
{
key: "experimental_network.domains",
type: "map<string, allow | deny>",
description:
"샌드박스 네트워킹을 위한 맵 형태의 관리자 도메인 정책입니다. 정확한 호스트, 하위 도메인에만 적용되는 *.example.com, 최상위 도메인과 하위 도메인에 적용되는 **.example.com 및 전역 * 허용 규칙을 지원합니다. *은 공개 아웃바운드 액세스를 광범위하게 개방하므로 범위가 제한된 규칙을 사용하는 것이 좋습니다. 충돌 시 deny이 우선합니다. experimental_network.allowed_domains 또는 experimental_network.denied_domains과 함께 사용하지 마세요.",
},
{
key: "experimental_network.allowed_domains",
type: "array",
description:
"샌드박스 네트워킹을 위한 목록 형태의 관리자 허용 규칙입니다. experimental_network.domains과 함께 사용하지 마세요.",
},
{
key: "experimental_network.denied_domains",
type: "array",
description:
"샌드박스 네트워킹을 위한 목록 형태의 관리자 거부 규칙입니다. experimental_network.domains와 함께 사용하지 마세요.",
},
{
key: "experimental_network.managed_allowed_domains_only",
type: "boolean",
description:
"true이면 샌드박스 네트워킹 요구 사항이 활성화된 동안 관리자 관리형 허용 규칙만 유효하며 사용자 허용 목록 추가 항목은 무시됩니다. 관리형 허용 규칙이 없으면 사용자가 추가한 도메인 허용 규칙은 유효한 상태로 유지되지 않습니다.",
},
{
key: "experimental_network.unix_sockets",
type: "map<string, allow | deny>",
description:
"샌드박스 네트워킹을 위한 관리자 관리형 Unix 소켓 정책입니다.",
},
{
key: "experimental_network.allow_local_binding",
type: "boolean",
description:
"샌드박스 네트워킹에 더 광범위한 로컬/비공개 네트워크 액세스를 허용합니다. 이 값이 false인 경우에도 정확한 로컬 IP 리터럴 또는 localhost 허용 규칙으로 특정 로컬 대상을 허용할 수 있습니다.",
},
{
key: "hooks",
type: "table",
description:
"관리자가 강제하는 관리형 수명 주기 훅입니다. 관리형 훅 디렉터리가 필요하며 config.toml의 인라인 [hooks]과 동일한 이벤트 스키마를 사용합니다.",
},
{
key: "hooks.managed_dir",
type: "string (absolute path)",
description:
"macOS 및 Linux에서 관리형 훅 스크립트가 포함된 디렉터리입니다. Codex는 관리형 훅을 로드하기 전에 절대 경로인지와 해당 경로가 존재하는지를 검증합니다.",
},
{
key: "hooks.windows_managed_dir",
type: "string (absolute path)",
description:
"Windows에서 관리형 훅 스크립트가 포함된 디렉터리입니다. Codex는 관리형 훅을 로드하기 전에 절대 경로인지와 해당 경로가 존재하는지를 검증합니다.",
},
{
key: "hooks.",
type: "array",
description:
"PreToolUse, PermissionRequest, PostToolUse, PreCompact, PostCompact, SessionStart, SessionEnd, SubagentStart, SubagentStop, UserPromptSubmit 또는 Stop과 같은 훅 이벤트의 매처 그룹입니다.",
},
{
key: "hooks.[].hooks",
type: "array",
description:
"매처 그룹의 훅 핸들러입니다. 현재 명령 훅을 지원하며, 프롬프트 및 에이전트 훅 핸들러는 구문 분석되지만 건너뜁니다.",
},
{
key: "hooks.[].hooks[].commandWindows",
type: "string",
description:
"명령 훅에 대한 Windows 전용 명령 재정의입니다. TOML 별칭 command_windows도 허용됩니다.",
},
{
key: "permissions.filesystem.deny_read",
type: "array",
description:
"관리자가 강제하는 파일 시스템 읽기 거부 규칙입니다. 항목은 경로나 glob 패턴일 수 있으며 사용자는 로컬 구성으로 이를 완화할 수 없습니다.",
},
{
key: "mcp_servers",
type: "table",
description:
"활성화할 수 있는 MCP 서버의 허용 목록입니다. MCP 서버를 활성화하려면 서버 이름(<id>)과 ID가 모두 일치해야 합니다. 허용 목록에 없거나 ID가 일치하지 않는 구성된 MCP 서버는 모두 비활성화됩니다.",
},
{
key: "mcp_servers..identity",
type: "table",
description:
"단일 MCP 서버의 ID 규칙입니다. command(stdio) 또는 url(스트리밍 가능 HTTP) 중 하나를 설정합니다.",
},
{
key: "mcp_servers..identity.command",
type: "string | table",
description:
"정확한 명령 문자열로 MCP stdio 서버를 허용하거나, 매처 테이블을 사용하여 정확한 실행 파일과 순서가 지정된 인수 매처가 일치하도록 요구합니다. 문자열 형식은 인수, cwd, env 또는 env_vars을 검사하지 않습니다.",
},
{
key: "mcp_servers..identity.command.executable",
type: "string",
description:
"stdio 서버에 구성된 command과 정확히 일치해야 하는 실행 파일입니다.",
},
{
key: "mcp_servers..identity.command.args",
type: "array",
description:
"stdio 서버의 순서가 지정된 인수 매처입니다. 구성된 인수 목록의 길이가 같아야 하며 모든 위치가 일치해야 합니다. 명령 매처는 cwd, env 또는 env_vars를 검사하지 않습니다.",
},
{
key: "mcp_servers..identity.command.args[].match",
type: "exact | prefix | regex",
description: "이 인수 위치의 일치 연산입니다.",
},
{
key: "mcp_servers..identity.command.args[].value",
type: "string",
description: "exact 또는 prefix 인수 매처가 사용하는 값입니다.",
},
{
key: "mcp_servers..identity.command.args[].expression",
type: "string",
description:
"regex 인수 매처가 사용하는 정규식입니다. 표현식은 유효해야 하며 전체 인수 값과 일치해야 합니다.",
},
{
key: "mcp_servers..identity.url",
type: "string | table",
description:
"정확한 URL 문자열로 MCP 스트리밍 가능 HTTP 서버를 허용하거나 exact, prefix 또는 regex 값 매처 테이블을 사용합니다.",
},
{
key: "mcp_servers..identity.url.match",
type: "exact | prefix | regex",
description: "구성된 MCP 서버 URL의 일치 연산입니다.",
},
{
key: "mcp_servers..identity.url.value",
type: "string",
description: "exact 또는 prefix URL 매처가 사용하는 값입니다.",
},
{
key: "mcp_servers..identity.url.expression",
type: "string",
description:
"regex URL 매처가 사용하는 정규식입니다. 표현식은 유효해야 하며 전체 URL 값과 일치해야 합니다.",
},
{
key: "plugins",
type: "table",
description:
"플러그인 식별자를 키로 사용하는 플러그인별 MCP 서버 허용 목록입니다. 이 테이블이 있으면 플러그인 및 서버 항목이 일치하지 않는 플러그인 번들 서버가 비활성화됩니다.",
},
{
key: "plugins..mcp_servers",
type: "table",
description:
"하나의 플러그인에 번들로 포함된 MCP 서버의 허용 목록입니다. 플러그인 서버 요구 사항은 최상위 mcp_servers 요구 사항과 동일한 정확한 ID 및 매처 형식을 사용합니다.",
},
{
key: "plugins..mcp_servers..identity",
type: "table",
description:
"플러그인에 번들로 포함된 MCP 서버 하나의 ID 규칙입니다. command(stdio) 또는 url(스트리밍 가능 HTTP) 중 하나를 설정합니다.",
},
{
key: "plugins..mcp_servers..identity.command",
type: "string | table",
description:
"정확한 명령 문자열로 플러그인의 stdio MCP 서버를 허용하거나, 매처 테이블을 사용하여 정확한 실행 파일과 순서가 지정된 인수 매처가 일치하도록 요구합니다.",
},
{
key: "plugins..mcp_servers..identity.command.executable",
type: "string",
description:
"플러그인에 번들로 포함된 stdio 서버에 구성된 명령과 정확히 일치해야 하는 실행 파일입니다.",
},
{
key: "plugins..mcp_servers..identity.command.args",
type: "array",
description:
"플러그인에 번들로 포함된 stdio 서버의 순서가 지정된 인수 매처입니다. 구성된 인수 목록의 길이가 같아야 하며 모든 위치가 일치해야 합니다.",
},
{
key: "plugins..mcp_servers..identity.command.args[].match",
type: "exact | prefix | regex",
description: "이 인수 위치의 일치 연산입니다.",
},
{
key: "plugins..mcp_servers..identity.command.args[].value",
type: "string",
description: "exact 또는 prefix 인수 매처가 사용하는 값입니다.",
},
{
key: "plugins..mcp_servers..identity.command.args[].expression",
type: "string",
description:
"regex 인수 매처가 사용하는 정규식입니다. 표현식은 전체 인수 값과 일치해야 합니다.",
},
{
key: "plugins..mcp_servers..identity.url",
type: "string | table",
description:
"정확한 URL 문자열로 플러그인의 스트리밍 가능 HTTP MCP 서버를 허용하거나 exact, prefix 또는 regex 값 매처 테이블을 사용합니다.",
},
{
key: "plugins..mcp_servers..identity.url.match",
type: "exact | prefix | regex",
description: "플러그인에 번들로 포함된 MCP 서버 URL의 일치 연산입니다.",
},
{
key: "plugins..mcp_servers..identity.url.value",
type: "string",
description: "exact 또는 prefix URL 매처가 사용하는 값입니다.",
},
{
key: "plugins..mcp_servers..identity.url.expression",
type: "string",
description:
"regex URL 매처가 사용하는 정규식입니다. 표현식은 전체 URL 값과 일치해야 합니다.",
},
{
key: "marketplaces",
type: "table",
description:
"플러그인 마켓플레이스 소스의 관리자 요구 사항입니다. restrict_to_allowed_sources이 true일 때 규칙이 적용됩니다.",
},
{
key: "marketplaces.restrict_to_allowed_sources",
type: "boolean",
description:
"true이면 마켓플레이스 추가, 플러그인 설치 및 구성된 Git 마켓플레이스 새로 고침 작업을 수행할 때 사용자가 구성한 마켓플레이스 소스가 allowed_sources과 일치하도록 요구합니다. Codex가 관리하는 OpenAI 마켓플레이스는 예약된 소스와 이름이 일치하면 계속 허용됩니다. 런타임에서 이미 구성된 사용자 마켓플레이스를 필터링하지는 않습니다.",
},
{
key: "marketplaces.allowed_sources",
type: "table",
description:
"관리자가 선택한 규칙 이름을 키로 사용하는 허용된 마켓플레이스 소스입니다. 서로 다른 이름은 요구 사항 계층 간에 누적되며, 동일한 이름 아래의 필드에는 일반적인 계층 우선순위가 적용됩니다.",
},
{
key: "marketplaces.allowed_sources.",
type: "table",
description:
"허용된 소스 규칙 하나입니다. 요구 사항 병합 후 최종 source 값에 따라 Codex가 해석할 형제 필드가 결정됩니다.",
},
{
key: "marketplaces.allowed_sources..source",
type: "git | host_pattern | local",
description:
"마켓플레이스 소스 매처 유형입니다. 하나의 저장소에는 git을, 정규식과 일치하는 Git 호스트에는 host_pattern을, 하나의 디렉터리에는 local을 사용합니다.",
},
{
key: "marketplaces.allowed_sources..url",
type: "string",
description:
'source = "git"일 때 필요한 Git 저장소 URL입니다. Codex는 정확한 저장소 일치를 요구하기 전에 구성된 URL과 허용된 URL을 정규화합니다.',
},
{
key: "marketplaces.allowed_sources..ref",
type: "string",
description:
"git 규칙의 선택적 정확한 Git ref입니다. 생략하면 이 규칙은 일치하는 저장소의 모든 ref를 허용합니다.",
},
{
key: "marketplaces.allowed_sources..host_pattern",
type: "string",
description:
'source = "host_pattern"일 때 필요한 정규식입니다. Codex는 HTTPS, SSH 또는 SCP 스타일 Git 소스에서 파싱한 소문자 호스트 이름과 이 표현식을 대조합니다. 전체 호스트가 일치하도록 요구하려면 ^와 $을 사용합니다.',
},
{
key: "marketplaces.allowed_sources..path",
type: "string (absolute path)",
description:
'source = "local"일 때 필요한 로컬 마켓플레이스 디렉터리입니다. Codex는 절대 경로를 요구하며 정규화 후 경로를 비교합니다.',
},
{
key: "apps",
type: "table",
description:
"앱 식별자를 키로 사용하는 관리형 앱 요구 사항입니다. 요구 사항을 통해 앱을 비활성화하거나 개별 도구의 승인 동작을 제한할 수 있습니다.",
},
{
key: "apps..enabled",
type: "boolean",
description:
"앱을 비활성화하려면 false로 설정합니다. 여러 요구 사항 소스를 병합할 때도 비활성화 요구 사항은 제한적인 상태로 유지됩니다.",
},
{
key: "apps..tools..approval_mode",
type: "auto | prompt | writes | approve",
description: "앱 도구 하나의 관리형 승인 모드를 설정합니다.",
},
{
key: "rules",
type: "table",
description:
".rules 파일과 병합되는 관리자 강제 명령 규칙입니다. 요구 사항 규칙은 제한적이어야 합니다.",
},
{
key: "rules.prefix_rules",
type: "array",
description:
"강제된 접두사 규칙 목록입니다. 각 규칙에는 pattern과 decision이 포함되어야 합니다.",
},
{
key: "rules.prefix_rules[].pattern",
type: "array",
description:
"패턴 토큰으로 표현된 명령 접두사입니다. 각 토큰은 token 또는 any_of 중 하나를 설정합니다.",
},
{
key: "rules.prefix_rules[].pattern[].token",
type: "string",
description: "이 위치의 단일 리터럴 토큰입니다.",
},
{
key: "rules.prefix_rules[].pattern[].any_of",
type: "array",
description: "이 위치에 허용되는 대체 토큰 목록입니다.",
},
{
key: "rules.prefix_rules[].decision",
type: "prompt | forbidden",
description:
"필수입니다. 요구 사항 규칙은 프롬프트를 표시하거나 금지할 수만 있으며 허용할 수는 없습니다.",
},
{
key: "rules.prefix_rules[].justification",
type: "string",
description:
"승인 프롬프트 또는 거부 메시지에 표시되는 선택적이며 비어 있지 않은 근거입니다.",
},
]}
client:load
/>
이전 고급 구성 다음 환경 변수