thedotmack/claude-mem · warning

Invalid ${settingName}, using default

Error message

Invalid ${settingName}, using default

What it means

readSettingsBackedTimeout first honors an env override for a settings-backed timeout. If the env var is present but parseBoundedTimeout returns null (non-numeric or out of bounds), it warns with the value and bounds and returns the default immediately — settings.json is not consulted for that case.

Source

Thrown at src/shared/worker-utils.ts:109

  const parsed = parseInt(rawValue, 10);
  if (Number.isFinite(parsed) && parsed >= bounds.min && parsed <= bounds.max) {
    return parsed;
  }
  return null;
}

function readSettingsBackedTimeout(
  settingName: keyof SettingsDefaults,
  defaultValue: number,
  bounds: { min: number; max: number }
): number {
  const envVal = process.env[settingName];
  if (envVal !== undefined) {
    const parsed = parseBoundedTimeout(envVal, bounds);
    if (parsed !== null) {
      return parsed;
    }
    logger.warn('SYSTEM', `Invalid ${settingName}, using default`, {
      value: envVal, min: bounds.min, max: bounds.max
    });
    return defaultValue;
  }

  const settingsValue = getWorkerSettings()[settingName];
  const parsed = parseBoundedTimeout(settingsValue, bounds);
  if (parsed !== null) {
    return parsed;
  }

  logger.warn('SYSTEM', `Invalid ${settingName} in settings.json, using default`, {
    value: settingsValue, min: bounds.min, max: bounds.max
  });
  return defaultValue;
}

export function getWorkerPort(): number {

View on GitHub (pinned to 8bc631a71a)

Solutions

  1. Fix or clear the env override — it must be an integer within the logged min/max.
  2. If you meant to configure via settings.json instead, remove the env var so the settings branch is reached.
Defensive patterns

Strategy: validation

Validate before calling

const envVal = process.env[settingName];
if (envVal !== undefined && parseBoundedTimeout(envVal, bounds) === null) {
  // env override is invalid and SHADOWS settings.json — remove or fix it
  delete process.env[settingName];
}

Type guard

const isValidTimeoutOverride = (v: string | undefined, bounds: { min: number; max: number }): boolean =>
  v === undefined || parseBoundedTimeout(v, bounds) !== null;

Prevention

When it happens

Trigger: An env var named after a settings timeout key is set to a non-integer or out-of-range value, shadowing a perfectly valid settings.json entry.

Common situations: CI pipelines injecting stray env; leftover experimentation values in shell profile; operators overriding settings via env with wrong units.

Understand the failure class

Background: "is not a valid" / "Invalid ... value" environment variable errors: how libraries validate env vars and what to do when they reject yours — this error's family across 48 libraries.

Related errors


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