Коротко (TL;DR). Поки завдання триває пʼять хвилин, керувати сесією не потрібно. Через годину роботи все інакше: контекст забитий, агент відповідає не на те, про що ви щойно запитали, а в проєкті лежать правки, про які ви вже й не пам’ятаєте. Головне, що варто розуміти:
- Команди сесії Codex CLI: повна таблиця з живим прикладом
- Які команди Codex не працюють, поки агент зайнятий
- «N% context left»: від якого числа Codex обчислює залишок
- Чому в Codex видно 258k замість мільйона токенів
- Як Codex стискає контекст і що при цьому губиться
- Що робить Codex, коли контекст закінчився
- /compact, /clear чи /new: три різні способи звільнити контекст
- Повернутися до перерваної роботи: codex resume, –last і список сесій
- Fork замість resume: коли потрібна друга спроба, а не продовження
- Відкат правок Codex: чому скасовує їх git, а не агент
- Як дробити довгу роботу на сесії й не втрачати контекст
- Ризики довгої сесії Codex: що ламається за скаргами трекера
- Часті запитання
- у сесії є прилади: показник «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, а англомовні шпаргалки шукають за codex cli commands). Команд понад сорок, але до керування довгою сесією належить близько двох десятків. Ось вони — з тим, що кожна насправді робить, і з прикладом, коли її кликати.
| Команда | Що робить | Живий приклад: коли потрібна |
|---|---|---|
/status | Показує конфігурацію поточної сесії та витрату токенів | Агент почав гальмувати: спершу дивимося, яка модель, які права і скільки контексту лишилося |
/usage | Показує витрату по акаунту (це ліміти тарифу, не контекст) | «Чому він відмовляється працювати» — перевіряємо, чи не вибрано квоту плану |
/compact | Стискає розмову, щоб не впертися в ліміт контексту | Лишилося менше пʼятої частини вікна, а рефакторинг не завершено |
/new | Починає новий чат, не виходячи з Codex | Завершили міграцію бази, наступне завдання — верстка сторінки |
/clear | Чистить термінал і починає новий чат | Екран заріс виводом тестів, і ви хочете взятися за наступне завдання з чистого аркуша |
/resume | Відкриває список збережених чатів і повертає вибраний | Зранку продовжуєте те, що покинули ввечері |
/fork | Відводить нову гілку від поточного чату | Хочете спробувати другий підхід, не псуючи запис робочого |
/side (або /btw) | Побічна розмова в одноразовій гілці | Треба швидко запитати «а що робить ця функція», не засмічуючи основне завдання |
/goal | Задає або показує ціль довгого завдання | Робота на кілька годин: ціль ставиться один раз, агент тримає її сам |
/diff | Показує git-diff разом із файлами, яких 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 показують те, що діє у вас сьогодні.
Звідси й відповідь на питання, чи можна збільшити контекст. У конфізі є ключ model_context_window, і його справді можна задати. Але в коді значення з конфігу обрізається за максимумом моделі: береться менше з двох. Підняти вікно вище за модельне не вийде — ключ годиться лише щоб занизити його (наприклад, аби стиснення спрацьовувало раніше). Робочих способів «увімкнути мільйон» із конфігу не існує, що б не обіцяли пости в соцмережах.
Як Codex стискає контекст і що при цьому губиться
Стиснення (англійською це називається 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вижимку минулої розмови: рішення, обмеження, наступні кроки та сама сесія продовжується завдання НЕ завершене, а місце закінчується /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 немає, перелік живе у вікні вибору; сторонні утиліти, які розбирають ту саму теку й показують історію плоским списком із пошуком (їх шукають за codex session history), люди пишуть саме тому.
Важливо розуміти, що саме відновлюється. Не «пам’ять» моделі — збереженого внутрішнього стану в неї немає. Відновлюється запис розмови, з якого контекст збирається наново. Звідси дві речі: повернення в дуже довгу сесію відразу займає багато контексту (інколи стиснення спрацьовує майже одразу після повернення — на це в трекері є окрема скарга), а сама сесія після повернення дописується в той самий файл.
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-diff разом із файлами, яких 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 і запис сесій на диск.
Часті запитання
Як продовжити перервану сесію 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: де вирішувати задачу



