Recovery Z.AI
SOS-документ · Mac + Windows

Recovery Z.AI
восстановление авторизации

401 token expired  /  Settings Error  /  rm -rf  /  claude-code-router

Только для Z.AI (api.z.ai)
macOS + Windows
Чат курса поддержка курса
Причина: memory-плагин затёр Z.AI ключ
Прокрути вниз
Раздел 1
01

Быстрая диагностика — какая именно ошибка

Перед сбросом убедись что это действительно поломка авторизации, а не VPN или истёкший токен Z.AI.

Симптом Документ Действие
401 token expired or invalid
IP error 401
Authentication failed: invalid token
Claude запускается, но любой запрос → красная ошибка
Этот документ Разделы 2 (Mac) или 3 (Win)
ECONNREFUSED / network error Не этот VPN отвалился — проверь страну (США/Канада/EU)
command not found: claude Не этот Нода / npm сломаны — смотри troubleshooting.md
403 Forbidden Не этот IP заблокирован у Z.AI — переключи страну в VPN
Settings Error / Invalid or malformed JSON при старте Claude Раздел 6 Прокрути до слайда «Settings Error»
Уже снёс через rm -rf / Remove-Item Раздел 7 Прокрути до слайда «Полный сброс с нуля»
Видел упоминания claude-code-router (musistudio) Раздел 8 Прокрути до слайда «Что НЕ ставить»

Документ применяется только к установкам через Z.AI (api.z.ai/api/anthropic). Для оригинального Anthropic API — claude /login.

macOS 2.1–2.2
02

Закрыть Claude — сделать бэкап

Все команды копируй в Терминал (Applications → Utilities → Terminal или Cmd+Space → «Терминал»). Если терминал спросит пароль — это пароль от Mac, набирай не глядя (точки не отображаются), Enter.

2.1 — Закрыть Claude если открыт
$
pkill -f claude 2>/dev/null; sleep 1
Что произойдёт
Тихо закрывает все процессы claude. Если процесса нет — никакого вывода, это норма.
2.2 — Сделать бэкап текущих настроек
$
mkdir -p ~/.claude-backup && \
  cp ~/.claude/settings.json ~/.claude-backup/settings.json.$(date +%Y%m%d-%H%M%S) 2>/dev/null; \
  cp ~/.claude.json ~/.claude-backup/.claude.json.$(date +%Y%m%d-%H%M%S) 2>/dev/null; \
  echo "Бэкап сделан в ~/.claude-backup/"
Ожидаемый результат
Бэкап сделан в ~/.claude-backup/

Бэкап создаёт копию с датой/временем — если что-то пойдёт не так, можно откатить. Смотри шаг ~/.claude-backup/.

macOS 2.3–2.4
03

Удалить OAuth-кэш — восстановить settings.json

Деструктивная команда. rm -f удаляет файл без корзины. Убедись что шаг 2.2 (бэкап) выполнен.

2.3 — Удалить OAuth-кэш Claude
$
rm -f ~/.claude.json
2.4 — Открыть settings.json для правки
$
mkdir -p ~/.claude && open -t ~/.claude/settings.json

~/.claude.json хранит OAuth-сессию. Memory-плагин мог его создать или модифицировать — Claude думает что есть валидная OAuth-сессия и игнорирует Z.AI ключ. Не путать с ~/.claude/settings.json (конфиг) и ~/.claude/ (папка со скиллами).

В TextEdit замени содержимое файла на:

~/.claude/settings.json — содержимое
{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "ТВОЙ_КЛЮЧ_Z.AI",
    "ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic",
    "API_TIMEOUT_MS": "3000000"
  }
}

ТВОЙ_КЛЮЧ_Z.AI — Z.AI ключ из чата курса. Если добавлял другие поля (model, permissions...) — сохрани их, дописав через запятую. Сохрани файл Cmd+S и закрой TextEdit.

macOS 2.5–2.6
04

Проверить JSON — запустить Claude

2.5 — Проверить что settings.json валиден
$
python3 -c "import json; json.load(open('$HOME/.claude/settings.json')); print('OK — JSON валиден')"
Ожидаемый результат
OK — JSON валиден
2.6 — Запустить Claude
$
cd ~ && claude

