mirror of
https://github.com/leonvanzyl/autocoder.git
synced 2026-03-19 03:43:08 +00:00
fix: propagate alternative API provider settings to agent subprocesses
When users configured GLM/Ollama/Kimi via the Settings UI, agents still used Claude because conflicting env vars leaked through subprocess env. Root cause: get_effective_sdk_env() set ANTHROPIC_AUTH_TOKEN for GLM but didn't clear ANTHROPIC_API_KEY, which leaked from os.environ. The CLI prioritized the wrong credential. Changes: - registry.py: Clear conflicting auth vars (API_KEY vs AUTH_TOKEN) and Vertex AI vars when building env for alternative providers - client.py: Replace manual os.getenv() loop with get_effective_sdk_env() so agent SDK reads provider settings from the database - autonomous_agent_demo.py: Apply UI-configured provider settings to process env so CLI-launched agents also respect Settings UI config - start.py: Pass --model from settings when launching agent subprocess - server/schemas.py: Allow non-Claude model names when an alternative provider is configured (prevents 422 errors for glm-4.7, etc.) - .env.example: Document env vars for GLM, Ollama, and Kimi providers Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
18
registry.py
18
registry.py
@@ -731,7 +731,22 @@ def get_effective_sdk_env() -> dict[str, str]:
|
||||
sdk_env[var] = value
|
||||
return sdk_env
|
||||
|
||||
sdk_env = {}
|
||||
sdk_env: dict[str, str] = {}
|
||||
|
||||
# Explicitly clear credentials that could leak from the server process env.
|
||||
# For providers using ANTHROPIC_AUTH_TOKEN (GLM, Custom), clear ANTHROPIC_API_KEY.
|
||||
# For providers using ANTHROPIC_API_KEY (Kimi), clear ANTHROPIC_AUTH_TOKEN.
|
||||
# This prevents the Claude CLI from using the wrong credentials.
|
||||
auth_env_var = provider.get("auth_env_var", "ANTHROPIC_AUTH_TOKEN")
|
||||
if auth_env_var == "ANTHROPIC_AUTH_TOKEN":
|
||||
sdk_env["ANTHROPIC_API_KEY"] = ""
|
||||
elif auth_env_var == "ANTHROPIC_API_KEY":
|
||||
sdk_env["ANTHROPIC_AUTH_TOKEN"] = ""
|
||||
|
||||
# Clear Vertex AI vars when using non-Vertex alternative providers
|
||||
sdk_env["CLAUDE_CODE_USE_VERTEX"] = ""
|
||||
sdk_env["CLOUD_ML_REGION"] = ""
|
||||
sdk_env["ANTHROPIC_VERTEX_PROJECT_ID"] = ""
|
||||
|
||||
# Base URL
|
||||
base_url = all_settings.get("api_base_url") or provider.get("base_url")
|
||||
@@ -741,7 +756,6 @@ def get_effective_sdk_env() -> dict[str, str]:
|
||||
# Auth token
|
||||
auth_token = all_settings.get("api_auth_token")
|
||||
if auth_token:
|
||||
auth_env_var = provider.get("auth_env_var", "ANTHROPIC_AUTH_TOKEN")
|
||||
sdk_env[auth_env_var] = auth_token
|
||||
|
||||
# Model - set all three tier overrides to the same model
|
||||
|
||||
Reference in New Issue
Block a user