dagger/dagger · error

provider %q not configured, run 'dagger llm add-key %s' firs

Error message

provider %q not configured, run 'dagger llm add-key %s' first

What it means

`dagger llm use <provider>` loaded a config file but the requested provider has no entry in [llm.providers], meaning no API key/credentials were ever stored for it. The command refuses to make it the default without configuration.

Source

Thrown at internal/cmd/dagger/llm_config.go:647

var llmSetDefaultCmd = &cobra.Command{
	Use:   "set-default <provider> [model]",
	Short: "Set default provider and optionally model",
	Args:  cobra.RangeArgs(1, 2),
	RunE: func(cmd *cobra.Command, args []string) error {
		provider := args[0]

		cfg, err := llmconfig.Load()
		if err != nil {
			return err
		}
		if cfg == nil {
			return fmt.Errorf("no LLM configuration found, run 'dagger llm setup' first")
		}

		// Verify provider exists
		providerCfg, ok := cfg.LLM.Providers[provider]
		if !ok {
			return fmt.Errorf("provider %q not configured, run 'dagger llm add-key %s' first",
				provider, provider)
		}

		cfg.LLM.DefaultProvider = provider
		if len(args) > 1 {
			cfg.LLM.DefaultModel = args[1]
		} else {
			// Don't carry the previous provider's model over: it would be
			// exported as this provider's model and prefix routing could send
			// requests back to the old provider. Prefer the provider's own
			// configured model, then its catalog default; otherwise clear it.
			model := providerCfg.Model
			if model == "" {
				model = llmconfig.DefaultModelForProvider(provider)
			}
			cfg.LLM.DefaultModel = model
		}

View on GitHub (pinned to 82ba2681db)

Solutions

  1. Run `dagger llm add-key <provider>` first, then `dagger llm use <provider>`
  2. Verify the exact provider name against [llm.providers] in the config file
  3. Check DAGGER_CONFIG points at the config that actually holds the key
  4. Re-add credentials if the provider entry was removed previously

Example fix

// before (shell)
dagger llm use anthropic   # key never added
// after (shell)
dagger llm add-key anthropic
dagger llm use anthropic
Defensive patterns

Strategy: validation

Validate before calling

cfg, err := llmconfig.Load()
if err != nil { return err }
if cfg == nil { return errors.New("no config") }
if _, ok := cfg.LLM.Providers[provider]; !ok {
    return fmt.Errorf("provider %q not configured; run 'dagger llm add-key %s' first", provider, provider)
}

Type guard

func providerReady(cfg *llmconfig.Config, name string) bool {
    if cfg == nil { return false }
    p, ok := cfg.LLM.Providers[name]
    return ok && (p.APIKey != "" || p.AuthToken != "")
}

Try / catch

if _, ok := cfg.LLM.Providers[provider]; !ok {
    return fmt.Errorf("provider %q not configured, run 'dagger llm add-key %s' first", provider, provider)
}

Prevention

When it happens

Trigger: `dagger llm use <name>` where <name> is absent from cfg.LLM.Providers (llm_config.go:647): typo in provider name, key never added via `dagger llm add-key`, provider removed earlier with `dagger llm remove-key`, or a different config file in scope via DAGGER_CONFIG.

Common situations: Using a provider name that differs from the alias used at add-key time; switching machines where the key wasn't migrated; after removing the key; CI environment missing the config with keys.

Related errors


AI-assisted analysis of dagger/dagger@82ba2681db (2026-09-05). Data as JSON: /api/errors/0829b742af31c006. Report an issue: GitHub.