Расширенная конфигурация Codex

Codex CLIРасширенный слой конфигурации позволяет нам точно управлять поставщиками моделей, разрешениями песочницы, хуками, данными телеметрии и поведением терминала.

Если вы новичок в Codex, сначала прочитайтеОсновы конфигурации(Основы конфигурации), чтобы получить общее представление; эта статья предполагает, что вы уже знаете~/.codex/config.tomlего существование и назначение.


Обзор иерархии конфигурации

Конфигурация Codex состоит из нескольких наложенных слоёв. Понимание этого — краеугольный камень всего последующего продвинутого использования.

Снизу вверх слои располагаются так: системный слой → пользовательский слой (~/.codex/config.toml) → слой Profile → проектный слой (.codex/config.toml) → аргументы командной строки CLI.

Верхние слои переопределяют нижние слои с тем же именем; конфигурация проекта, ближайшая к текущему рабочему каталогу, имеет наивысший приоритет.

Title Codex configuration hierarchy (bottom → top, overridden in order) Layer 5: CLI ① CLI command-line arguments (highest priority) --model、--config、--profile Layer 4: Project-level ② Project-level .codex/config.toml The .codex/ directory in the repository (requires the project to be trusted) Layer 3: Profile ③ Profile named configuration (--profile) ~/.codex/<name>.config.toml Layer 2: User-level ④ User-level ~/.codex/config.toml Personal default configuration under the CODEX_HOME directory Layer 1: System-level ⑤ System-level / team-shared configuration Team Config shared rules and system-level files Right-side notes Single-run override Project-level enforcement Scenario switching Personal defaults Team baseline Bottom notes Merge rules: for the same key, the later one overrides the earlier one; dot syntax can target nested fields. Example: --config mcp_servers.context7.enabled=false disables a single MCP service

Самый безопасный способ определить текущую активную конфигурацию —codex --helpиспользовать логи, или явно использоватьcodex exec "show my current config"и позволить модели интерпретировать её для вас.


Профили: именованный слой конфигурации

Profile— это рекомендуемый в Codex подход «переключения по сценариям»: сохраните набор конфигураций в виде файла TOML и загружайте его по требованию через--profileзагрузку.

Файлы профиля находятся в~/.codex/<name>.config.toml, где<name>может содержать только буквы, цифры, дефисы и подчёркивания.

Создание и использование профиля

Предположим, вы часто проводите глубокие проверки кода и хотите получить более сильную способность к рассуждению:

Пример

# Путь к файлу: ~/.codex/deep-review.config.toml
model = "gpt-5.5"                  # Использовать модель с более сильной способностью к рассуждению
model_reasoning_effort = "xhigh"   # Установить усилие рассуждения на максимум
approval_policy = "on-request"    # Запрашивать подтверждение при каждом вызове инструмента
model_catalog_json = "/Users/me/.codex/model-catalogs/deep-review.json"  # Необязательно: пользовательский каталог моделей

Запустить Codex с профилем:

Пример

# Запустить интерактивный TUI
codex --profile deep-review

# Или использовать в неинтерактивном режиме exec
codex exec --profile deep-review "проверь это изменение"

Семантика слияния профилей

Файлы профиля не являются полной конфигурацией; они представляют собой инкрементальное переопределение поверх слоя пользовательского уровня~/.codex/config.toml.

Это означает, что в профиле нужно указывать только поля "отличающиеся от конфигурации по умолчанию"; остальные поля автоматически наследуют пользовательские настройки.

Если и на пользовательском уровне, и в профиле задано одно и то же полеmodel_catalog_json,, значение из профиля имеет приоритет.。

Начиная с Codex 0.134.0,--profileбольше не читаетconfig.tomlв[profiles.<name>]таблицы и больше не поддерживает селекторы верхнего уровняprofile = "name". Все исторические настройки профиля должны быть перенесены в отдельные файлы~/.codex/<name>.config.toml.

