diff --git a/src/agents/models-config.ts b/src/agents/models-config.ts index b7b94bff377..3de0794267b 100644 --- a/src/agents/models-config.ts +++ b/src/agents/models-config.ts @@ -1,6 +1,7 @@ import fs from "node:fs/promises"; import path from "node:path"; import { type OpenClawConfig, loadConfig } from "../config/config.js"; +import { applyConfigEnvVars } from "../config/env-vars.js"; import { isRecord } from "../utils.js"; import { resolveOpenClawAgentDir } from "./agent-paths.js"; import { @@ -117,6 +118,12 @@ export async function ensureOpenClawModelsJson( const cfg = config ?? loadConfig(); const agentDir = agentDirOverride?.trim() ? agentDirOverride.trim() : resolveOpenClawAgentDir(); + // Ensure config env vars (e.g. AWS_PROFILE, AWS_ACCESS_KEY_ID) are + // available in process.env before implicit provider discovery. Some + // callers (agent runner, tools) pass config objects that haven't gone + // through the full loadConfig() pipeline which applies these. + applyConfigEnvVars(cfg); + const explicitProviders = cfg.models?.providers ?? {}; const implicitProviders = await resolveImplicitProviders({ agentDir, explicitProviders }); const providers: Record = mergeProviders({