A shell OPENAI_API_KEY overrides the profile key; its 401s retry as 5xx
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 68/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- go
- Bereich
- api, authentication, cli
Rechercherichtung
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.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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
- Vorherrschende Sprache
- Go
- Sterne
- 115
- Forks
- 14
- Ø Merge
- 9 Std. 37 Min.
- Gemergte PRs (30 T.)
- 755
Entwicklungsumgebung
Die Einrichtungsdateien dieses Projekts haben wir noch nicht geprüft. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus Agent-Field/CodeAF
-
area:chat bug sev:papercut
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
Agent-Field/CodeAF#1592 ·
Maintainer antworten meist innerhalb von 1 Tag
-
area:headless bug sev:critical
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
Agent-Field/CodeAF#1566 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
area:chat feature
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
Agent-Field/CodeAF#1510 ·
Maintainer antworten meist innerhalb von 1 Tag
-
area:tests bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Agent-Field/CodeAF#1489 ·
Maintainer antworten meist innerhalb von 1 Tag
-
area:chat bug good first issue sev:papercut
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Agent-Field/CodeAF#1470 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in Agent-Field/CodeAF
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
rossoctl/context-guru#346 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 90/100
prime-radiant-inc/evener#2883 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
gravitational/teleport#69805 ·
Maintainer antworten meist innerhalb von 11 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
Under Poisson sampling, the `PLDAccountant` composes the inner event both before and after samplingOffen
Schwierigkeit 2/5 Ein halber Tag Anfängerfreundlichkeit 78/100
google/differential-privacy#496 ·