Миграция со старой конфигурации на профиль

Если ваш предыдущийconfig.tomlвыглядел так:

Пример

# Старый синтаксис (устарел)
profile = "deep-review"

[profiles.deep-review]
model = "gpt-5.5"
model_reasoning_effort = "xhigh"

Вам нужно разделить это на два файла:

# 文件路径:~/.codex/config.toml(保留非 profile 部分)
# 注意:删除了 profile = "deep-review" 选择器
# 文件路径:~/.codex/deep-review.config.toml
model = "gpt-5.5"
model_reasoning_effort = "xhigh"

После миграции исходноеcodex --profile deep-reviewиспользование командной строки остаётся неизменным.


Одноразовое переопределение в командной строке

Иногда вы просто хотите временно изменить одно или два поля для одной задачи, не загрязняя файлы конфигурации. В этом случае вы можете использовать переопределения CLI:

Предпочитайте выделенные флаги

Если предусмотрены официальные выделенные параметры (такие как--model),предпочитайте выделенный флаг, для лучшей читаемости:

Пример

# Переключить модель с помощью выделенного флага
codex --model gpt-5.4

Использование --config для переопределения произвольных ключей

Для полей без выделенных флагов используйте-cили--configпереопределения. Значение имеет формат TOML, а не JSON.

Пример

# Строковые значения должны использовать двойные кавычки для вложенных кавычек
codex --config model='"gpt-5.4"'

# Логические значения записываются напрямую
codex --config sandbox_workspace_write.network_access=true

# Массивы используют синтаксис массивов TOML
codex --config 'shell_environment_policy.include_only=["PATH","HOME"]'

Несколько правил, в которых легко допустить ошибку:

  • Используйте точечный синтаксис для доступа к вложенным полям, например,mcp_servers.context7.enabled=false
  • --configЗначение разбирается как TOML; строки, содержащие пробелы, должны быть заключены в кавычки.
  • Если разбор завершается ошибкой, Codex рассматривает всё значение как строку.

Самый быстрый способ узнать, сработало ли переопределение, — добавить к команде простой вопрос: "какую модель вы используете?", позволив Codex сообщить текущую конфигурацию.


Расположение файла конфигурации и состояния

Codex хранит всё локальное состояние в каталогеCODEX_HOME, по умолчанию~/.codex。

Распространённые файлы и их назначение:

ФайлНазначениеКонфиденциально?
config.tomlЛокальная основная конфигурация; все настройки задаются здесь.нет
auth.jsonФайловые учётные данные (если системная связка ключей не используется)Да, рекомендуются права 600
history.jsonlИстория диалогов (можно отключить)Может содержать конфиденциальные данные
logs/、caches/Журналы и кеш времени выполненияМожет содержать фрагменты тела запроса

Хотите просто изменить базовый URL OpenAI?

Многие используют прокси LLM, маршрутизаторы или проекты с резидентностью данных и нуждаются только в измененииopenaiбазового URL встроенного провайдера.

В этом случае напрямую задайтеopenai_base_url, не создавайте новый[model_providers.openai], потому что встроенные ID нельзя переопределить:

Пример

# Путь к файлу: ~/.codex/config.toml
# Направьте базовый URL встроенного провайдера openai на прокси
openai_base_url = "https://us.api.openai.com/v1"

Конфигурация на уровне проекта .codex/config.toml

Конфигурация уровня проекта размещается в корне репозитория в.codex/config.tomlи используется для общих настроек по умолчанию команды.

Codex выполняет поиск вверх от рабочей директории,Файл, ближайший к текущей рабочей директории, имеет наивысший приоритет.。

Границы конфигурации уровня проекта

По соображениям безопасности,только когда проект помечен как "trusted"будет загружен слой .codex/ уровня проекта (включая config.toml, локальные хуки и локальные правила).

