IKORG
English

← Практика · 2 сентября 2026

Как подключить GPT-5 к Claude Code без API-ключа

Ставим Codex CLI, входим по подписке ChatGPT и даём Claude команду, которой он спрашивает GPT-5 прямо посреди работы.

6 минут чтенияинструменты

У меня две подписки — ChatGPT и Claude. И долго было обидно: сидишь в Claude Code, хочешь второе мнение по архитектуре, а чтобы спросить GPT, надо открывать браузер, копировать туда код, копировать ответ обратно. Плюс за API-доступ к GPT просят отдельные деньги, хотя подписка уже оплачена.

Оказалось, платить второй раз не нужно. Codex CLI умеет авторизоваться подпиской ChatGPT, а значит, из терминала можно спрашивать GPT-5 столько же, сколько в браузере. Дальше дело техники: обернуть вызов в скрипт и рассказать про него Claude.

Ниже — ровно то, что стоит у меня и работает каждый день.

Что получится в итоге

ask-gpt "оцени этот план миграции, что я упускаю"
cat большой-файл.py | ask-gpt "найди узкие места"

Claude Code запускает эти команды сам, когда я прошу «спроси у GPT». Ответ приходит в сессию, лимит Claude на это не тратится — расходуется подписка ChatGPT.

Шаг 1. Ставим Codex CLI

Нужен Node.js 20 или новее:

npm install -g @openai/codex
codex --version

Если npm ставит глобальные пакеты в системную папку и ругается на права, поставьте локально в домашний каталог и добавьте путь:

npm config set prefix ~/.local/node
export PATH="$HOME/.local/node/bin:$PATH"

Шаг 2. Входим по подписке

codex login --device-auth

Команда покажет короткий код и ссылку. Открываете ссылку в браузере — хоть на телефоне, — вводите код, подтверждаете вход в свой аккаунт ChatGPT. Всё: токен лёг в ~/.codex/auth.json и обновляется сам, повторно входить не нужно.

Это ключевой момент: API-ключ не создаётся и не оплачивается. Работает та же подписка, за которую вы уже платите.

Проверка:

codex exec -s read-only --skip-git-repo-check "Ответь одним словом: привет"

Шаг 3. Обёртка

Голый codex exec неудобен: он агентный, печатает служебный лог, ответ приходится выуживать. Заведём скрипт ~/.local/bin/ask-gpt:

#!/usr/bin/env bash
set -euo pipefail
export PATH="$HOME/.local/node/bin:$PATH"

# вопрос: либо аргументом, либо через stdin
PROMPT="${*:-}"
[ -z "$PROMPT" ] && PROMPT="$(cat)"
[ -z "$PROMPT" ] && { echo "ask-gpt: пустой вопрос" >&2; exit 2; }

WORK="$(mktemp -d)"; trap 'rm -rf "$WORK"' EXIT
ANS="$WORK/answer.txt"

codex exec -s read-only --skip-git-repo-check -C "$WORK" -o "$ANS" "$PROMPT" \
  >"$WORK/run.log" 2>&1 || { cat "$WORK/run.log" >&2; exit 1; }

# сохраняем копию вопроса и ответа, чтобы потом найти
ARCH="$HOME/gpt-consult/$(date +%Y-%m-%d_%H%M%S).md"
mkdir -p "$(dirname "$ARCH")"
{ echo "## Вопрос"; echo "$PROMPT"; echo; echo "## Ответ"; cat "$ANS"; } > "$ARCH"

cat "$ANS"
echo "[сохранено: $ARCH]" >&2
chmod +x ~/.local/bin/ask-gpt
ask-gpt "Ответь одним словом: работает?"

Три вещи, которые тут не случайны. -s read-only — GPT не может менять файлы, только читать и думать; для консультанта это правильный режим. -C "$WORK" — рабочей папкой становится пустой временный каталог, чтобы агент не бродил по проекту. Ответ уходит в stdout чистым текстом, а путь к архиву — в stderr, чтобы не мешался, если вы направляете вывод в файл.

Шаг 4. Рассказать про команду Claude

Claude Code сам не догадается, что у него есть доступ к GPT. Добавьте в ~/.claude/CLAUDE.md (или в CLAUDE.md проекта) несколько строк:

## Второе мнение от GPT — команда `ask-gpt`

Из любой сессии можно спросить GPT-5 (подписка ChatGPT, не API, лимит Claude не тратится):

    echo "вопрос или код" | ~/.local/bin/ask-gpt
    ~/.local/bin/ask-gpt "короткий вопрос"

Когда использовать: ревью кода и архитектуры, второе мнение по спорному решению,
генерация длинных текстов. Нельзя: отправлять персональные данные пользователей.

После этого «спроси у GPT, что он думает про эту схему» работает как обычная просьба.

Грабли, на которые я наступил

Длинный вопрос — только через stdin. Аргументом командной строки многострочный текст с кавычками и кодом рано или поздно сломает экранирование, а на паре сотен килобайт вы получите «Argument list too long». Пишите вопрос в файл и передавайте ask-gpt < вопрос.txt.

Не убивайте зависший запрос через pkill -f codex. Шаблон -f ищет по полной командной строке и совпадёт с вашей же командой — убьёте собственную оболочку. Только по точному имени: pkill -x codex, или по конкретному PID.

Ответ идёт одну–три минуты. Codex работает агентно: думает, планирует, потом отвечает. Пустой файл ответа на тридцатой секунде — это не зависание. Ставьте timeout 300 и ждите; в диалоге лучше запускать в фоне.

Лимиты подписки не бесконечны. На потоке из десятков тяжёлых вопросов в час можно упереться в потолок ChatGPT Plus. Для фонового потока запросов дешевле смотреть в сторону OpenRouter — про это будет отдельная заметка.

Зачем это на практике

Три сценария, ради которых всё затевалось.

Ревью чужими глазами. Claude написал модуль — прошу GPT найти в нём дыры. Две модели ошибаются по-разному, и там, где одна уверенно проходит мимо бага, вторая часто спотыкается о него взглядом.

Длинные тексты. Описания, статьи, тексты для сайтов — генерировать их Claude дорого по лимиту. Отдаю в GPT, Claude только правит и вставляет.

Спор двух моделей. Иногда прошу обе оценить одно решение и показать разногласия. Если они спорят — значит, вопрос действительно неоднозначный, и решать его надо мне, а не подбрасыванием монетки.