summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/opencode/src/global/config.ts1
-rw-r--r--packages/opencode/src/provider/provider.ts6
2 files changed, 7 insertions, 0 deletions
diff --git a/packages/opencode/src/global/config.ts b/packages/opencode/src/global/config.ts
index 05c306d61..1ec53d773 100644
--- a/packages/opencode/src/global/config.ts
+++ b/packages/opencode/src/global/config.ts
@@ -9,6 +9,7 @@ export namespace GlobalConfig {
autoshare: z.boolean().optional(),
provider: z.string().optional(),
model: z.string().optional(),
+ disabled_providers: z.array(z.string()).optional(),
})
export type Info = z.infer<typeof Info>
diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts
index 975af5e31..0d11ce0c9 100644
--- a/packages/opencode/src/provider/provider.ts
+++ b/packages/opencode/src/provider/provider.ts
@@ -169,8 +169,12 @@ export namespace Provider {
database[providerID] = parsed
}
+ const disabled = await GlobalConfig.get().then(
+ (cfg) => new Set(cfg.disabled_providers ?? []),
+ )
// load env
for (const [providerID, provider] of Object.entries(database)) {
+ if (disabled.has(providerID)) continue
if (provider.env.some((item) => process.env[item])) {
mergeProvider(providerID, {}, "env")
}
@@ -178,6 +182,7 @@ export namespace Provider {
// load apikeys
for (const [providerID, provider] of Object.entries(await Auth.all())) {
+ if (disabled.has(providerID)) continue
if (provider.type === "api") {
mergeProvider(providerID, { apiKey: provider.key }, "api")
}
@@ -185,6 +190,7 @@ export namespace Provider {
// load custom
for (const [providerID, fn] of Object.entries(CUSTOM_LOADERS)) {
+ if (disabled.has(providerID)) continue
const result = await fn(database[providerID])
if (result) mergeProvider(providerID, result, "custom")
}