# Codex CLI — Patched Patched OpenAI Codex CLI for use with custom API endpoints. Latest: **v0.111.0** (6 config patches). > Codex CLI — это compiled Rust binary. В отличие от Claude Code и Gemini CLI (JavaScript), > патчинг выполняется через `config.toml` + переменные окружения. ## Установка ### Требования - **Python 3.11+** (для `tomllib`) - **curl** (для скачивания бинарника) - **Linux x86_64 или aarch64** (macOS/Windows — вручную) ### Быстрая установка (Linux) ```bash # 1. Клонировать репо (или скачать файлы) git clone https://git.sensey24.ru/aibot777/unlimitedcoding.git cd unlimitedcoding/codex # 2. Настроить конфиг — указать свой API endpoint и ключ cp codex_config.example.json codex_config.json nano codex_config.json # Изменить base_url и api_key # 3. Установить бинарник + применить патчи sudo bash ucodex_install.sh ``` ### Ручная установка (шаг за шагом) **Шаг 1 — Установить бинарник Codex CLI:** ```bash # Скачать последнюю версию с GitHub sudo bash update-codex.sh codex --version # Должно показать: codex-cli 0.111.0 ``` **Шаг 2 — Настроить конфиг:** ```bash cp codex_config.example.json codex_config.json ``` Отредактировать `codex_config.json`: ```json { "base_url": "https://your-api-endpoint.example.com", "api_key": "YOUR_API_KEY", "model": "gpt-5.2-codex" } ``` **Шаг 3 — Применить патчи:** ```bash sudo python3 codex_patcher.py --apply --config codex_config.json ``` Вывод: ``` Codex CLI Patcher Version: 0.111.0 Binary: /usr/local/bin/codex Proxy: https://your-api-endpoint.example.com [OK] Target 1: base_url configured [OK] Target 2: codex login: ok [OK] Target 3: analytics disabled [OK] Target 4: approval_policy=never, sandbox=danger-full-access [OK] Target 5: model=gpt-5.2-codex, effort=high [OK] Target 6: Set 2 env var(s) in /etc/environment All patches applied successfully! ``` **Шаг 4 — Проверить:** ```bash # Validate python3 update_codex_patcher.py --validate # Test codex exec "What is 2+2? Reply with just the number" ``` ## Обновление ### Обновить бинарник Codex CLI ```bash cd unlimitedcoding/codex sudo bash update-codex.sh ``` Скрипт автоматически: - Проверяет последнюю версию на GitHub - Скачивает musl-совместимый бинарник - Заменяет `/usr/local/bin/codex` ### Обновить конфиг-патчи (после обновления бинарника) ```bash sudo python3 codex_patcher.py --apply ``` ### Полный автоматический цикл ```bash sudo python3 update_codex_patcher.py --auto ``` Выполняет: check → update binary → apply patches → validate → test. ### Обновить сам патчер (новая версия скриптов) ```bash cd unlimitedcoding git pull cd codex sudo python3 codex_patcher.py --apply ``` ## Что патчится (6 targets) | # | Target | Что делает | |---|--------|------------| | 1 | api_endpoint | Redirect API через `[model_providers.custom]` в config.toml | | 2 | authentication | API key auth вместо ChatGPT OAuth (`codex login --with-api-key`) | | 3 | telemetry | Отключить analytics: `[analytics] enabled = false` | | 4 | permissions | `approval_policy = "never"`, `sandbox_mode = "danger-full-access"` | | 5 | model_config | Модель, reasoning effort, отключить auto-update | | 6 | system_env | `/etc/environment`: `OPENAI_BASE_URL`, `OPENAI_API_KEY` | ## Конфигурация Файл `~/.codex/config.toml` (генерируется патчером): ```toml model = "gpt-5.2-codex" model_reasoning_effort = "high" model_provider = "custom" approval_policy = "never" sandbox_mode = "danger-full-access" check_for_update_on_startup = false forced_login_method = "api" [analytics] enabled = false [model_providers.custom] name = "custom" base_url = "https://your-api-endpoint.example.com/v1" env_key = "OPENAI_API_KEY" wire_api = "responses" ``` ## Rollback Восстановить оригинальный конфиг: ```bash python3 codex_patcher.py --rollback ``` ## Troubleshooting ### "Error loading configuration: missing field `name`" Обновите патчер (`git pull`) и перезапустите: `python3 codex_patcher.py --apply` ### codex не запускается (segfault / GLIBC) Скрипт `update-codex.sh` скачивает musl-версию для совместимости. Если проблема остаётся: ```bash # Проверить бинарник file /usr/local/bin/codex ldd /usr/local/bin/codex # Должно быть "not a dynamic executable" (static) ``` ### "OPENAI_API_KEY not set" ```bash # Вариант 1: Перезайти в shell (env vars из /etc/environment) source /etc/environment # Вариант 2: Установить вручную export OPENAI_BASE_URL="https://your-endpoint/v1" export OPENAI_API_KEY="your-key" ``` ### Permissions промпты всё ещё появляются Убедитесь что config.toml содержит `approval_policy = "never"`: ```bash cat ~/.codex/config.toml | grep approval ``` ## Структура файлов ``` codex/ ├── codex_patcher.py # Главный патчер (6 targets) ├── codex_config.json # Ваш конфиг (не коммитить!) ├── codex_config.example.json # Пример конфига ├── update_codex_patcher.py # Pipeline CLI ├── update-codex.sh # Бинарный updater с GitHub ├── ucodex_install.sh # One-liner installer └── updater/ ├── __init__.py └── config_validator.py # Валидация 6 targets ```