В недоверенных проектах чувствительные ключи из таблицы ниже игнорируются, и выводится предупреждение при запуске:

Игнорируемый ключПричина
openai_base_url、chatgpt_base_urlПредотвращает перенаправление учетных данных / изменение метаданных хоста
apps_mcp_product_skuВлияет на идентификацию продукта Codex Apps
model_provider、model_providersПредотвращает замену учетных данных / идентичности провайдера
notifyПредотвращает выполнение произвольных команд локальной машины
profile、profilesНа уровне проекта нельзя выбрать профиль конфигурации
experimental_realtime_ws_base_url、otelТелеметрия и каналы реального времени

Эти ключи должны быть помещены в пользовательский~/.codex/config.toml.

Относительные пути (например,model_instructions_file) разрешаются относительно их.codex/каталога, в котором они содержатся.

Если проект не является доверенным и вы установитеmodel_provider = "proxy", Codex выведет предупреждение при запуске и будет использовать провайдера по умолчанию; это сделано в целях безопасности, а не является ошибкой.


Хуки: хуки жизненного цикла

Хуки позволяют вставлять пользовательские скрипты в ключевых точках, таких как вызовы инструментов, начало раундов и т. д., что подходит для аудита, фильтрации чувствительных слов, проверок коммитов и многого другого.

Конфигурация хуков поддерживает две формы, и структура событий абсолютно одинакова:

FormРасположениеПодходящие сценарии
hooks.jsonФайлТот же каталог, что и config.tomlУдобен для инструментария JSON, легко переиспользуется
Встроенная[[hooks.*]]таблицаВнутри config.tomlВся конфигурация управляется централизованно

Четыре наиболее часто используемых места загрузки:

  • ~/.codex/hooks.json
  • ~/.codex/config.toml
  • <repo>/.codex/hooks.json
  • <repo>/.codex/config.toml

Хуки уровня проекта загружаются только тогда, когда проект является доверенным; хуки уровня пользователя всегда загружаются независимо.

Пример встроенного TOML-хука

Ниже показан хук предварительной проверки, который выполняется перед вызовами инструмента Bash:

Пример

# Путь к файлу: ~/.codex/config.toml
# Совпадает со всеми вызовами инструмента Bash
[[hooks.PreToolUse]]
matcher = "^Bash$"

[[hooks.PreToolUse.hooks]]
type = "command"
# Запустить скрипт предварительной проверки в репозитории (путь относительно каталога, в котором находится .codex/)
command = '/usr/bin/python3 "$(git rev-parse --show-toplevel)/.codex/hooks/pre_tool_use_policy.py"'
timeout = 30                                 # Тайм-аут в секундах; после тайм-аута считать отклонённым
statusMessage = "Проверка команды Bash"      # Подсказка в строке состояния

Если один и тот же слой уже существуетhooks.jsonТакже существует встроенный вариант[hooks]В таблице Codex загрузит оба и выведет предупреждение.Рекомендуется выбирать только одну форму на слой, чтобы избежать удвоения затрат на сопровождение.


Пользовательские провайдеры моделей

Когда вам нужно подключить Codex к официальным конечным точкам, не относящимся к OpenAI, таким как LLM-прокси, Ollama, Mistral, Azure и т. д.,model_providersявляется точкой входа.

Встроенный идентификатор провайдера (openai、ollama、lmstudio)Нельзя использовать повторноиначе возникнет конфликт.

Базовое определение

Пример

# Путь к файлу: ~/.codex/config.toml
model = "gpt-5.4"           # Имя модели определяется выбранным провайдером
model_provider = "proxy"    # Указывает на следующий [model_providers.proxy]

[model_providers.proxy]
name = "OpenAI через LLM-прокси"  # Отображаемое имя
base_url = "http://proxy.example.com"
env_key = "OPENAI_API_KEY"       # Прочитать секрет из переменной окружения

[model_providers.local_ollama]
name = "Ollama"
base_url = "http://localhost:11434/v1"

[model_providers.mistral]
name = "Mistral"
base_url = "https://api.mistral.ai/v1"
env_key = "MISTRAL_API_KEY"

Добавление HTTP-заголовков

Некоторые прокси требуют дополнительных заголовков (например, идентификатор арендатора, флаги функций):

Пример

[model_providers.example]
# Статический заголовок: отправляется с каждым запросом
http_headers = { "X-Example-Header" = "example-value" }
# Динамический заголовок: значение читается из переменной окружения
env_http_headers = { "X-Example-Features" = "EXAMPLE_FEATURES" }

Аутентификация на основе команды

Когда bearer-токен провайдера нужно динамически получать из внешнего помощника учётных данных, используйте[model_providers.<id>.auth]:

Пример

[model_providers.proxy]
name = "OpenAI через LLM-прокси"
base_url = "https://proxy.example.com/v1"
wire_api = "responses"   # Использовать протокол Responses API

[model_providers.proxy.auth]
command = "/usr/local/bin/fetch-codex-token"
args = ["--audience", "codex"]
timeout_ms = 5000            # Тайм-аут одной операции получения
refresh_interval_ms = 300000 # Интервал активного обновления (5 минут)

Ограничения среды выполнения для команды auth:

  • Не получаетstdin, должен выводить токен вstdout
  • Codex автоматически удаляет начальные и конечные пробелы, а пустой токен считается ошибкой.
  • Настройкиrefresh_interval_ms = 0Означает обновление только после ошибки аутентификации
  • Нельзя использовать вместе с env_key, experimental_bearer_token, requires_openai_auth

Встроенный провайдер Amazon Bedrock

Встроено в Codexamazon-bedrockДля встроенных провайдеров можно напрямую использоватьmodel_providerСсылка:

Пример

# Путь к файлу: ~/.codex/config.toml
model_provider = "amazon-bedrock"
model = "<bedrock-model-id>"

[model_providers.amazon-bedrock.aws]
profile = "default"      # Профиль AWS; если не задан, используется стандартная цепочка учётных данных
region = "eu-central-1"  # Регион Bedrock

Встроенный провайдер Bedrock поддерживает только вложение.awsпереопределений профиля и региона в ...; для других пользовательских элементов используйте стандартныйmodel_providers.<id>процесс.


Локальный режим OSS

Codex поддерживает подключение к локальным моделям с "открытым исходным кодом" (например, Ollama, LM Studio) с помощью--ossзапуска.

Если передан только--oss, а провайдер не указан, Codex прочитаетoss_providerдля выбора значения по умолчанию:

Пример

# Путь к файлу: ~/.codex/config.toml
# Локальный провайдер по умолчанию; необязательно ollama или lmstudio
oss_provider = "ollama"

Пример использования:

Пример

# Использовать oss_provider по умолчанию (ollama)
codex --oss

# Явно указать, что этот сеанс должен использовать lmstudio
codex --oss --oss-provider lmstudio

Поставщик Azure и тонкая настройка

Пример интеграции с Azure OpenAI, параметры уровня запроса и стратегия повторных попыток:

Пример

# Путь к файлу: ~/.codex/config.toml
[model_providers.azure]
name = "Azure"
base_url = "https://YOUR_PROJECT.openai.azure.com/openai"
env_key = "AZURE_OPENAI_API_KEY"          # Чтение ключа из переменной среды
query_params = { api-version = "2025-04-01-preview" }
wire_api = "responses"                    # Использовать протокол Responses API
request_max_retries = 4                   # Количество повторных попыток для обычных запросов
stream_retries = 10                   # Количество повторных попыток для потоковых запросов
stream_idle_timeout_ms = 300000           # Тайм-аут простоя потоковой передачи (5 минут)

Требуется изменить встроенныйopenaiПри использовании базового URL провайдера используйтеopenai_base_url, не создавайте новый[model_providers.openai]。


