thedotmack/claude-mem · warning

Provider=${options.provider} requested non-interactively. AP

Error message

Provider=${options.provider} requested non-interactively. API key prompt skipped — set CLAUDE_MEM_${options.provider.toUpperCase()}_API_KEY and CLAUDE_MEM_PROVIDER in settings.json or env manually if not already set.

What it means

When `npx claude-mem install` runs non-interactively (no TTY) with --provider other than 'claude', there is no way to prompt for that provider's API key. The installer persists CLAUDE_MEM_PROVIDER and warns that you must set CLAUDE_MEM_<PROVIDER>_API_KEY yourself (settings.json env block or real env), or generation calls with that provider will fail auth later.

Source

Thrown at src/npx-cli/commands/install.ts:1128

    }
    saveClaudeMemEnv(env);
    persistClaudeProvider('gateway');
    if (tokenCancelled || tokenInput.length === 0) {
      log.info('Gateway URL saved; existing gateway token preserved.');
    } else {
      log.info('Configured Claude Agent SDK gateway in ~/.claude-mem/.env.');
    }
  };

  if (!isInteractive) {
    if (options.provider) {
      if (options.provider === 'claude') {
        persistClaudeProvider();
        return 'claude';
      }
      const wrote = mergeSettings({ CLAUDE_MEM_PROVIDER: options.provider });
      if (wrote) log.info(`Saved provider=${options.provider} to ~/.claude-mem/settings.json`);
      log.warn(`Provider=${options.provider} requested non-interactively. API key prompt skipped — set CLAUDE_MEM_${options.provider.toUpperCase()}_API_KEY and CLAUDE_MEM_PROVIDER in settings.json or env manually if not already set.`);
      return options.provider;
    }
    return initialProvider;
  }

  const runClaudeAuthFlow = async (): Promise<void> => {
    const resolvedAuthMethod = resolveClaudeAuthMethod();
    const initialAccessMode: ClaudeAccessMode =
      resolvedAuthMethod === 'subscription' ? 'subscription' : 'api-key';

    const result = await p.select<ClaudeAccessMode>({
      message: 'Do you use a subscription plan or an API key/gateway for the memory agent?',
      options: [
        { value: 'subscription', label: 'Subscription plan (recommended — uses your logged-in Claude SDK account)' },
        { value: 'api-key', label: 'API key or gateway (Anthropic, LiteLLM, or compatible proxy)' },
      ],
      initialValue: initialAccessMode,
    });

View on GitHub (pinned to e2d1df569a)

Solutions

  1. Set the key in the environment the worker/hooks run in: `CLAUDE_MEM_GEMINI_API_KEY=...` / `CLAUDE_MEM_OPENROUTER_API_KEY=...` (any CLAUDE_MEM_<PROVIDER>_API_KEY naming).
  2. Or write it into ~/.claude-mem/settings.json under env alongside CLAUDE_MEM_PROVIDER.
  3. If you actually wanted interactive key entry, run install in a real TTY without --provider.
  4. Verify afterwards: `npx claude-mem doctor` or a test generation run to confirm the provider key resolves.

Example fix

# before (Dockerfile, non-interactive):
RUN npx claude-mem install --provider openrouter
# after
RUN npx claude-mem install --provider openrouter
ENV CLAUDE_MEM_OPENROUTER_API_KEY=sk-or-...
Defensive patterns

Strategy: validation

Validate before calling

// Pre-flight everything non-interactive install needs, BEFORE running it:
const provider = 'openrouter'; // or gemini
const keyName = `CLAUDE_MEM_${provider.toUpperCase()}_API_KEY`;
if (!process.env[keyName]) {
  throw new Error(`${keyName} must be set for non-interactive --provider ${provider}`);
}

Prevention

When it happens

Trigger: CI, Dockerfiles, or scripts running `claude-mem install --provider gemini|openrouter` with stdin/stdout detached. For provider 'claude' it persists the Claude provider and returns silently; every other provider hits this warning.

Common situations: Automated container builds; provisioning scripts that forget secrets must be injected at runtime, not install time.

Understand the failure class

Background: "environment variable is not set" and "Missing keys in environment" errors: what missing required env var messages mean and how to fix them — this error's family across 28 libraries.

Related errors


AI-assisted analysis of thedotmack/claude-mem@e2d1df569a (2026-08-20). Data as JSON: /api/errors/7ca788b733777c88. Report an issue: GitHub.