A shell OPENAI_API_KEY overrides the profile key; its 401s retry as 5xx
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 68/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- go
- Domaine
- api, authentication, cli
Piste de recherche
Start with internal/config/apikey.go at the cited key-selection lines, then inspect internal/seniordev/app/solo.go:405-425 for retry classification. Reproduce the isolated-profile flow with codeaf doctor and senior-dev --json using the listed dev build. Done means the saved OpenRouter key is selected or an override warning is shown, and a 401 stops immediately without retries.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Seen on: dev 837b2b0.
Behaviour
With OPENAI_API_KEY set in the shell, a headless senior-dev run used it over the profile's saved OpenRouter key (codeaf doctor: key set · OPENAI_API_KEY). Every call failed API error (401): Missing Authentication header and was retried as provider-5xx. Two problems: a key for another service silently wins over the profile's own key, and an auth failure is retried as a server error instead of stopping with a plain line.
Replication
- Build dev 837b2b0 (
git checkout 837b2b0 && make build, binarybin/codeaf), or install the dev build withcurl -fsSL https://agentfield.ai/get/devaf | bash. - Use an isolated profile:
export HOME=$(mktemp -d), exportOPENROUTER_API_KEY, and keep the default model (~deepseek/deepseek-v4-flash-latest, crew on auto). - On a busy machine set
task.max_loadto0(/settings, Tasks) so the busy-machine gate does not hold tasks. - Save an OpenRouter key in the profile (first-run setup), then
unset OPENROUTER_API_KEY; export OPENAI_API_KEY=sk-not-for-openrouter. codeaf doctor(see which key is used), thencodeaf senior-dev --json "add a README.md with one line"in a small git repo.
Evidence
codeaf doctor:key set · OPENAI_API_KEY; calls failAPI error (401): Missing Authentication header, retry classprovider-5xx(quoted from the screen).internal/config/apikey.go:53and:61:firstNonEmpty(os.Getenv(APIKeyEnv), os.Getenv("OPENAI_API_KEY"), persistedAPIKey…)puts the shell's OPENAI key before the saved key.internal/seniordev/app/solo.go:405-425: the retry classifier; the 401 reached theprovider-5xxclass, probably through a path where the status code was not set.
Guessed cause
A guess from reading the code, not a confirmed diagnosis. The key order prefers any OPENAI_API_KEY in the environment over the profile's key, and the retry classifier does not treat a 401 without a parsed status as permanent.
Acceptance
- e2e: with the setup above, the run uses the saved OpenRouter key (or
codeaf doctorwarns that a shell key overrides it), and a 401 ends the run at once with a key message, no retries.
Found while writing the public docs; manual text differences are in #1545.
🤖 Generated with Claude Code
- Langage dominant
- Go
- Étoiles
- 115
- Forks
- 14
- Merge moyen
- 9 h 44 min
- PR mergées (30 j)
- 766
Préparer son environnement
Nous n'avons pas encore vérifié les fichiers d'installation de ce projet. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de Agent-Field/CodeAF
-
area:chat bug sev:papercut
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
Agent-Field/CodeAF#1592 ·
Les mainteneurs répondent en général sous 1 jour
-
area:headless bug sev:critical
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
Agent-Field/CodeAF#1566 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
area:chat feature
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
Agent-Field/CodeAF#1510 ·
Les mainteneurs répondent en général sous 1 jour
-
area:tests bug
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Agent-Field/CodeAF#1489 ·
Les mainteneurs répondent en général sous 1 jour
-
area:chat bug good first issue sev:papercut
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Agent-Field/CodeAF#1470 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de Agent-Field/CodeAF
Issues similaires
-
agentic-workflows
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour
-
priority/4/normal status/needs-triage type/bug/unconfirmed
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
authelia/authelia#13292 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
blinklabs-io/actions#138 ·
Les mainteneurs répondent en général sous 1 jour
-
[UI] AlbumDetails collapses multi-genre list to single primary genre on viewports < lg breakpointOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour