hashicorp/vault · error · Error

Configuration of the

Error message

Configuration of the ${method.methodType} method is not supported by the Vault UI.

What it means

Thrown by the auth method configuration form component (ui/app/components/auth-config-form/config.ts:110). configMethod() switches over the mounted auth method's type and maps it to a generated API client call (jwt/oidc, kubernetes, ldap, okta, radius). Any methodType not covered by a case falls through to the default and throws, meaning the UI has no configuration form implementation for that auth method.

Solutions

  1. Configure the unsupported auth method via the Vault CLI or HTTP API instead of the UI (e.g. vault write auth/<mount>/config ...)
  2. Upgrade the Vault UI to a version whose config form supports the methodType you mounted
  3. If you develop on the UI, add a case to configMethod() that calls the corresponding generated API method

Example fix

// before: unsupported types throw
case 'radius':
  return this.api.auth.radiusConfigureAuth(path, payload as RadiusConfigureAuthRequest);
default:
  throw new Error(`Configuration of the ${method.methodType} method is not supported by the Vault UI.`);

// after: map the new method to its generated API call
case 'radius':
  return this.api.auth.radiusConfigureAuth(path, payload as RadiusConfigureAuthRequest);
case 'saml':
  return this.api.auth.samlConfigure(path, payload as SamlConfigureRequest);
default:
  throw new Error(`Configuration of the ${method.methodType} method is not supported by the Vault UI.`);
Defensive patterns

Strategy: type-guard

Type guard

const UI_CONFIGURABLE_METHODS = ['jwt', 'oidc', 'kubernetes', 'ldap', 'okta', 'radius'] as const;
type UiConfigurableMethod = (typeof UI_CONFIGURABLE_METHODS)[number];
function isUiConfigurable(methodType: string): methodType is UiConfigurableMethod {
  return (UI_CONFIGURABLE_METHODS as readonly string[]).includes(methodType);
}

// usage: only mount the form when the guard passes
if (!isUiConfigurable(method.methodType)) {
  renderCliInstructions(method.methodType); // instead of hitting the throwing default case
}

Try / catch

try {
  await this.configMethod(method.path, data);
} catch (e) {
  if (e.message.includes('is not supported by the Vault UI')) {
    notifyUser(`Configure ${method.methodType} via the CLI instead`);
  } else {
    throw e;
  }
}

Prevention

When it happens

Trigger: Opening the configuration form for a mounted auth method whose methodType is outside the switch — e.g. cert, saml, approle, token, or any auth method introduced after this component was written.

Common situations: An enterprise-only auth method (such as SAML) is mounted and the UI routes the config screen to this generic component; an older UI running against a newer Vault server that supports more method types; tests that mount unusual auth methods.


AI-assisted analysis of hashicorp/vault@744b611b57 (2026-08-15). Data as JSON: /api/errors/a099048a5bac4210. Report an issue: GitHub.

Appendix: source

Thrown at ui/app/components/auth-config-form/config.ts:110

      case 'azure':
        return this.api.auth.azureConfigureAuth(path, payload as AzureConfigureAuthRequest);
      case 'github':
        return this.api.auth.githubConfigure(path, payload as GithubConfigureRequest);
      case 'gcp':
        return this.api.auth.googleCloudConfigureAuth(path, payload as GoogleCloudConfigureAuthRequest);
      case 'jwt':
      case 'oidc':
        return this.api.auth.jwtConfigure(path, payload as JwtConfigureRequest);
      case 'kubernetes':
        return this.api.auth.kubernetesConfigureAuth(path, payload as KubernetesConfigureAuthRequest);
      case 'ldap':
        return this.api.auth.ldapConfigureAuth(path, payload as LdapConfigureAuthRequest);
      case 'okta':
        return this.api.auth.oktaConfigure(path, payload as OktaConfigureRequest);
      case 'radius':
        return this.api.auth.radiusConfigure(path, payload as RadiusConfigureRequest);
      default:
        throw new Error(`Configuration of the ${method.methodType} method is not supported by the Vault UI.`);
    }
  }

  @task
  @waitFor
  *saveModel(evt: HTMLElementEvent<HTMLFormElement>) {
    evt.preventDefault();
    this.errorMessage = '';
    try {
      const { form, method } = this.args;
      const { data } = form.toJSON();
      yield this.configMethod(method.path, data as ConfigPayload);
      this.router.transitionTo('vault.cluster.access.methods').followRedirects();
      this.flashMessages.success('The configuration was saved successfully.');
    } catch (err) {
      const { message } = yield this.api.parseError(err);
      this.errorMessage = message;
    }

View on GitHub (pinned to 744b611b57)