Коротко (TL;DR). Пока задача занимает пять минут, сессией управлять не нужно. Через час работы всё меняется: контекст забит, агент отвечает не на то, что вы спросили, а в проекте лежат правки, о которых вы уже не помните. Главное, что нужно понимать:
- Команды сессии Codex CLI: полная таблица с живым примером
- Какие команды Codex не работают, пока агент занят
- «N% context left»: от какого числа Codex считает остаток
- Почему в Codex видно 258k вместо миллиона токенов
- Как Codex сжимает контекст и что при этом теряется
- Что делает Codex, когда контекст кончился
- /compact, /clear или /new: три разных способа освободить контекст
- Вернуться в прерванную работу: codex resume, —last и пикер сессий
- Fork вместо resume: когда нужна вторая попытка, а не продолжение
- Откат правок Codex: почему отменяет их git, а не агент
- Как дробить длинную работу на сессии и не терять контекст
- Риски длинной сессии Codex: что ломается по жалобам трекера
- FAQ
- у сессии есть приборы: индикатор «N% context left» в правом нижнем углу и команда
/status; - освободить контекст можно тремя разными способами —
/compact,/clearи/new, и последствия у них разные; - вернуться в прерванную работу —
codex resume(илиcodex resume --last), сделать вторую попытку без порчи основной линии —codex fork; - отката правок в Codex нет: команду
/undoубрали, флагundo = trueв конфиге теперь не делает ничего, и откат обеспечивает ваш git.
Всё, что ниже, сверено на 11 августа 2026: стабильная версия Codex CLI — 0.147.0 (вышла 7 августа), в альфа-канале 0.148.0-alpha.7. Состав команд снят с исходников и с официального справочника: набор меняется от релиза к релизу, поэтому даты важнее, чем кажется. Про сам экран терминала и один рабочий цикл «запрос → правки» есть отдельный разбор — интерфейс Codex CLI и рабочий цикл; здесь речь о том, что происходит с сессией на длинной дистанции.
Команды сессии Codex CLI: полная таблица с живым примером
Slash-команда — это команда, которую вы набираете прямо в поле ввода агента, начиная со слэша. Она управляет не кодом, а самой сессией: моделью, правами, контекстом, записью разговора. Наберите / — откроется список с подсказками, и его можно фильтровать, продолжая печатать.
Официальный перечень OpenAI называет их developer commands (в обиходе — codex slash commands). Команд больше сорока, но к управлению длинной сессией относится около двух десятков. Вот они — с тем, что каждая реально делает, и с примером, когда её звать.
| Команда | Что делает | Живой пример: когда нужна |
|---|---|---|
/status | Показывает конфигурацию текущей сессии и расход токенов | Агент начал тупить: сначала смотрим, какая модель, какие права и сколько контекста осталось |
/usage | Показывает расход по аккаунту (это лимиты тарифа, не контекст) | «Почему он отказывается работать» — проверяем, не выбрана ли квота плана |
/compact | Сжимает разговор, чтобы не упереться в лимит контекста | Осталось меньше пятой части окна, а рефакторинг не закончен |
/new | Начинает новый чат, не выходя из Codex | Закончили с миграцией базы, следующая задача — вёрстка страницы |
/clear | Чистит терминал и начинает новый чат | Экран зарос выводом тестов, и вы хотите начать со следующей задачи с чистого листа |
/resume | Открывает список сохранённых чатов и возвращает выбранный | Утром продолжаете то, что бросили вечером |
/fork | Отводит новую ветку от текущего чата | Хотите попробовать второй подход, не портя запись рабочего |
/side (или /btw) | Побочный разговор в одноразовой ветке | Нужно быстро спросить «а что делает эта функция», не засоряя основную задачу |
/goal | Задаёт или показывает цель длинной задачи | Работа на несколько часов: цель ставится один раз, агент держит её сам |
/diff | Показывает git-диф, включая файлы, которые git ещё не отслеживает | Перед коммитом: проверить, что именно агент наменял и не создал ли лишних файлов |
/rollout | Печатает путь к файлу текущей сессии | Нужно заглянуть в запись разговора или сохранить её себе |
/export | Выгружает переписку в markdown | Передаёте задачу коллеге или кладёте разбор в документацию |
/rename | Переименовывает текущий чат | В списке сессий пять безымянных — подписываем, пока помните, о чём был этот |
/archive | Архивирует сессию и выходит | Задача сдана, чат из списка убрать, но запись сохранить |
/delete | Удаляет сессию навсегда и выходит | В переписку попало лишнее, и запись не должна остаться на диске |
/debug-config | Показывает, какие значения конфига реально действуют | Проверить, какое окно и какой порог сжатия применились на самом деле |
/permissions | Выбирает, что агенту разрешено без вопросов | Начинается участок, где он будет много писать в файлы |
/model | Меняет модель и уровень рассуждений внутри сессии | Задача усложнилась — или наоборот, стала механической |
Две строки в этой таблице стоит развернуть отдельно, потому что за ними прячутся ошибки. /permissions — это не «включить всё»: песочница и политика одобрений в Codex настраиваются раздельно, и разобраны они в уроке про режимы одобрения и песочницу. А /usage часто путают с контекстом: он про квоту тарифа ChatGPT, то есть про лимиты плана, и к размеру окна сессии отношения не имеет.
Какие команды Codex не работают, пока агент занят
Это то, чего нет ни в одном справочнике, а на практике бьёт больно. В исходниках Codex лежит отдельная таблица доступности: часть команд нельзя выполнить, пока агент делает ход. Среди недоступных — /compact, /new, /clear, /fork, /archive, /delete, /init, /export, /review, /plan.
Логика ясная: все они меняют саму сессию, а менять её посреди хода нельзя. Но следствие неприятное: «сожму контекст на ходу, пока он думает» не сработает — а именно в этот момент вам обычно и хочется.
Что делать вместо этого:
- Tab — поставить команду или уточнение в очередь на следующий ход. Команда разберётся, когда до неё дойдёт дело, поэтому её меню и возможные ошибки вы увидите только после текущего хода.
- Enter — вбросить инструкцию в текущий ход, если агент явно пошёл не туда.
- Esc — прервать ход: пока агент занят, строка состояния сама подсказывает
esc to interrupt. После остановки хода нет, поэтому доступны все команды. Клавишу можно переназначить через/keymap, так что подсказка на экране надёжнее памяти.
Практический вывод: решение «сжимать или начинать заново» принимают до того, как отправили тяжёлый запрос, а не в середине.
«N% context left»: от какого числа Codex считает остаток
В правом нижнем углу интерфейса светится строка вида 100% context left. Это остаток контекстного окна — того объёма текста, который модель держит перед глазами: ваши сообщения, её ответы, содержимое прочитанных файлов и вывод запущенных команд. Если процент по какой-то причине неизвестен, вместо него показывается объём израсходованных токенов.
Важно понимать, что считается остаток не от одной величины, а от минимума двух: сколько осталось до порога автоматического сжатия и сколько осталось до полного окна модели. Порог всегда ниже потолка, поэтому обычно вы смотрите именно на него.
| Что смотреть | Где | Что это значит |
|---|---|---|
N% context left | правый нижний угол | сколько места осталось до сжатия или до потолка окна |
/status | вводом в поле | модель, права, папки и расход токенов текущей сессии |
/debug-config | вводом в поле | какие значения окна и порога сжатия реально применились |
/usage | вводом в поле | расход квоты тарифа — другая сущность, не контекст |
Отдельная деталь, которую стоит знать заранее: постоянные инструкции проекта тоже занимают место. Файл AGENTS.md подаётся агенту на каждом ходу независимо от того, нужен он прямо сейчас или нет; по сторонним замерам все такие инструкции сводятся в один файл с потолком 32 КиБ. То есть раздутый AGENTS.md — это не разовая, а постоянная плата за каждый ход.
Почему в Codex видно 258k вместо миллиона токенов
Это самая частая претензия к длинным сессиям, и она построена на сравнении двух разных чисел. В трекере проекта лежат обращения от 13 и 23 июля 2026 с одинаковым текстом: окно было 353 тысячи, стало 258 тысяч, а рекламируют миллион.
Арифметика на 11 августа 2026 такая. В параметрах модели, которые использует CLI, стоит окно 272 000 токенов, а рабочей считается доля 95%:
- 272 000 × 0,95 ≈ 258 400 токенов — ровно то число, на которое жалуются;
- по независимому разбору потолок 400 000 складывается из 272 000 входных токенов и 128 000, зарезервированных под ответ модели;
- миллион с лишним — это потолок самой модели в API, а не бюджет вашей сессии в Codex.
Оговорка, без которой цифры вводят в заблуждение: 272 000 в коде — это резервное значение, которое берётся, когда параметры модели неизвестны. Реальные приходят с сервера и меняются вместе с моделями. Поэтому запоминать надо не число, а способ его узнать: /status и /debug-config показывают, что действует у вас сегодня.
Отсюда же ответ на вопрос «codex как увеличить контекст». В конфиге есть ключ model_context_window, и его действительно можно задать. Но в коде значение из конфига обрезается по максимуму модели: берётся меньшее из двух. Поднять окно выше модельного нельзя — ключ годится только чтобы занизить его (например, чтобы сжатие срабатывало раньше). Работающих способов «включить миллион» из конфига не существует, что бы ни обещали посты в соцсетях.
Как Codex сжимает контекст и что при этом теряется
Сжатие (compaction) — это замена длинной переписки короткой выжимкой, чтобы работа продолжилась в том же чате. В Codex это не локальная операция «модель пересказала себе диалог»: для codex-моделей CLI обращается к серверу — есть отдельный вызов сжатия и параметр порога compact_threshold, после которого сжатие запускается автоматически.
Ответ приходит в виде шифрованного элемента, и официальная формулировка тут прямая: он непрозрачен и не предназначен для чтения человеком. Практических следствий два: выжимку нельзя посмотреть и нельзя поправить. Вместе с ней в новое окно переносится часть элементов предыдущего — то есть это не «всё выбросили, оставили абзац».
Что просят сохранить при сжатии, известно точно: сам промпт лежит в репозитории и требует «контрольную точку контекста» — передать другой модели, которая продолжит задачу, четыре вещи:
- текущий прогресс и принятые решения;
- важный контекст, ограничения и предпочтения пользователя;
- что осталось сделать — понятными следующими шагами;
- критичные данные, примеры и ссылки, нужные для продолжения.
Следующее окно получает выжимку с преамбулой «другая модель начинала эту задачу и оставила краткое изложение своих размышлений — опирайся на него и не дублируй работу».
Из этого списка видно и то, чего в нём нет: формулировок, оттенков, вашего «только не трогай папку legacy, там всё держится на честном слове», если это не было записано как ограничение. Пользователи это чувствуют — в трекере есть просьба сохранять последние операционные шаги дословно, потому что после сжатия теряется цепочка уже сделанного.
Отсюда главный приём длинной работы: важное складывать в файл, а не в чат. Файл переживёт любое сжатие, реплика — не обязательно. Тот же принцип, только на примере другого агента, разобран в материале о том, как не терять контекст между сессиями.
Что делает Codex, когда контекст кончился
У конца окна есть двухступенчатая механика, о которой почти не пишут, а она объясняет странное поведение агента.
Ступень первая — предупреждение. В настройках есть порог остатка (reminder_threshold_tokens): когда до сжатия остаётся меньше заданного числа токенов, в разговор подставляется напоминание, и в него подставляется само число остатка. Приходит оно один раз. Если вы видели, что агент вдруг начал «сворачиваться» и подводить итоги без вашей просьбы — скорее всего, он получил именно это напоминание.
Ступень вторая — аварийная заметка. Отдельно резервируется небольшой запас токенов сверх порога, и в описании он назван прямо: дополнительные токены на заметки в аварийном режиме. Когда остаток доходит до нуля, в разговор отправляется специальный промпт, и агент тратит этот запас на запись состояния для следующего окна. Резерв выделяется только если такой промпт задан.
По сторонним разборам исходников порог считается примерно так: из окна модели вычитается запас под ответ (до 20 000 токенов), затем ещё около 13 000 — остаток и есть точка срабатывания; для окна 200 000 это примерно 167 000 токенов. Это чужая реконструкция, а не документированная формула, и полагаться на неё как на точную не стоит. Там же отмечено, что порог из конфига ограничен сверху примерно 90% окна.
/compact, /clear или /new: три разных способа освободить контекст
Все три «освобождают контекст», и в справочниках их часто подают как синонимы. Разница принципиальная — в англоязычных обсуждениях этот выбор так и называется, compact vs clear.Команда Что помнит агент после Что с записью сессии Когда это правильный выбор /compactвыжимку прошлого разговора: решения, ограничения, следующие шаги та же сессия продолжается задача НЕ закончена, а место кончается /newничего из прошлого чата начинается новый чат, прошлый остаётся в истории задача закончена, следующая — про другое /clearничего из прошлого чата новый чат плюс очищенный экран терминала то же, что /new, но вы ещё и не хотите видеть простыню вывода
Правило выбора простое: сжатие — для незаконченной задачи, новый чат — для новой задачи. Официальные практики OpenAI говорят то же самое: /compact — когда переписка разрослась и нужна выжимка прежнего контекста, свежий чат — под новую задачу; вдобавок Codex сжимает разговор и сам.
Ошибка, которая стоит дороже всего, — тянуть одну сессию неделю. Каждое сжатие теряет часть подробностей, а следующее сжимает уже сжатое. К третьему-четвёртому кругу агент уверенно работает с пересказом пересказа. Дешевле закрыть задачу, положить итог в файл и начать чистый чат.
Вернуться в прерванную работу: codex resume, —last и пикер сессий
Сессии Codex сохраняются сами. Каждая — это JSONL-файл (по одной записи на строку) в папке ~/.codex/sessions/ГГГГ/ММ/ДД/ с именем вида rollout-...jsonl; путь к файлу текущей сессии печатает /rollout. Внутри — вся переписка, вызовы инструментов и их вывод.
Способы вернуться:
codex resume --last— открыть последнюю сессию сразу, без выбора;codex resume— открыть список и выбрать нужную;codex resume <id>— открыть конкретную сессию, если знаете идентификатор;/resume— то же самое изнутри уже запущенного Codex;codex exec resume— продолжить неинтерактивный запуск, это нужно для скриптов и CI.
Две детали, из-за которых люди решают, что «сессия пропала». Первая: по умолчанию показываются чаты текущего репозитория — сессия из другой папки в списке не появится, для этого есть флаг --all. Вторая: отдельной команды вида codex session list в CLI нет, список живёт в пикере; сторонние утилиты, которые парсят ту же папку и показывают историю плоским списком с поиском, люди пишут именно поэтому.
Важно понимать, что именно восстанавливается. Не «память» модели — сохранённого внутреннего состояния у неё нет. Восстанавливается запись разговора, из которой контекст собирается заново. Отсюда две вещи: возвращение в очень длинную сессию сразу занимает много контекста (иногда сжатие срабатывает почти сразу после возврата — на это в трекере есть отдельная жалоба), а сама сессия после возврата дописывается в тот же файл.
Fork вместо resume: когда нужна вторая попытка, а не продолжение
Обе операции открывают старую сессию, но делают разное:
- resume — продолжение той же линии: новые ходы дописываются в тот же файл, история одна;
- fork — новая ветка от выбранной точки: оригинал остаётся нетронутым;
/side(алиас/btw) — одноразовая ветка для побочного вопроса; внутри неё доступен только небольшой набор команд вроде/diff,/statusи/export.
Правило: если вы собираетесь попробовать иначе — берите fork. Иначе неудачный эксперимент навсегда останется в рабочей записи задачи, и через месяц по ней будет непонятно, что вы в итоге сделали, а что отменили. Форкнуть текущий чат можно и на ходу: codex fork --last снаружи, /fork изнутри.
Откат правок Codex: почему отменяет их git, а не агент
Это место расходится с русскоязычными гидами. Два популярных руководства предлагают включить в конфиге undo = true в блоке [features] и пользоваться командой /undo.
На 11 августа 2026 это не работает. В реестре функций Codex ключ undo помечен как удалённый и оставлен «совместимости ради, чтобы старые конфиги продолжали читаться»; при разборе конфига этот ключ просто пропускается — без предупреждения. Команды /undo в перечне нет. Просьба вернуть её открыта в трекере с 14 января 2026, отдельная заявка просит добавить откат к контрольной точке.
Вторая ловушка — двойной Esc. Он открывает предыдущее сообщение на правку и позволяет отвести ветку разговора с этой точки. Это откат переписки, а не файлов: в протоколе Codex так и написано — сброс последних ходов из контекста не пытается вернуть изменения в файловой системе, отменять правки на диске обязан клиент. То есть чат вы отмотали, а код на диске остался новым.Что вы хотите отменить Чем это делается последние сообщения в разговоре двойной Esc (правка предыдущего сообщения и ветка от него) правки в отслеживаемых файлах git restore <файл> или git checkout .файлы, которые агент создал git clean -fd (сначала посмотрите git clean -nd)весь набор правок задачи вернуться к своему коммиту-чекпойнту
Рабочая процедура, которая делает длинную сессию безопасной:
- Коммит перед задачей. Пусть даже с сообщением «чекпойнт»: это ваша единственная кнопка отмены.
/diffвместо доверия. Команда показывает git-диф вместе с файлами, которых git ещё не знает, — именно там всплывают неожиданно созданные файлы.- Мелкие коммиты по ходу. Каждый рабочий этап — коммит; тогда «откатить» означает вернуться на один шаг, а не потерять час.
- Ничего важного вне git. Незакоммиченный черновик документа в папке проекта — это то, что нечем восстановить: именно с такими историями и приходят в трекер.
Как дробить длинную работу на сессии и не терять контекст
Дисциплина стоит дешевле, чем героическое спасение сессии на 3% остатка. Порядок, который работает:
- Одна сессия — одна задача. Закончили —
/new. Формулировка задачи при этом важна не меньше, чем управление сессией: об этом отдельный урок про то, как ставить задачи Codex. - Цель — в
/goal. Для работы на несколько часов у цели есть собственный бюджет токенов, то есть это механизм для агента, а не пометка для человека. - Итоги — в файл. Короткий
NOTES.mdили запись в задачнике: что сделано, что решено, что дальше. Это то, что переживёт сжатие и станет входом в следующую сессию. - Коммит на каждом этапе. Он же чекпойнт отката.
- Побочные вопросы — в
/side. Не тащите «а как работает эта функция» в основную линию задачи. - Переименовать и заархивировать.
/renameдаёт сессии человеческое имя,/archiveубирает её из списка, оставляя запись на диске.
Ещё одна причина не копить сессии: файл записи остаётся на диске и хранит всё, включая вывод команд. Вымарывание секретов и токенов из показанных команд и из воспроизводимой истории добавили только в версии 0.147.0 от 7 августа 2026 — записи, сделанные раньше, чище не станут. Если в переписку попало лишнее, архивирование не поможет: архив не равен удалению, и для удаления есть /delete и codex delete (необратимо, вместе с ветками субагентов).
Риски длинной сессии Codex: что ломается по жалобам трекера
Картина по обращениям в репозитории проекта на 11 августа 2026. Номера в таблице — это заявки пользователей, и часть из них уже закрыта (то есть починена или признана дублем): по датам видно, что жалобы идут с марта по июль 2026, поэтому симптом полезно знать, даже если конкретную заявку закрыли.Симптом Что известно Что делать Агент отвечает на более ранний запрос issue #19116: у порога сжатия сессия подвисает, при очень больших окнах агент берётся за старое состояние задачи прервать ход (Esc), проверить /status, начать новый чат с итогом в файлеСжатие идёт по кругу часами issue #14120 (CLI 0.112): Codex сжимает раз за разом; по описанию автора заявки после каждого сжатия остаётся около 12% контекста остановить, /new, задачу отдать меньшими кускамиСжатие срабатывает сразу после возврата issue #29426 в приложении Codex: короткая возобновлённая сессия сжимается, хотя окно почти пустое не возвращаться в самые длинные сессии — форкнуть или начать заново с заметкой Сжатие нельзя отменить и оно тормозит issue #24372 и #24432 в приложении Codex: авто-сжатие занимает до минуты планировать сжатие самому, не доводя до автоматического После сжатия теряется ход работы issue #29356: просят сохранять последние операционные шаги дословно вести файл с состоянием, не надеясь на выжимку Окно «урезали» issue #34926 и #32806: рабочих 258k вместо заявленного миллиона считать по /status, а не по рекламным цифрам модели
Есть и обратная сторона: конец окна не обрывает работу молча — сначала приходит напоминание с остатком токенов, затем резервируется запас на аварийную заметку. А сама возможность работать через несколько окон подряд заявлена OpenAI как обученная способность модели: она сжимает сессию у предела окна, получает чистое окно и продолжает, пока задача не будет закончена. Это заявление вендора, а не наш замер, но продуктовая часть под него сделана — /compact, /resume, /fork, /goal и запись сессий на диск.
FAQ
Как продолжить прерванную сессию Codex CLI?
Запустите codex resume --last — откроется последняя сессия. Если нужна не последняя, наберите codex resume и выберите из списка, а изнутри уже запущенного Codex — команду /resume. По умолчанию показываются чаты текущего репозитория; чтобы увидеть сессии из других папок, добавьте флаг --all. Восстанавливается запись разговора, из которой контекст собирается заново.
Можно ли отменить правки, которые сделал Codex?
Средствами агента — нет. Команду /undo убрали, а ключ undo = true в конфиге теперь молча игнорируется, хотя часть руководств всё ещё советует его включить. Двойной Esc откатывает только переписку: в протоколе прямо сказано, что изменения на диске он не возвращает. Рабочий откат — гитом: коммит-чекпойнт перед задачей, затем git restore для изменённых файлов и git clean -fd для созданных.
Чем /compact отличается от /clear и /new?
/compact оставляет выжимку разговора и продолжает ту же сессию — это выбор для незаконченной задачи. /new начинает новый чат: прошлый контекст агент не помнит, запись остаётся в истории. /clear делает то же, что /new, и вдобавок чистит экран терминала. Правило простое: сжатие — для продолжения работы, новый чат — под новую задачу.
Можно ли увеличить контекстное окно Codex через config.toml?
Нет. Ключ model_context_window существует, но заданное значение обрезается по максимуму модели — берётся меньшее из двух. Поднять окно выше модельного нельзя, занизить можно (иногда полезно, чтобы сжатие срабатывало раньше). Реальный размер окна и порог сжатия смотрите командами /status и /debug-config, а не по рекламным цифрам модели.
Где лежат файлы сессий Codex и как их удалить?
Записи хранятся как JSONL-файлы в ~/.codex/sessions/ГГГГ/ММ/ДД/, путь к текущей печатает /rollout. Внутри вся переписка вместе с выводом запущенных команд. Архивирование не удаляет файл — оно убирает сессию из списка. Для удаления есть /delete изнутри и codex delete снаружи; операция необратима и уносит ветки субагентов.
Что делать, если Codex сжимает контекст по кругу?
Это известное поведение: в трекере есть обращение о том, что сжатие повторяется часами, так и не доходя до правок. Прервите ход клавишей Esc, посмотрите /status, выпишите текущее состояние работы в файл и начните новый чат командой /new, отдав задачу более мелкими частями. Тянуть такую сессию дальше дороже, чем начать заново с заметкой.
Курс «OpenAI Codex: агентный кодинг» · модуль «Метод работы». Полная программа и два маршрута обучения — на странице курса.
Предыдущий урок: Codex CLI против Codex Cloud: где решать задачу