Должен запуститься без 401. Напиши: Привет — если в ответ пришёл нормальный текст, значит починилось.

Если проверка выдала ошибку (SyntaxError, Expecting) — в файле где-то лишняя запятая или кавычка. Открой ещё раз open -t ~/.claude/settings.json и проверь визуально.

Windows 3.1–3.3
05

Закрыть Claude — бэкап — удалить OAuth

Все команды копируй в PowerShell от администратора (правой кнопкой по иконке PowerShell → «Запуск от имени администратора»). Это важно: обычный PowerShell не сможет переписать переменные среды.

3.1 — Закрыть Claude
PS>
Get-Process | Where-Object { $_.ProcessName -like "*claude*" } | Stop-Process -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 1
Что произойдёт
Если процесса нет — никакой ошибки, это норма.
3.2 — Сделать бэкап
PS>
$backupDir = "$env:USERPROFILE\.claude-backup"
New-Item -ItemType Directory -Force -Path $backupDir | Out-Null
$ts = Get-Date -Format "yyyyMMdd-HHmmss"
if (Test-Path "$env:USERPROFILE\.claude\settings.json") {
  Copy-Item "$env:USERPROFILE\.claude\settings.json" "$backupDir\settings.json.$ts"
}
if (Test-Path "$env:USERPROFILE\.claude.json") {
  Copy-Item "$env:USERPROFILE\.claude.json" "$backupDir\.claude.json.$ts"
}
Write-Host "Бэкап в $backupDir"

Деструктивная команда. Remove-Item удаляет файл без корзины. Убедись что шаг 3.2 (бэкап) выполнен.

3.3 — Удалить OAuth-кэш Claude
PS>
Remove-Item "$env:USERPROFILE\.claude.json" -ErrorAction SilentlyContinue
Windows 3.4–3.7
06

Переменные среды Z.AI — запустить Claude

3.4 — Проверить переменные среды Z.AI
PS>
Write-Host "AUTH_TOKEN: $([System.Environment]::GetEnvironmentVariable('ANTHROPIC_AUTH_TOKEN','User'))"
Write-Host "BASE_URL:   $([System.Environment]::GetEnvironmentVariable('ANTHROPIC_BASE_URL','User'))"

Если обе строки пустые после AUTH_TOKEN: / BASE_URL: — переменные слетели. Поставь заново командой ниже.

Восстановить переменные если слетели
PS>
[System.Environment]::SetEnvironmentVariable('ANTHROPIC_AUTH_TOKEN', 'ТВОЙ_КЛЮЧ_Z.AI', 'User')
[System.Environment]::SetEnvironmentVariable('ANTHROPIC_BASE_URL', 'https://api.z.ai/api/anthropic', 'User')
[System.Environment]::SetEnvironmentVariable('API_TIMEOUT_MS', '3000000', 'User')
Write-Host "Готово. Перезапусти PowerShell."
3.5 — ОБЯЗАТЕЛЬНО: открыть новое окно PowerShell (от админа)
Переменные среды подхватываются только новыми процессами.
Закрой текущий PowerShell и открой свежий (тоже от администратора).
3.6 — Проверить что подхватились
PS>
echo $env:ANTHROPIC_AUTH_TOKEN
echo $env:ANTHROPIC_BASE_URL
Ожидаемый результат
Твой ключ и https://api.z.ai/api/anthropic
3.7 — Запустить Claude
PS>
cd $env:USERPROFILE
claude
Проверка
Напиши «Привет» — если ответ нормальный, починилось.
Раздел 4
07

Если ничего не помогло

А

После всех шагов всё равно 401

Возможно, memory-плагин остался активным и переписывает settings.json при каждом запуске Claude. Проверь список плагинов:

macOS

$
ls ~/.claude/plugins/ 2>/dev/null
$
mkdir -p ~/.claude-disabled-plugins
mv ~/.claude/plugins/memory-architect ~/.claude-disabled-plugins/ 2>/dev/null
mv ~/.claude/plugins/memory-systems ~/.claude-disabled-plugins/ 2>/dev/null

Windows

