Files
unlimitedcoding/codex/README.md
delta-cloud-208e 8924b75e91 SECURITY: redact api_key from public repo (Variant B)
CRITICAL: api_key 'ClauderAPI2' was committed to PUBLIC unlimitedcoding
repo (private:False on gitea) in 4 *_config.json + 8 ps1 scripts. Anyone
on the internet could read it via curl with no auth (HTTP 200 raw access).

This commit:
1. Sanitizes 4 *_config.json: api_key → "YOUR_API_KEY" + _note pointing
   users to private config repo for production credentials.
2. Removes 'ClauderAPI2' literal from 8 ps1 installer/updater scripts
   (claude/codex/gemini/qwen × install/update). Each script now has a
   sanitized block at top that fetches api_key from private
   unlimitedcoding-config repo at runtime via Authorization token.
3. Switches 6 sh installer scripts from public REPO_RAW to PRIVATE
   unlimitedcoding-config base URL for *_config.json downloads.
4. Removes stale .patcher.config.cache.json (will regen on next install).

Production configs MOVED to private repo (separate commit e839102 on
unlimitedcoding-config/main).

KNOWN UNCHANGED:
- releases/v2.1.119/sea/cli-wrapper.cjs still has api_key (part of npm
  package distribution; clients need it locally; sensey serves same).
- Read-only gitea token (cadffcb0...) remains in installers — needed
  for token-auth fetch from private repo. Scoped read-only.

RECOMMEND: api_key rotation in proxy auth list because ClauderAPI2 was
publicly exposed for an unknown period. Existing client installs would
need re-install or env override.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-25 16:43:08 +00:00

11 KiB
Executable File
Raw Blame History

Codex CLI — Patched

Patched OpenAI Codex CLI for use with custom API endpoints. Latest: v0.122.0 (6 config patches).

Codex CLI — это compiled Rust binary. В отличие от Claude Code и Gemini CLI (JavaScript), патчинг выполняется через config.toml + переменные окружения.

Установка

Требования

  • Python 3.11+ (для tomllib) — на Windows опционально (есть PowerShell-fallback)
  • curl (Linux/macOS) или PowerShell 5+ (Windows 10+ — встроенный)
  • Поддерживаемые платформы: Linux x86_64/aarch64, macOS x86_64/arm64, Windows x86_64

Установка одной командой

Linux (Debian/Ubuntu/RHEL/Fedora):

curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
  https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_install.sh \
  -o /tmp/ucodex_install.sh && sudo bash /tmp/ucodex_install.sh

macOS (Intel & Apple Silicon):

curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
  https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_install.sh \
  -o /tmp/ucodex_install.sh && sudo bash /tmp/ucodex_install.sh

Бинарь устанавливается в /usr/local/bin/.codex-bin, wrapper — в /usr/local/bin/codex. Env vars (OPENAI_API_KEY, OPENAI_BASE_URL) пробрасываются через launchctl setenv и ~/.zshrc / ~/.bashrc (на Linux — /etc/environment + /etc/profile.d/codex-env.sh).

Windows (PowerShell as Administrator):

$h=@{Authorization="token cadffcb0a6a3be728ac1ff619bb40c86588f6837"}
Set-ExecutionPolicy Bypass -Scope Process -Force
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_install.ps1" -OutFile "$env:TEMP\ucodex_install.ps1" -Headers $h
. "$env:TEMP\ucodex_install.ps1"

Windows (CMD as Administrator):

powershell -NoProfile -ExecutionPolicy Bypass -Command "$h=@{Authorization='token cadffcb0a6a3be728ac1ff619bb40c86588f6837'}; iwr 'https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_install.ps1' -OutFile \"$env:TEMP\ucodex_install.ps1\" -Headers $h; & \"$env:TEMP\ucodex_install.ps1\""

Windows: бинарь ставится в %LOCALAPPDATA%\Programs\codex\codex.exe и автоматически добавляется в PATH пользователя. Env vars (OPENAI_API_KEY, OPENAI_BASE_URL) ставятся через setx + [Environment]::SetEnvironmentVariable("...", "...", "User"). После установки перезапустите CMD/PowerShell для подхвата env vars и PATH.

Установка из репозитория (любая платформа)

git clone https://git.sensey24.ru/aibot777/unlimitedcoding.git
cd unlimitedcoding/codex

# 1) Настроить конфиг
cp codex_config.example.json codex_config.json
# Редактировать base_url и api_key в codex_config.json

# 2a) Linux/macOS:
sudo bash ucodex_install.sh

# 2b) Windows PowerShell (Administrator):
powershell -ExecutionPolicy Bypass -File ucodex_install.ps1

Ручная установка (шаг за шагом, Linux/macOS)

Шаг 1 — Установить бинарник Codex CLI:

# Скачать последнюю версию с GitHub
sudo bash update-codex.sh
codex --version   # Должно показать: codex-cli 0.122.0

Шаг 2 — Настроить конфиг:

cp codex_config.example.json codex_config.json

Отредактировать codex_config.json:

