github / github/app

Custom model provider: support Bearer token auth for Google Gemini-compatible endpoints

Ouverte
#3,269 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Aucune donnée de langage
Étoiles
2.1k
Forks
153
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

## Problem

When configuring a custom model provider using the **Google Gemini** format, the Copilot app appears to send the API key as a `?key=` query parameter (Google's standard auth). However, enterprise Gemini-compatible proxies (e.g. SAP Hyperspace LLM Proxy) require the API key to be sent as an `Authorization: Bearer` header — not as a query param.

This makes it impossible to use Gemini-native endpoints from corporate proxies with custom model providers.

## Reproduction

1. Add a custom model provider with base URL pointing to a Gemini-compatible proxy (e.g. `http://localhost:6655/gemini`)
2. Set the API key to the proxy's bearer token
3. Attempt to use the model → fails with auth error on the proxy side (`Missing Authorization header`)

The proxy endpoint works correctly when called with `Authorization: Bearer `:
```
curl -X POST http://localhost:6655/gemini/v1beta/models/gemini-3.5-flash:generateContent \
-H "Authorization: Bearer " \
-H "Content-Type: application/json" \
-d '{"contents":[{"role":"user","parts":[{"text":"hi"}]}]}'
```

## Expected behavior

The custom Gemini model provider should send the API key as `Authorization: Bearer ` (in addition to or instead of `?key=`), to support enterprise proxies that follow this pattern.

## Workaround attempted

Using the OpenAI-compatible endpoint (`/litellm/v1`) works but **prompt caching does not function** through that path (related: #1975).

## Environment

| Field | Value |
|---|---|
| App version | 1.0.80 |
| OS | macOS |
| Path | /settings → Custom model provider |

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez dans Settings → Custom model provider et reproduisez la requête vers l’endpoint compatible avec Gemini indiqué dans l’issue. Suivez la manière dont la clé API configurée est appliquée au format Google Gemini, puis vérifiez que la requête complète contient l’en-tête Authorization: Bearer requis et réussit via le proxy sans perturber le comportement existant des requêtes Gemini.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Domaine
api, authentication
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Active
Clarté
Plutôt claire
Accessibilité débutants
58/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.