Проекты ChatGPT с Data Residency

Проекты ChatGPT с включённой функцией "Data Residency" должны использовать базовый URL с префиксом региона:

Пример

# Путь к файлу: ~/.codex/config.toml
model_provider = "openaidr"

[model_providers.openaidr]
name = "OpenAI Data Residency"
# Замените "us" на префикс, указанный в документации по Data Residency (например, eu, jp и т. д.)
base_url = "https://us.api.openai.com/v1"

Не все модели поддерживают Data Residency; перед выбором ознакомьтесь со списком "допустимых моделей" в документации OpenAI по Data Residency.


Рассуждения модели, многословность и контекст

Самый распространённый набор из четырёх параметров для управления поведением модели:

Пример

# Путь к файлу: ~/.codex/config.toml
model_reasoning_summary = "none"          # Отключить сводку рассуждений
model_verbosity = "low"                   # Сократить длину ответа
model_supports_reasoning_summaries = true # Заставить модель выводить рассуждения
model_context_window = 128000             # Переопределить размер контекстного окна

гдеmodel_verbosityДействует только для провайдеров, использующих Responses API; провайдер Chat Completions проигнорирует этот параметр.


Политики подтверждения и режимы песочницы

approval_policyУправляет тем, когда Codex останавливается, чтобы запросить подтверждение у человека,sandbox_modeУправляет тем, к каким файлам и сетям он может получить доступ.

Эти два измерения можно комбинировать независимо; ниже приведён набор типовых конфигураций:

Пример

# Путь к файлу: ~/.codex/config.toml
approval_policy = "untrusted"   # Другие варианты: on-request, never, или { granular = { ... } }
approvals_reviewer = "user"     # "auto_review" проходит автоматическую проверку
sandbox_mode = "workspace-write"
allow_login_shell = false       # Отключить login shell (усиление защиты)

# Пример детализированной политики одобрения (с разбивкой по категориям запросов)
# approval_policy = { granular = {
# sandbox_approval = true,
# rules = true,
# mcp_elicitations = true,
# request_permissions = false, # категории запросов разрешений сразу завершаются отказом
# skill_approval = false # категории скриптов навыков сразу завершаются отказом
# } }

[sandbox_workspace_write]
exclude_tmpdir_env_var = false  # Разрешить запись в $TMPDIR
exclude_slash_tmp = false       # Разрешить запись в /tmp
writable_roots = ["/Users/YOU/.pyenv/shims"]   # Дополнительные каталоги для записи
network_access = false          # Запретить доступ к внешней сети по умолчанию

