Что еще за Codex?
Хороший вопрос, правда. Дело в том, что до недавнего времени у OpenAI была модель Codex, которая использовалась как основа для автодополнения в GitHub Copilot. Затем OpenAI выпустили консольного агента для разработки, которого они назвали, чтобы никто не перепутал, Codex. 1 Все посмеялись над умением OpenAI подбирать имена 2, и продолжили жить дальше. Пока не настал знаменательный день, в который в твиттере появился вот такой пост от Сэма Альтмана:

Я был заинтригован. Во-первых, нагнетанием хайпа, используя фразу “low-key research preview” 3, а во-вторых, этим самым именем. Впрочем, я не был разочарован:

С этим постом семейство сущностей по имени Codex пополнилось двумя новыми представителями:
- Вариант модели o3, заточенный специально для программирования, под названием codex-1
- Облачный агент, способный автономно выполнять несколько разных задач над репозиторием в GitHub 4
Именно о последнем и пойдет сегодня речь.
Как это работает?
Последовательность наших действий, необходимых для пользования агентом, довольно проста:
Пункт 1. Мы идем на https://chatgpt.com/codex. Там мы видим список задач, которые агент исполняет/исполнил, и окно для ввода задания, в котором мы можем выбрать репозиторий, с которым хотим работать, и ветку. Есть две кнопки - Ask, анализирующий код, прежде чем автоматически предложить конкретные подзадания, и Code, который будет непосредственно править код.
Пункт 2. Для добавления нового репозитория мы идем в меню Environments и создаем там новое окружение. Там мы можем указать собственно репо, указать настройки рабочей среды, и попробовать ее в деле.
Пункт 3. Возвращаемся на главный экран, и пишем наше пожелание.
Пункт 4, самый интересный. Среда разворачивает контейнер на основе Ubuntu, устанавливает в нее необходимые пакеты, применяет пользовательские настройки окружения, и клонирует репозиторий внутрь. После этого интернет отключается 5 (уже не всегда, об этом и пост), и агент начинает свою работу. Делает он это долго и усердно, поскольку планировщик там от o3, и это хороший планировщик. За этим процессом можно понаблюдать в окне Logs:

Пункт 5. После нескольких минут работы нам предлагается diff, который мы можем проверить, и либо создать pull-request на GitHub, либо направить процесс на путь истинный и повторить итерацию.
Пункты 3-5 можно запускать в параллель и заниматься своими делами, пока агент работает. При этом диффы, которые он выдает, очень компактные и их приятно читать, что повышает уверенность в правильности результата.
Доступ к интернету
Если внимательно посмотреть на процесс, то можно увидеть определенное ограничение. Отсутствие доступа к интернету во время выполнения ломает многие процессы сборки и тестирования, что ограничивает способности агента. Приводит это к как правило корректным результатам с припиской “Running tests: failed”. Случается это по разным причинам, но прежде всего потому, что часто при сборке необходимо скачать различные библиотеки. Конечно, это можно обойти на этапе настройки окружения, когда доступ еще есть, но этот процесс далеко не всегда тривиален.
Ограничение это было достаточно болезненным, из-за чего на днях OpenAI объявил о том, что теперь можно интернет модели оставить. Разумеется, пускать козла в огород модель в интернет без каких-либо ограничений опасно, поэтому нам был предоставлен выбор режимов доступа.

Во-первых, мы можем оставить все как есть, и в интернет не пускать. Во-вторых, мы можем доступ дать, но к ограниченному количеству ресурсов 6. Кроме того, мы можем разрешить модели выполнять только операции чтения. Самым отчаянным и смелым позволяется дать агенту полный и неограниченный доступ и надеяться на лучшее.
Безопасность
Почему надеяться? Потому что прямой доступ к непроверенным ресурсам грозит целой гроздью проблем, о чем OpenAI навязчиво предупреждает.

При этом в предупреждении смешались в кучу кони, люди, и в одном списке упоминается атака и ее последствия:
- Prompt injection: Модель скачивает веб-страничку, видит там текст, похожий на инструкцию, и радостно его выполняет. При этом инструкция вполне может попросить …
- Exfiltration of code or secrets: … загрузить содержимое репозитория и секреты на сторонний ресурс;
- Inclusion of malware or vulnerabilities: … или использовать библиотеку-зловред вместо легитимной.
- Use content with license restriction: Впрочем, модель может сама решить, что код, который она нашла в репозитории под лицензией GPL — это лучшее, что можно добавить в наш репозиторий, что может привести к определенным юридическим проблемам.
Поэтому строго рекомендуется ограничивать доступ модели только к проверенным ресурсам, и только тогда, когда это необходимо.
Маленький пример и заключение
Разумеется, доступ к интернету открывает массу интересных возможностей помимо упрощения сборки. Я, например, первым делом попросил модель проверить этот сайт на возможные проблемы с SEO. Результат можно увидеть ниже.

Подводя итоги, могу сказать, что в целом мне инструмент нравится. Маленький размер диффов и возможность запуска нескольких задач в параллель позволяют делать маленькие рефакторинги и улучшения по принципу fire-and-forget, не погружая себя непосредственно в контекст и не отвлекаясь от других задач. Это сильно экономит время и снимает когнитивную нагрузку.
Интересно будет посмотреть на то, что в ответ предложат конкуренты. 7
С припиской CLI, хотя практически везде на него ссылаются как на Codex ↩︎
В конце-концов, по сравнению с именованием их моделей, такой конфуз — детский лепет ↩︎
Сэм — мастер взаимоисключающих параграфов ↩︎
Другие (пока?) не поддерживаются ↩︎
Ради безопасности, об этом пойдет речь дальше ↩︎
При этом список ресурсов с различными репозитариями уже прописан ↩︎
Спустя несколько дней на Google I/O 2025 был представлен Jules, работающий по очень схожему принципу, но из-за большого размера диффов, генерируемых Gemini 2.5 Pro, использовать его значительно сложнее. ↩︎