PS>
Get-ChildItem "$env:USERPROFILE\.claude\plugins\" -ErrorAction SilentlyContinue
PS>
$d = "$env:USERPROFILE\.claude-disabled-plugins"
New-Item -ItemType Directory -Force -Path $d | Out-Null
Move-Item "$env:USERPROFILE\.claude\plugins\memory-architect" $d -ErrorAction SilentlyContinue
Move-Item "$env:USERPROFILE\.claude\plugins\memory-systems" $d -ErrorAction SilentlyContinue

Повтори с шага 2.3 (Mac) или 3.3 (Win). Memory-плагины поставим обратно позже — когда добавим в курс инструкцию «сначала Z.AI, потом memory».

Б

Ключ Z.AI больше не действителен

Если после восстановления Claude всё равно ругается — возможно, твой ключ Z.AI был временным и истёк. Напиши в Telegram-чат курса, организатор пришлёт новый.

В

Какие-то скиллы / плагины пропали

Бэкап в ~/.claude-backup/ (Mac) или %USERPROFILE%\.claude-backup\ (Win). Если из старого settings.json нужно что-то выдернуть — открой бэкап-файл и скопируй нужное поле.

Раздел 6
08

settings.local.json — Settings Error

Применять когда при запуске claude ты видишь диалог: Settings Error / Invalid or malformed JSON с пунктами «Fix with Claude / Exit and fix manually / Continue without these settings».

Claude Code читает три файла настроек: ~/.claude/settings.json~/.claude/settings.local.json~/.claude.json. Если любой из них содержит битый JSON (лишняя запятая, незакрытая скобка) — Claude пропускает весь файл. Z.AI-блок не подгружается.

Деструктивные команды. Решения ниже содержат rm -f и Remove-Item — они удаляют settings.local.json без корзины. Шаг «Бэкап» внутри скриптов делает копию перед удалением — не пропускай его.

Решение — Mac

Вариант А: выбрать «Fix with Claude» — обычно срабатывает.
Вариант Б (надёжнее):

$
# 1. Exit and fix manually в диалоге

# 2. Бэкап
mkdir -p ~/.claude-backup
cp ~/.claude/settings.local.json \
  ~/.claude-backup/settings.local.json.$(date +%Y%m%d-%H%M%S) 2>/dev/null

# 3. Удалить сломанный
rm -f ~/.claude/settings.local.json

# 4. Запустить
claude
Проверка JSON — Mac
$
python3 -c "import json; json.load(open('$HOME/.claude/settings.json')); print('settings.json: OK')"
python3 -c "import json; json.load(open('$HOME/.claude/settings.local.json')); print('settings.local.json: OK')" 2>/dev/null || echo "settings.local.json: не существует или сломан"

Решение — Windows

PS>
# 1. Exit and fix manually в диалоге

# 2. Бэкап
$backupDir = "$env:USERPROFILE\.claude-backup"
New-Item -ItemType Directory -Force -Path $backupDir | Out-Null
$ts = Get-Date -Format "yyyyMMdd-HHmmss"
if (Test-Path "$env:USERPROFILE\.claude\settings.local.json") {
  Copy-Item "$env:USERPROFILE\.claude\settings.local.json" "$backupDir\settings.local.json.$ts"
}

# 3. Удалить сломанный
Remove-Item "$env:USERPROFILE\.claude\settings.local.json" -ErrorAction SilentlyContinue

# 4. Запустить
claude
Проверка JSON — Windows
PS>
try { Get-Content "$env:USERPROFILE\.claude\settings.json" | ConvertFrom-Json | Out-Null; "settings.json: OK" } catch { "settings.json: СЛОМАН" }
try { Get-Content "$env:USERPROFILE\.claude\settings.local.json" | ConvertFrom-Json | Out-Null; "settings.local.json: OK" } catch { "settings.local.json: не существует или сломан" }
Раздел 7
09

Сброс с нуля — для случая rm -rf

Применять когда уже снёс ~/.claude/settings.json + ~/.claude.json командой rm -rf (или похожей) и не помнишь что было — нужно собрать заново.

Деструктивные команды. Разделы ниже содержат rm -f и Remove-Item — они удаляют файлы без корзины. Убедись что на предыдущих слайдах бэкап был сделан, прежде чем идти дальше.

Mac — полный сброс