[auto_review]
policy = """
Используйте политику автоматической проверки вашей организации.
"
""
]

Краткая справка по типовым комбинациям

Сценарииapproval_policysandbox_modeОписание
Локальная ежедневная разработкаon-requestworkspace-writeЗапрос подтверждения перед каждым вызовом инструмента; самый безопасный вариант
Автоматизация CIneverworkspace-writeБез вмешательства человека, необходимо тестировать в песочнице
Полностью доверенная средаneverdanger-full-accessОтключите песочницу; используйте только в изолированных средах
Сценарии строгого аудитанедоверенныйworkspace-writeВсе операции записи требуют вторичного подтверждения

Отключить песочницу (использовать с осторожностью)

Если в вашей среде уже есть изоляция на уровне процессов, вы можете отключить песочницу Codex:

Пример

# Путь к файлу: ~/.codex/config.toml
sandbox_mode = "danger-full-access"

В режимеworkspace-writeнекоторые среды будут.git/и.codex/Оставить только для чтения. Это означает, что команды вродеgit commitпо-прежнему требуют подтверждения при выполнении вне песочницы. Чтобы коммитить напрямую внутри песочницы, используйтеrules, чтобы явно разрешить.


Политика переменных среды оболочки

shell_environment_policyУправляет тем, какие переменные среды Codex передаёт при запуске подпроцессов.Цель по умолчанию— "утечка меньшего числа секретов + сохранение путей, необходимых для задачи."

Пример

# Путь к файлу: ~/.codex/config.toml
[shell_environment_policy]
inherit = "none"                            # Чистый старт (рекомендуется)
set = { PATH = "/usr/bin", MY_FLAG = "1" } # Явно задать переменные
ignore_default_excludes = false             # Сохранить стандартную фильтрацию KEY/SECRET/TOKEN
exclude = ["AWS_*", "AZURE_*"]              # Дополнительно исключить переменные, соответствующие glob-шаблонам
include_only = ["PATH", "HOME"]             # Передавать только по белому списку (переопределяет exclude)

Синтаксис шаблонов: glob без учета регистра,*Соответствует любому символу,?Соответствует одному символу,[A-Z]Является классом символов.

ignore_default_excludes = falseЭто сохранит встроенные фильтры Codex для KEY/SECRET/TOKEN, вступающие в силу до include/exclude.


MCP-серверы

MCP-серверы (Model Context Protocol) позволяют Codex подключаться к внешним наборам инструментов.

Полные инструкции по настройке MCP см. в официальнойдокументации MCP; в этой статье они не раскрываются. Типичные шаблоны:

Пример

# Путь к файлу: ~/.codex/config.toml
[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]
enabled = true

# Временно отключить конкретную службу MCP с помощью --config
# codex --config mcp_servers.context7.enabled=false

Наблюдаемость и телеметрия (OTel)

Codex поддерживает экспорт логов выполнения через OpenTelemetry, по умолчанию отключено. Как включить:

Пример

# Путь к файлу: ~/.codex/config.toml
[otel]
environment = "staging"   # По умолчанию dev
exporter = "none"         # Необязательно: otlp-http или otlp-grpc
log_user_prompt = false   # Не экспортировать содержимое пользовательского запроса (рекомендуется)

Выбор HTTP-экспортёра

Пример

[otel]
exporter = { otlp-http = {
  endpoint = "https://otel.example.com/v1/logs",
  protocol = "binary",
  headers = { "x-otlp-api-key" = "${OTP_TOKEN}" }
}}

Выбор gRPC-экспортера

Пример

[otel]
exporter = { otlp-grpc = {
  endpoint = "https://otel.example.com:4317",
  headers = { "x-otlp-meta" = "abc123" }
}}

Типы экспортируемых событий

Codex генерирует структурированные события, включая, но не ограничиваясь:

EventsЗначение
codex.conversation_startsМодель, настройки рассуждений, политика песочницы/подтверждений
codex.api_requestПопытки API-запроса, статус, длительность, ошибки
codex.sse_eventСобытия потока SSE, количество токенов (при response.completed)
codex.websocket_request、codex.websocket_eventЗапросы и сообщения WebSocket
codex.user_promptДлина пользовательского промпта; содержимое по умолчанию скрыто.
codex.tool_decisionРешения о вызове инструментов: одобрить/отклонить, является ли источником конфигурация или пользователь
codex.tool_resultДлительность выполнения инструмента, успех/неудача, фрагменты вывода

Когдаexporter = "none"Когда ..., Codex всё ещё записывает события в память, но не отправляет их.При закрытии он всё ещё запускает асинхронную пакетную отправку для каждого события, flush при завершении процесса.

Анонимные метрики (включены по умолчанию)

По умолчанию Codex периодически отправляет небольшой объём анонимных данных об использовании и состоянии для выявления аномалий.Не содержит PII。

Чтобы полностью отключить:

Пример

# Путь к файлу: ~/.codex/config.toml
[analytics]
enabled = false

Скрытие и показ событий рассуждений

В логах CI вывод рассуждений часто бывает "шумным", и его можно глобально отключить:

Пример

# Путь к файлу: ~/.codex/config.toml
hide_agent_reasoning = true

И наоборот, когда нужно просмотреть исходное содержимое рассуждений модели:

Пример

# Путь к файлу: ~/.codex/config.toml
show_raw_agent_reasoning = true

Включайте это только тогда, когда убедились, что ваш рабочий процесс допускает раскрытие исходных рассуждений. Некоторые модели (такие какgpt-oss) сами не выводят исходные рассуждения; в этом случае эта настройка не даёт эффекта.


Внешние уведомления (notify)

Когда Codex завершает ход, он может запускать внешние скрипты для реализации уведомлений на рабочем столе, вебхуков чата, обновлений статуса CI и т. д.

Пример

# Путь к файлу: ~/.codex/config.toml
notify = ["python3", "/path/to/notify.py"]

Скрипт получает аргумент JSON; общие поля:

FieldsЗначение
typeВ настоящее время толькоagent-turn-complete
thread-idID сессии
turn-idID хода
cwdРабочий каталог
input-messagesСписок сообщений пользователя
last-assistant-messageПоследнее сообщение ассистента

Простой пример скрипта, который вызывает terminal-notifier:

Пример

# Путь к файлу: /path/to/notify.py
#!/usr/bin/env python3
import json, subprocess, sys

def main() -> int:
    notification = json.loads(sys.argv[1])
    # Обрабатывать только события завершения хода
    if notification.get("type") != "agent-turn-complete":
        return 0
    title = f"Codex: {notification.get('last-assistant-message', 'Ход завершён!')}"
    message = " ".join(notification.get("input-messages", []))
    subprocess.check_output([
        "terminal-notifier",
        "-title", title,
        "-message", message,
        "-group", "codex-" + notification.get("thread-id", ""),
        "-activate", "com.googlecode.iterm2",
    ])
    return 0

if __name__ == "__main__":
    sys.exit(main())

Разница между notify и tui.notifications

МеханизмПодходящие сценарииКлючевая конфигурация
notifyвебхуки, уведомления на рабочем столе, хуки CIВнешняя программа
tui.notificationsВстроенные уведомления TUIПоддержка фильтрации по типу события
tui.notification_methodСпособ уведомления терминалаauto / osc9 / bel
tui.notification_conditionУсловие срабатыванияunfocused / always

autoВ этом режиме Code предпочитает escape-последовательность терминала OSC 9; некоторые терминалы воспринимают её как уведомление на рабочем столе; если она не поддерживается, используется BEL (\x07)。


Обратная связь и история

Отключить сбор обратной связи

По умолчанию Codex предоставляется в TUI./feedbackкоманда. Чтобы отключить:

Пример

# Путь к файлу: ~/.codex/config.toml
[feedback]
enabled = false

После закрытия/feedbackбудет отображать сообщение об отключении, и Codex отказывается отправлять отзыв.

Записи истории (history.jsonl)

По умолчанию Codex записывает локальные стенограммы сессий в~/.codex/history.jsonlКак отключить:

Пример

# Путь к файлу: ~/.codex/config.toml
[history]
persistence = "none"

Ограничивает размер файла (при превышении удаляются самые старые записи и выполняется сжатие):

Пример

# Путь к файлу: ~/.codex/config.toml
[history]
max_bytes = 104857600  # 100 MiB

Кликабельные ссылки

Если терминал или редактор это поддерживает, Codex может отображать ссылки на файлы в виде кликабельных ссылок.

Пример

# Путь к файлу: ~/.codex/config.toml
# Необязательно: vscode, cursor, windsurf, vscode-insiders, none
file_opener = "vscode"

После настройки ссылка/home/example/project/main.py:42будет переписана какvscode://file/.../main.py:42, а при щелчке в VS Code произойдёт переход к этому местоположению.


Обнаружение инструкций проекта (AGENTS.md)

Codex прочитаетAGENTS.md(и связанные файлы), автоматически внесёт соглашения проекта в «первый ход» сессии.

Два основных параметра:

Ключ конфигурацииФункцияТипичные значения
project_doc_max_bytesМаксимальное количество байтов, считываемых на каждый AGENTS.mdПо умолчанию примерно 32 KiB
project_doc_fallback_filenamesИмя резервного файла, когда AGENTS.md отсутствуетНапример,CLAUDE.md

Параметры пользовательского интерфейса терминала (TUI)

ЗапуститеcodexЗапуск без подкоманды открывает интерактивный TUI.[tui]Основные клавиши приведены в таблице ниже:

КлавишаФункцияНеобязательные значения
tui.notificationsВключение/отключение уведомлений TUI; можно фильтровать по типу событияЛогическое значение / массив типов событий
tui.notification_methodСпособ уведомления терминалаauto、osc9、bel
tui.notification_conditionУсловие срабатыванияunfocused、always
tui.animationsASCII-анимации и эффекты мерцанияtrue / false
tui.alternate_screenИспользовать ли альтернативный экран (установите never, чтобы сохранить историю прокрутки)auto, always, never
tui.show_tooltipsПоказывать ли на приветственной странице советы для начинающихtrue / false

Краткая справочная таблица по общей конфигурации

Считайте этот раздел кратким справочным чек-листом «посмотри, если забыл»:

ТребованияРасположение конфигурации / команда
Переключить модель--model gpt-5.4илиmodel = "..."
Конфигурация на основе сценариев--profile <name> + ~/.codex/<name>.config.toml
Временно изменить любое поле--config key=value(синтаксис TOML)
Изменить конечную точку OpenAIopenai_base_url
Подключить прокси/собственного поставщика[model_providers.<id>] + model_provider
Локальная Ollama--oss + oss_provider
Отключить песочницу (используйте с осторожностью)sandbox_mode = "danger-full-access"
Отключить анонимные метрики[analytics] enabled = false
Отключить историю[history] persistence = "none"
Отключить обратную связь[feedback] enabled = false
Уведомления на рабочем столеnotify = ["python3", "/path/to/notify.py"]

Часто задаваемые вопросы

model_provider, заданный в конфигурации уровня проекта, не применяется?

По соображениям безопасности,model_provider、model_providers、profile、notifyи другие чувствительные ключиБудут игнорироваться в .codex/config.toml уровня проекта, и при запуске выводится предупреждение.

Перенесите эти ключи на уровень пользователя~/.codex/config.tomlИменно в него.

Изменения, записанные с помощью --config, не действуют?

Проверьте три вещи: соответствует ли значение синтаксису TOML (массивы используют[], строки используют"", вложенность использует точки); не разделила ли оболочка несколько значений, обработав пробелы как разделители; правильно ли написаны имена ключей. Откройте~/.codex/logs/В последних логах можно увидеть исходную строку, которую не удалось разобрать.

После запуска с профилем всё ещё используется модель по умолчанию?

Самая частая причина: файл профиля всё ещё использует старую[profiles.<name>]таблицу, или суффикс имени файла не.config.toml. Начиная с 0.134.0, распознаётся только~/.codex/<name>.config.tomlформат.

Почему git commit всё ещё требует подтверждения после отключения песочницы?

Закрытиеsandbox_modeне влияет на политику подтверждений.git commitи другие команды всё ещё могут [требовать подтверждения], потому чтоapproval_policy = "on-request"и вызывает запрос; если вы хотите "полностью автоматические коммиты", вам также нужно установить политику подтверждений вnever。

Могут ли пользовательские модели выбирать серию gpt-5?

Зависит отbase_urlтого, поддерживает ли это сервис, на который он указывает. Сам Codex не выполняет строгую проверку поляmodel; ключевой момент — может ли ваша сторона провайдера распознать его и ответить на него.

Другие расширения