Параметр index-url задает основной индекс пакетов, а extra-index-url добавляет еще один источник кандидатов. pip не считает дополнительный сервер запасным. Версии рассматриваются вместе.

Проверьте текущий адрес

Сначала выясните, не сохранен ли корпоративный индекс в пользовательском файле или переменной среды, иначе локальная команда и CI получат разные наборы кандидатов.

python -m pip config get global.index-url
python -m pip config debug

Почему возникает dependency confusion

Если внутренний пакет имеет простое имя и проект с таким же именем появляется в публичном индексе, resolver способен выбрать нежелательный дистрибутив по подходящей версии.

Фиксируйте источник явно

Для закрытых пакетов применяйте контролируемый единый индекс или прямые проверенные ссылки, ограничивайте версии и хэши, а токены передавайте через секреты среды вместо записи в репозиторий.

Запустите установку в чистом окружении с подробным выводом и проверьте URL загрузки каждого внутреннего пакета до переноса схемы в рабочий CI.

Где именно мог сохраниться адрес, показывает разбор pip config. Параметры установки перечислены в справочнике pip install.