$
# 1. Закрыть claude
pkill -f claude 2>/dev/null; sleep 1

# 2. Удалить всё что осталось
rm -f ~/.claude/settings.json
rm -f ~/.claude/settings.local.json
rm -f ~/.claude.json

# 3. Создать минимальный settings.json
mkdir -p ~/.claude
cat > ~/.claude/settings.json <<'EOF'
{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "СЮДА_КЛЮЧ_Z_AI",
    "ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic",
    "API_TIMEOUT_MS": "3000000"
  }
}
EOF

# 4. Открыть файл — заменить СЮДА_КЛЮЧ_Z_AI
open -t ~/.claude/settings.json
# Сохрани Cmd+S, закрой TextEdit

# 5. Проверить JSON
python3 -c "import json; json.load(open('$HOME/.claude/settings.json')); print('OK')"

# 6. Запустить
cd ~ && claude

Windows — полный сброс

PS>
# 1. Закрыть claude
Get-Process | Where-Object { $_.ProcessName -like "*claude*" } | Stop-Process -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 1

# 2. Удалить всё что осталось
Remove-Item "$env:USERPROFILE\.claude\settings.json" -ErrorAction SilentlyContinue
Remove-Item "$env:USERPROFILE\.claude\settings.local.json" -ErrorAction SilentlyContinue
Remove-Item "$env:USERPROFILE\.claude.json" -ErrorAction SilentlyContinue

# 3. Создать папку .claude если нет
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.claude" | Out-Null

# 4. Установить переменные среды Z.AI
[System.Environment]::SetEnvironmentVariable('ANTHROPIC_AUTH_TOKEN', 'СЮДА_КЛЮЧ_Z_AI', 'User')
[System.Environment]::SetEnvironmentVariable('ANTHROPIC_BASE_URL', 'https://api.z.ai/api/anthropic', 'User')
[System.Environment]::SetEnvironmentVariable('API_TIMEOUT_MS', '3000000', 'User')

# 5. ЗАКРЫТЬ текущий PowerShell, открыть НОВЫЙ (от админа)
# 6. В новом: echo $env:ANTHROPIC_AUTH_TOKEN
# 7. Запустить: cd $env:USERPROFILE && claude

После полного сброса — не ставь сразу memory-плагины. Сначала прогони хотя бы одну задачу, убедись что всё ок. Только потом — по одному плагину, проверяя после каждого что 401 не появилось.

Раздел 8
10

Что НЕ ставить

claude-code-router (musistudio) — не ставь, даже если в чате кто-то советует.
Установочный URL уже 404 на 2026-05-15 (raw.githubusercontent.com/musistudio/claude-code-router/main/scripts/install.sh не существует).
Делает то же что наш settings.json с блоком env, только сложнее — и конфликтует с уже сделанными настройками.

Наш путь: Z.AI настраивается только через ~/.claude/settings.json (Mac) или User Environment Variables (Win) — так как в macos-install.html / windows-install.html. Это поддерживаемый, проверенный путь.

Любые сторонние «улучшители» Claude Code. Если в каком-то чате/блоге говорят «поставь X чтобы было лучше» — сначала спроси у организатора в чате курса. Курс работает по одному поддерживаемому стеку — отклонения ломают совместимость пакетов и инструкций.

Если уже пытался поставить claude-code-router и теперь странности — пройди раздел 7. Полный сброс с нуля (предыдущий слайд).

Раздел 9
11

Как не сломать снова

3 правила, которые предотвращают 95% инцидентов с авторизацией Z.AI.

  • При установке любого нового плагина через Claude Code (/plugin install ...) — после установки сразу проверь claude --version и попробуй любой запрос. Если упало — этот документ.
  • Не запускай claude /login — это OAuth-логин в оригинальный Anthropic, который конфликтует с Z.AI. У нас всегда Z.AI, всегда через переменные среды / settings.json.
  • При апдейтах Claude Code (npm install -g @anthropic-ai/claude-code) — settings.json не трогается, но кэш OAuth (~/.claude.json) может перезаписаться. Если после апдейта 401 — этот документ.

Всё готово. Если этот документ не помог — напиши в Telegram-чат курса с описанием: что видишь на экране + скриншот ошибки.