{
  "base_url": "https://your-api-endpoint.example.com",
  "api_key": "YOUR_API_KEY",
  "model": "gpt-5.5"
}

Шаг 3 — Применить патчи:

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.5, effort=high
      [OK]  Target 6:   Set 2 env var(s) in /etc/environment

  All patches applied successfully!

Шаг 4 — Проверить:

# Validate
python3 update_codex_patcher.py --validate

# Test
codex exec "What is 2+2? Reply with just the number"

Обновление

Одной командой

Linux / macOS:

curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
  https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_update.sh \
  -o /tmp/ucodex_update.sh && sudo bash /tmp/ucodex_update.sh

Windows (PowerShell as Administrator):

$h=@{Authorization="token cadffcb0a6a3be728ac1ff619bb40c86588f6837"}
Set-ExecutionPolicy Bypass -Scope Process -Force
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_update.ps1" -OutFile "$env:TEMP\ucodex_update.ps1" -Headers $h
. "$env:TEMP\ucodex_update.ps1"

Windows (CMD as Administrator):

powershell -NoProfile -ExecutionPolicy Bypass -Command "$h=@{Authorization='token cadffcb0a6a3be728ac1ff619bb40c86588f6837'}; iwr 'https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_update.ps1' -OutFile \"$env:TEMP\ucodex_update.ps1\" -Headers $h; & \"$env:TEMP\ucodex_update.ps1\""

Обновить бинарник Codex CLI вручную (Linux/macOS)

cd unlimitedcoding/codex
sudo bash update-codex.sh

Скрипт автоматически:

  • Проверяет последнюю версию на GitHub
  • Скачивает musl-совместимый бинарник
  • Заменяет /usr/local/bin/codex

Обновить конфиг-патчи (после обновления бинарника)

sudo python3 codex_patcher.py --apply

Полный автоматический цикл

sudo python3 update_codex_patcher.py --auto

Выполняет: check → update binary → apply patches → validate → test.

Обновить сам патчер (новая версия скриптов)

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 (генерируется патчером):

model = "gpt-5.5"
model_reasoning_effort = "xhigh"
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"

Удаление (Uninstall)

Linux / macOS:

curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
  https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_uninstall.sh \
  -o /tmp/ucodex_uninstall.sh && sudo bash /tmp/ucodex_uninstall.sh

Windows (PowerShell as Administrator):

$h=@{Authorization="token cadffcb0a6a3be728ac1ff619bb40c86588f6837"}
Set-ExecutionPolicy Bypass -Scope Process -Force
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_uninstall.ps1" -OutFile "$env:TEMP\ucodex_uninstall.ps1" -Headers $h
. "$env:TEMP\ucodex_uninstall.ps1"

Удаляются: бинарь, ~/.codex/, env vars, wrapper, PATH-запись.

Rollback

Восстановить оригинальный конфиг:

python3 codex_patcher.py --rollback

Troubleshooting

"Error loading configuration: missing field name"

Обновите патчер (git pull) и перезапустите: python3 codex_patcher.py --apply

codex не запускается (segfault / GLIBC) — Linux

Скрипт update-codex.sh скачивает musl-версию для совместимости. Если проблема остаётся:

file /usr/local/bin/.codex-bin
ldd /usr/local/bin/.codex-bin   # Должно быть "not a dynamic executable" (static)

macOS: "codex" cannot be opened because the developer cannot be verified

xattr -d com.apple.quarantine /usr/local/bin/.codex-bin

Windows: "codex is not recognized"

Перезапустите CMD/PowerShell. Либо вручную обновите PATH в текущей сессии:

$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")

"OPENAI_API_KEY not set"

Linux:

source /etc/environment
# или
export OPENAI_BASE_URL="https://your-endpoint/v1"
export OPENAI_API_KEY="your-key"

macOS:

source /etc/codex-env.sh
# или перезайти в shell (zsh подхватит из ~/.zshrc)

Windows (PowerShell):

[System.Environment]::SetEnvironmentVariable("OPENAI_API_KEY", "your-key", "User")
[System.Environment]::SetEnvironmentVariable("OPENAI_BASE_URL", "https://your-endpoint/v1", "User")
# Перезапустите PowerShell

Windows (CMD):

setx OPENAI_API_KEY "your-key"
setx OPENAI_BASE_URL "https://your-endpoint/v1"

Permissions промпты всё ещё появляются

Убедитесь что config.toml содержит approval_policy = "never":

Linux/macOS: cat ~/.codex/config.toml | grep approval Windows: type %USERPROFILE%\.codex\config.toml | findstr 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 (Linux/macOS)
├── ucodex_install.ps1         # One-liner installer (Windows)
├── ucodex_update.sh           # Update script (Linux/macOS)
├── ucodex_update.ps1          # Update script (Windows)
├── ucodex_uninstall.sh        # Uninstaller (Linux/macOS)
├── ucodex_uninstall.ps1       # Uninstaller (Windows)
└── updater/
    ├── __init__.py
    └── config_validator.py    # Валидация 6 targets