Исправить двойной логин Anthropic: убрать claude auth login, запускать claude напрямую
В Claude Code v2.x команда "claude auth login" запускает полный интерактивный TUI (включая "Welcome to Claude Code" и "Select login method"), а затем функция дополнительно вызывала claude "$@" — вторая сессия. Пользователь проходил выбор типа аккаунта дважды. Исправление: ветка [L] теперь запускает claude "$@" напрямую с нужными моделями и сразу делает return "$?", не допуская повторного вызова claude снизу функции. Claude сам обрабатывает весь auth flow (браузер → OAuth → выбор аккаунта) за одно взаимодействие. Добавлен тест test_fix8_no_double_login (3 проверки), итого 24/24. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -314,13 +314,17 @@ except: pass
|
|||||||
case "${_ans:-L}" in
|
case "${_ans:-L}" in
|
||||||
[Ll])
|
[Ll])
|
||||||
echo ""
|
echo ""
|
||||||
echo "Открываю браузер для входа в Anthropic аккаунт..."
|
echo "Запускаю Claude Code — войдите в аккаунт Anthropic в интерфейсе..."
|
||||||
claude auth login || {
|
# claude auth login + claude "$@" вызывали двойной auth flow (v2.x запускает
|
||||||
echo ""
|
# полный TUI внутри auth login). Запускаем claude напрямую: он сам откроет
|
||||||
echo -e "\033[0;31mНе удалось выполнить вход.\033[0m"
|
# браузер и попросит выбрать тип аккаунта в одном взаимодействии.
|
||||||
echo "Попробуйте вручную: claude auth login"
|
ANTHROPIC_MODEL=claude-sonnet-4-6 \
|
||||||
return 1
|
ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-8 \
|
||||||
}
|
ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-4-6 \
|
||||||
|
ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5-20251001 \
|
||||||
|
CLAUDE_CODE_SUBAGENT_MODEL=claude-haiku-4-5-20251001 \
|
||||||
|
claude "$@"
|
||||||
|
return "$?"
|
||||||
;;
|
;;
|
||||||
[Kk])
|
[Kk])
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
@@ -272,6 +272,38 @@ test_offer_reauth_enter_defaults_yes() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ── Fix8: no double login — [L] branch calls claude directly, not auth login ─
|
||||||
|
test_fix8_no_double_login() {
|
||||||
|
# [L] branch must NOT call "claude auth login"; must call claude directly and return.
|
||||||
|
|
||||||
|
# Find the line number of [Ll])
|
||||||
|
local ll_line
|
||||||
|
ll_line=$(grep -n '^\s*\[Ll\])' "$SCRIPT" | head -1 | cut -d: -f1)
|
||||||
|
|
||||||
|
# Extract the next 20 lines starting at [Ll]) — enough to cover the whole arm
|
||||||
|
local ll_branch
|
||||||
|
ll_branch=$(awk "NR>=$ll_line && NR<=$((ll_line+20))" "$SCRIPT")
|
||||||
|
|
||||||
|
# Check for actual invocation (not just a comment mentioning the command)
|
||||||
|
if echo "$ll_branch" | grep -v '^\s*#' | grep -q 'claude auth login'; then
|
||||||
|
fail "Fix8: [L] branch still calls 'claude auth login' — double login present"
|
||||||
|
else
|
||||||
|
ok "Fix8: [L] branch does NOT call 'claude auth login' (only mentions it in a comment)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if echo "$ll_branch" | grep -qF 'return "$?"'; then
|
||||||
|
ok "Fix8: [L] branch returns after launching claude (no fallthrough to outer call)"
|
||||||
|
else
|
||||||
|
fail "Fix8: [L] branch missing 'return \"\$?\"' — outer claude call still reached"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if echo "$ll_branch" | grep -q 'ANTHROPIC_MODEL='; then
|
||||||
|
ok "Fix8: [L] branch sets model env vars before launching claude"
|
||||||
|
else
|
||||||
|
fail "Fix8: [L] branch missing model env vars"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# ── bash syntax of the whole script ─────────────────────────────────────────
|
# ── bash syntax of the whole script ─────────────────────────────────────────
|
||||||
test_script_syntax() {
|
test_script_syntax() {
|
||||||
if bash -n "$SCRIPT" 2>&1; then
|
if bash -n "$SCRIPT" 2>&1; then
|
||||||
@@ -283,6 +315,7 @@ test_script_syntax() {
|
|||||||
|
|
||||||
# ── run all tests ─────────────────────────────────────────────────────────────
|
# ── run all tests ─────────────────────────────────────────────────────────────
|
||||||
test_script_syntax
|
test_script_syntax
|
||||||
|
test_fix8_no_double_login
|
||||||
test_fix1_export_api_key
|
test_fix1_export_api_key
|
||||||
test_fix2_trap_return
|
test_fix2_trap_return
|
||||||
test_fix3_readiness_loop
|
test_fix3_readiness_loop
|
||||||
|
|||||||
Reference in New Issue
Block a user