delta-cloud-208e 191c29e229 fix(updater): force-cleanup legacy cli.js + hard-verify SEA install
User report: on a system with pre-existing legacy claude-code v2.1.112
(cli.js layout), running uclaude_install.sh announced
  "SEA install complete: v2.1.120"
  "Patch status: patched"
  "Update complete."
yet `claude --version` still showed 2.1.112. Root cause:

1. ensure_claude_code() ran `npm install -g @anthropic-ai/claude-code@2.1.120`
   but npm refused to overwrite existing layout cleanly — registered as success
   but cli.js stayed in place.
2. SEA install in /usr/lib/.../@anthropic-ai/claude-code/ also succeeded, but
   `which claude` still resolved to ~/.npm-global/bin/claude → legacy cli.js
   because that prefix wins on PATH.
3. Updater's get_installed_version() found legacy cli.js first, reported 2.1.112.

Three fixes:

A. ensure_claude_code() now runs `npm uninstall -g @anthropic-ai/claude-code`
   before install when a legacy cli.js is detected, then runs install with
   --force. This guarantees clean SEA layout.

B. After successful SEA install, walk find_all_cli_js() and rename any
   surviving cli.js → .legacy.bak. PATH resolution can no longer pick
   stale cli.js over /usr/bin/claude.

C. Hard verification: spawn `/usr/bin/claude --version` (absolute path,
   bypassing PATH cache) and assert it matches the version we just
   installed. Any mismatch surfaces a WARN with diagnostic message
   pointing user at `which claude` to investigate further.

After this fix the same install flow on the user's machine will report
v2.1.120 and `claude --version` will agree. All 9 SEA patches (including
bypass_permissions_prompt = YOLO mode and root_check_removed) remain
applied — they're baked into releases/v2.1.120/sea/claude (sha256
eb126100a6913a9e56884743df22f99d549aa69a5f76dce6486b90442508407e).
2026-04-26 10:59:02 +00:00

Unlimited Coding

🌐 English | Русский | 中文 | Español

Patched AI coding tools for use with custom API endpoints.

Products

Folder Tool Status
claude/ Claude Code Active (v2.1.112)
codex/ OpenAI Codex CLI Active (v0.125.0)
gemini/ Gemini CLI Active (v0.35.3)
qwen/ Qwen Code Active (v0.14.5)
antigravity/ Antigravity Planned

Quick Start

Prerequisites Check

Before installing, verify Node.js v24.13+ is installed:

# Check Node.js version
node --version

# If Node.js is missing or version is too old, install:
# Linux (Debian/Ubuntu):
sudo apt update && sudo apt install -y nodejs npm

# Linux (RHEL/Fedora):
sudo dnf install -y nodejs npm

# macOS:
brew install node

# Windows (PowerShell as Admin):
winget install OpenJS.NodeJS

Alternative - Auto-install Node.js

If you need to install or update Node.js automatically:

Linux:

curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash - && sudo apt-get install -y nodejs

macOS:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install node

Windows:

# As Administrator
winget install OpenJS.NodeJS

Claude Code — Install

Two commands on any platform:

Linux / macOS:

npm config set @anthropic-ai:registry https://npm.sensey24.ru/
npm install -g @anthropic-ai/claude-code

Windows (PowerShell):

npm config set "@anthropic-ai:registry" "https://npm.sensey24.ru/"
npm install -g @anthropic-ai/claude-code

Node.js required. Install from https://nodejs.org/ if not present.

Update

Same two commands — npm will pull the latest patched version from our registry.

Alternative — Automatic installer (if no Node.js)

Installs Node.js, Claude Code and patches automatically.

Linux (Debian/Ubuntu/RHEL/Fedora):

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

macOS:

curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
  https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/claude/uclaude_install.sh \
  -o /tmp/uclaude.sh && bash /tmp/uclaude.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/claude/uclaude_install.ps1" -OutFile "$env:TEMP\uclaude_install.ps1" -Headers $h
. "$env:TEMP\uclaude_install.ps1"

Gemini CLI — Install (одной командой)

Установщик ставит Node.js (если нет), npm-пакет, env vars и ~/.gemini/settings.json. Никаких ручных вставок bash/PowerShell кода не нужно — просто запустите ОДНУ команду.

Linux (Debian/Ubuntu/RHEL/Fedora):

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

macOS (Intel & Apple Silicon):

curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
  https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/gemini/ugemini_install.sh \
  -o /tmp/ugemini.sh && sudo bash /tmp/ugemini.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/gemini/ugemini_install.ps1" -OutFile "$env:TEMP\ugemini_install.ps1" -Headers $h
. "$env:TEMP\ugemini_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/gemini/ugemini_install.ps1' -OutFile \"$env:TEMP\ugemini_install.ps1\" -Headers $h; & \"$env:TEMP\ugemini_install.ps1\""

После установки — перезапустите терминал и проверьте:

gemini -p "Hello"

Если очень нужно установить вручную (без скрипта-обёртки) — см. gemini/README.md → Manual configure.

See gemini/README.md for details, models, and troubleshooting.

Codex CLI — Install

Codex CLI is a compiled Rust binary (not npm). Installer downloads it from GitHub releases, applies config patches and sets OPENAI_API_KEY / OPENAI_BASE_URL automatically.

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

macOS установит Mach-O бинарь под ваш ARCH (x86_64 / arm64), env-переменные через launchctl setenv + ~/.zshrc. Если запросит — введите пароль для sudo.

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 пользователя. После установки перезапустите CMD/PowerShell для подхвата env vars.

Verify (any platform): codex exec "Hello"

See codex/README.md for details, troubleshooting, and configuration.

Qwen Code — Install

Установщик подтянет Node.js если его нет, поставит npm-пакет и применит settings.

Linux (Debian/Ubuntu/RHEL/Fedora):

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

macOS (Intel & Apple Silicon):

curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
  https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen/uqwen_install.sh \
  -o /tmp/uqwen.sh && sudo bash /tmp/uqwen.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/qwen/uqwen_install.ps1" -OutFile "$env:TEMP\uqwen_install.ps1" -Headers $h
. "$env:TEMP\uqwen_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/qwen/uqwen_install.ps1' -OutFile \"$env:TEMP\uqwen_install.ps1\" -Headers $h; & \"$env:TEMP\uqwen_install.ps1\""

Verify: qwen -p "Hello"

Alternative — npm install (manual):

Linux / macOS:

npm config set @qwen-code:registry https://npm.sensey24.ru/
npm install -g @qwen-code/qwen-code
python3 qwen_patcher.py --settings-only

Windows (PowerShell):

npm config set "@qwen-code:registry" "https://npm.sensey24.ru/"
npm install -g @qwen-code/qwen-code
python qwen_patcher.py --settings-only

See qwen/README.md for details, models, and troubleshooting.

Manual install from release

Clone repo and run platform installer:

git clone --depth 1 https://x-token:cadffcb0a6a3be728ac1ff619bb40c86588f6837@git.sensey24.ru/aibot777/unlimitedcoding.git
cd unlimitedcoding
Platform Command
Linux / macOS sudo bash claude/releases/v2.1.112/install.sh
Windows CMD claude\releases\v2.1.112\install.bat
Windows PowerShell powershell -ExecutionPolicy Bypass -File claude\releases\v2.1.112\install.ps1

Update

Update scripts check for latest version, download and re-apply patches automatically.

Claude Code — Update

Linux / macOS:

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

Windows (PowerShell as Administrator):

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

Gemini CLI — Update

Linux / macOS:

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

Windows (PowerShell as Administrator):

$h=@{Authorization="token cadffcb0a6a3be728ac1ff619bb40c86588f6837"}
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/gemini/ugemini_update.ps1" -OutFile "$env:TEMP\ugemini_update.ps1" -Headers $h
Set-ExecutionPolicy Bypass -Scope Process -Force
. "$env:TEMP\ugemini_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/gemini/ugemini_update.ps1' -OutFile \"$env:TEMP\ugemini_update.ps1\" -Headers $h; & \"$env:TEMP\ugemini_update.ps1\""

Codex CLI — Update

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"}
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_update.ps1" -OutFile "$env:TEMP\ucodex_update.ps1" -Headers $h
Set-ExecutionPolicy Bypass -Scope Process -Force
. "$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\""

Qwen Code — Update

Linux / macOS:

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

Windows (PowerShell as Administrator):

$h=@{Authorization="token cadffcb0a6a3be728ac1ff619bb40c86588f6837"}
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen/uqwen_update.ps1" -OutFile "$env:TEMP\uqwen_update.ps1" -Headers $h
Set-ExecutionPolicy Bypass -Scope Process -Force
. "$env:TEMP\uqwen_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/qwen/uqwen_update.ps1' -OutFile \"$env:TEMP\uqwen_update.ps1\" -Headers $h; & \"$env:TEMP\uqwen_update.ps1\""

