Разработчик pilc80 опубликовал Claudex — локальный прокси-сервер, который позволяет запускать Claude Code поверх подписки ChatGPT Plus/Pro или Codex. Для пользователя интерфейс остаётся привычным, но под капотом запросы транслируются из формата Anthropic Messages в OpenAI Responses API с авторизацией через OAuth.

Идея возникла из практической задачи: автор хотел использовать уже оплаченную подписку ChatGPT вместо отдельного ключа OpenAI API, не теряя при этом возможностей Claude Code — инструментов, скриншотов, команды /compact, длинных сессий и корректной обработки ошибок. Простой HTTP-прокси с этим не справляется: Claude Code ожидает не просто JSON-ответ, а полноценное поведение Anthropic API, включая потоковые события, сигналы о переполнении контекста и типизированные коды ошибок.

Anthropic Messages APIOpenAI Responses API
systeminstructions
messagesinput[]
tool_usefunction_call
tool_resultfunction_call_output
image blockinput_image
document/file blockinput_file / file data

Основная техническая сложность — слой трансляции между двумя несовместимыми протоколами. Anthropic Messages API и OpenAI Responses API похожи лишь на верхнем уровне. Системный промпт в Anthropic превращается в поле instructions в Responses API; вызов инструмента tool_use транслируется в function_call; результат инструмента tool_result — в function_call_output. Если внутри результата инструмента есть изображение, его нужно вынести отдельным сообщением с полем input_image, иначе сценарий «Claude прочитал скриншот через инструмент и продолжает работу» ломается. Весь этот слой реализован в файле src/proxy/translate/responses.rs.

Поддерживаются инструменты, потоковые вызовы, изображения, файлы, команда /compact и восстановление после переполнения контекста.

Отдельной проблемой оказались изображения в истории диалога. Claude Code хранит картинки в base64 прямо в истории сессии. Если прокси честно пересылает всю историю при каждом запросе, тело запроса быстро разрастается до размеров, при которых сервер отказывает. Автор реализовал фильтрацию: текущие изображения передаются, устаревшие из истории — нет.

Авторизация построена на OAuth без хранения ключей в конфигурационных файлах. Токены сохраняются в системном хранилище учётных данных — Keychain на macOS или его аналогах на других платформах. Для удалённых машин предусмотрен вход через device code. Профиль пользователя описывается в TOML-конфиге: там указываются тип провайдера, базовый URL, модель по умолчанию и маппинг слотов haiku/sonnet/opus на реальные модели аккаунта.

Инструмент разделён на две команды: claudex запускает Claude Code и передаёт ему все аргументы без изменений, а claudex-config управляет профилями, авторизацией и диагностикой. Такое разделение принципиально: если claudex перехватывал бы флаги Claude Code, команды вроде claudex --resume session-id перестали бы работать корректно. Команда claudex-config config doctor проверяет настройку, авторизацию и состояние запущенного прокси.

Часть возможностей намеренно оставлена за рамками проекта. Серверные инструменты Anthropic не транслируются как инструменты OpenAI, а скрытое reasoning в Codex не превращается в thinking blocks Claude Code. Доступные модели и их варианты зависят от конкретного аккаунта и провайдера — Claudex не управляет этим уровнем.

Проект распространяется как open-source. Установка на macOS и Linux — одна команда curl; на Windows — PowerShell-скрипт. Установщик проверяет версию и SHA256-хэш бинарника.