@@ -242,6 +242,13 @@ func setProviderDefaults() {
242 if apiKey := os.Getenv("OPENROUTER_API_KEY"); apiKey != "" {
242 if apiKey := os.Getenv("OPENROUTER_API_KEY"); apiKey != "" {
243 viper.SetDefault("providers.openrouter.apiKey", apiKey)
243 viper.SetDefault("providers.openrouter.apiKey", apiKey)
245+ if apiKey := os.Getenv("XAI_API_KEY"); apiKey != "" {
246+ viper.SetDefault("providers.xai.apiKey", apiKey)
248+ if apiKey := os.Getenv("AZURE_OPENAI_ENDPOINT"); apiKey != "" {
249+ // api-key may be empty when using Entra ID credentials – that's okay
250+ viper.SetDefault("providers.azure.apiKey", os.Getenv("AZURE_OPENAI_API_KEY"))
246 // Use this order to set the default models
253 // Use this order to set the default models
247 // 1. Anthropic
254 // 1. Anthropic
@@ -292,6 +299,13 @@ func setProviderDefaults() {
302+ if viper.Get("providers.xai.apiKey") != "" {
303+ viper.SetDefault("agents.coder.model", models.XAIGrok3Beta)
304+ viper.SetDefault("agents.task.model", models.XAIGrok3Beta)
305+ viper.SetDefault("agents.title.model", models.XAiGrok3MiniFastBeta)
295 // AWS Bedrock configuration
309 // AWS Bedrock configuration
296 if hasAWSCredentials() {
310 if hasAWSCredentials() {
297 viper.SetDefault("agents.coder.model", models.BedrockClaude37Sonnet)
311 viper.SetDefault("agents.coder.model", models.BedrockClaude37Sonnet)
@@ -301,8 +315,6 @@ func setProviderDefaults() {
303 if os.Getenv("AZURE_OPENAI_ENDPOINT") != "" {
317 if os.Getenv("AZURE_OPENAI_ENDPOINT") != "" {
304− // api-key may be empty when using Entra ID credentials – that's okay
305− viper.SetDefault("providers.azure.apiKey", os.Getenv("AZURE_OPENAI_API_KEY"))
306 viper.SetDefault("agents.coder.model", models.AzureGPT41)
318 viper.SetDefault("agents.coder.model", models.AzureGPT41)
307 viper.SetDefault("agents.task.model", models.AzureGPT41Mini)
319 viper.SetDefault("agents.task.model", models.AzureGPT41Mini)
308 viper.SetDefault("agents.title.model", models.AzureGPT41Mini)
320 viper.SetDefault("agents.title.model", models.AzureGPT41Mini)