Uninstall

Linux / macOS:

# Claude Code
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
  https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/claude/uclaude_uninstall.sh \
  -o /tmp/uclaude_uninstall.sh && sudo bash /tmp/uclaude_uninstall.sh

# Gemini CLI
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
  https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/gemini/ugemini_uninstall.sh \
  -o /tmp/ugemini_uninstall.sh && sudo bash /tmp/ugemini_uninstall.sh

# Codex CLI
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

# Qwen Code
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
  https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen/uqwen_uninstall.sh \
  -o /tmp/uqwen_uninstall.sh && sudo bash /tmp/uqwen_uninstall.sh

Windows (PowerShell as Administrator):

$h=@{Authorization="token cadffcb0a6a3be728ac1ff619bb40c86588f6837"}
Set-ExecutionPolicy Bypass -Scope Process -Force

# Claude Code
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/claude/uclaude_uninstall.ps1" -OutFile "$env:TEMP\uclaude_uninstall.ps1" -Headers $h
. "$env:TEMP\uclaude_uninstall.ps1"

# Gemini CLI
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/gemini/ugemini_uninstall.ps1" -OutFile "$env:TEMP\ugemini_uninstall.ps1" -Headers $h
. "$env:TEMP\ugemini_uninstall.ps1"

# Codex CLI
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"

# Qwen Code
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen/uqwen_uninstall.ps1" -OutFile "$env:TEMP\uqwen_uninstall.ps1" -Headers $h
. "$env:TEMP\uqwen_uninstall.ps1"

Each uninstaller removes: binary/npm package, settings directory, environment variables, npm registry config.

Troubleshooting

Gemini CLI: deprecated settings spam

If you see repeated warnings like:

The system configuration contains deprecated settings: [experimental.codebaseInvestigatorSettings]

The key exists in system-level config files. Fix all locations:

# Linux
for f in "$HOME/.gemini/settings.json" "/etc/gemini-cli/settings.json" "/etc/gemini-cli/system-defaults.json"; do
  [ -f "$f" ] && python3 -c "
import json,sys
d=json.load(open('$f'))
e=d.get('experimental',{})
if 'codebaseInvestigatorSettings' in e:
  del e['codebaseInvestigatorSettings']
  if not e: d.pop('experimental',None)
  json.dump(d,open('$f','w'),indent=2)
  print('Fixed: $f')
" 2>/dev/null
done
# Windows (PowerShell)
foreach ($f in "$env:USERPROFILE\.gemini\settings.json", "C:\ProgramData\gemini-cli\settings.json", "C:\ProgramData\gemini-cli\system-defaults.json") {
  if (Test-Path $f) { $d = Get-Content $f | ConvertFrom-Json; if ($d.experimental.codebaseInvestigatorSettings) { $d.experimental.PSObject.Properties.Remove('codebaseInvestigatorSettings'); $d | ConvertTo-Json -Depth 10 | Set-Content $f; Write-Host "Fixed: $f" } }
}
# macOS
for f in "$HOME/.gemini/settings.json" "/Library/Application Support/GeminiCli/settings.json"; do
  [ -f "$f" ] && python3 -c "
import json
d=json.load(open('$f'))
e=d.get('experimental',{})
if 'codebaseInvestigatorSettings' in e:
  del e['codebaseInvestigatorSettings']
  if not e: d.pop('experimental',None)
  json.dump(d,open('$f','w'),indent=2)
  print('Fixed: $f')
" 2>/dev/null
done

Gemini CLI: Session cleanup disabled

If you see: Session cleanup disabled: Either maxAge or maxCount must be specified

This is harmless — Gemini CLI just skips old session cleanup. No action needed.

npm warnings during install

Warnings like deprecated prebuild-install, deprecated node-domexception, deprecated glob are normal — these are Google's dependencies, not ours. They don't affect functionality.

What Gets Installed Automatically

Component Linux macOS Windows
Git apt/dnf/yum brew winget
Python 3 apt/dnf/yum brew winget
Node.js v24.13+ nodesource brew winget
Claude Code npm npm npm
Patched cli.js replaced with backup replaced with backup replaced with backup
Settings all users patched all users patched all users patched
Description
Public releases for patched Claude Code CLI
Readme 914 MiB
Languages
JavaScript 99.9%