Рецепт · OpenClaw

Codex: временные ограничения уходят в изолированный тред

Совместимые ограничения на весь разговор переиспользуют нативный тред Codex, а временные используют изолированный тред и не закрепляют привязку разговора.

· 3 мин чтения

Коротко

  • Постоянные ограничения Codex держат нативный тред, временные уходят в изолированный и не закрепляют привязку.
  • Смена политики или отсутствие сохранённого отпечатка политики создаёт совместимого преемника с переносом истории; неудачная замена оставляет старую привязку.
  • Оставьте agents.defaults.compaction.model — Doctor его сохраняет. А compaction.provider на Codex-агентах задавать не нужно, Doctor удалит его.

Сверено с документацией OpenClaw 2026.11.1, 5 ноября 2026.

Временное ограничение в Codex легко принять за постоянный режим. На деле политика инструментов вычисляется на каждом ходу: постоянные ограничения переиспользуют нативный тред, а временные уходят в изолированный.

Что изменилось: политика на каждом турне

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

Временные ограничения — список разрешений на один запуск, расписание или ограничение по отправителю — используют изолированный тред, где это необходимо, и сохраняют прежнюю привязку разговора. Первый временный ход не закрепляет постоянную ограниченную привязку. Временные треды освобождают подписки после завершения или сбоя, включая инкогнито-сессии, и не сбрасывают привязку разговора.

Что считается ограничением

Ход помечается как ограниченный (policy-restricted), когда явную политику нельзя безопасно отобразить на нативную поверхность инструментов Codex. Триггеры:

  • конечный список tools.allow или внутренний список разрешений на один запуск;
  • disableTools или политика отправителя и группы, запрещающая все инструменты;
  • запись в tools.deny с маской (wildcard), группой инструментов, неизвестным именем или именем вне аудированного набора безопасных запретов;
  • политика агента, провайдера, группы, отправителя, песочницы (sandbox), субагента, унаследованная, расписанная или рабочего окружения (runtime) с такими ограничениями.

Сужение профиля инструментов само по себе этот режим не включает. Список запретов только из аудированных имён остаётся на обычной нативной поверхности, OpenClaw применяет запрет напрямую.

agents_list, automations, canvas, dashboard, gateway, heartbeat_respond,
image_generate, memory_get, memory_search, message, music_generate, openclaw,
progress_card, session_status, show_widget, skill_workshop, tts, video_generate,
web_fetch, x_search

Смена политики: когда создаётся преемник треда

Если политика создания управляемого ограниченного треда изменилась или у старой привязки нет сохранённого отпечатка политики, OpenClaw создаёт совместимого преемника и переносит в него подготовленную историю разговора. Неудачная замена оставляет прежнюю привязку.

Привязку защищают проверки владения. Заменить тред, принадлежащий внешнему владельцу или защищённый активной работой, OpenClaw откажется. Смена политики не расширяет права треда.

Смена модели не рвёт тред. Переход с openai/gpt-5.5 на openai/gpt-5.2 сохраняет привязку. Codex получает выбранную модель, политику подтверждений, песочницу, ревьюера подтверждений и уровень сервиса (service tier). Исключение — привязки под наблюдением (supervised): модель заблокирована, а продолжение (resume) не передаёт переопределения модели и провайдера.

Сжатие контекста на Codex-агентах

agents.defaults.compaction.model задаёт модель для сводок на стороне OpenClaw, включая сводку истории перед запуском свежего треда Codex. Doctor сохраняет это значение. Нативное сжатие контекста в Codex и команда /compact остаются у Codex и это переопределение не используют. Заблокированный выбор модели тоже имеет приоритет над моделью сводки.

compaction.provider на Codex-агентах не задавайте: Doctor удалит неподдерживаемые переопределения провайдера и мигрирует прежнюю конфигурацию Lossless.

Lossless как движок контекста (context engine) настраивается через plugins.slots.contextEngine: "lossless-claw" и plugins.entries.lossless-claw.config.summaryModel, а не через agents.defaults.compaction.

Как проверить

  1. Сделайте openclaw doctor --fix и посмотрите разницу в конфиге: agents.defaults.compaction.model должен остаться, compaction.provider исчезнуть.
  2. Запустите ход со списком разрешений на один запуск, затем обычный ход без ограничений. Следующий ход должен вернуться в обычный нативный тред разговора.
  3. Добавьте в tools.deny имя вне аудированного набора безопасных запретов и убедитесь, что ход ушёл на ограниченную поверхность.

Где ломается и когда не применять

Если ограничение должно держаться весь разговор, временный режим не подойдёт. Ограничение на весь разговор, которое нельзя безопасно отобразить на нативный слой Codex, переводит ход в режим ограниченного хода.

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