diff --git a/packages/opencode/src/auth/index.ts b/packages/opencode/src/auth/index.ts index 76afa0383291..3ae95a50144d 100644 --- a/packages/opencode/src/auth/index.ts +++ b/packages/opencode/src/auth/index.ts @@ -16,7 +16,12 @@ export namespace Auth { key: z.string(), }) - export const Info = z.discriminatedUnion("type", [Oauth, Api]) + export const Env = z.object({ + type: z.literal("env"), + env: z.string(), + }) + + export const Info = z.discriminatedUnion("type", [Oauth, Api, Env]) export type Info = z.infer const filepath = path.join(Global.Path.data, "auth.json") diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 93acb80dea99..0435803f6264 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -241,6 +241,12 @@ export namespace Provider { if (provider.type === "api") { mergeProvider(providerID, { apiKey: provider.key }, "api") } + if (provider.type === "env") { + const envValue = process.env[provider.env] + if (envValue) { + mergeProvider(providerID, { apiKey: envValue }, "env") + } + } } // load custom