ComposioHQ/composio · warning · ComposioAuthConfigNotFoundError

No auth config found for toolkit

Error message

No auth config found for toolkit

What it means

Thrown when a toolkit exists but has no authConfigDetails, meaning it requires no authentication (or has no auth schemes registered) and the caller asked for auth config fields. Raised from getAuthConfigFields, which backs getAuthConfigCreationFields and getConnectedAccountInitiationFields.

Source

Thrown at ts/packages/core/src/models/Toolkits.ts:202

  async get(
    arg?: string | ToolkitListParams,
    requestOptions?: ComposioRequestOptions
  ): Promise<ToolkitRetrieveResponse | ToolKitListResponse> {
    if (typeof arg === 'string') {
      return this.getToolkitBySlug(arg, requestOptions);
    }
    return this.getToolkits(arg ?? {}, requestOptions);
  }

  private async getAuthConfigFields(
    toolkitSlug: string,
    authScheme: AuthSchemeType | null,
    authConfigType: 'authConfigCreation' | 'connectedAccountInitiation',
    requiredOnly: boolean
  ): Promise<ToolkitAuthFieldsResponse> {
    const toolkit = await this.getToolkitBySlug(toolkitSlug);
    if (!toolkit.authConfigDetails) {
      throw new ComposioAuthConfigNotFoundError('No auth config found for toolkit', {
        meta: {
          toolkitSlug,
        },
      });
    }

    // if multiple auth configs are found, warn the user and select the first one
    if (toolkit.authConfigDetails.length > 1 && !authScheme) {
      logger.warn(
        `Multiple auth configs found for ${toolkitSlug}, please specify the auth scheme to get details of specific auth scheme. Selecting the first scheme by default.`,
        {
          meta: {
            toolkitSlug,
          },
        }
      );
    }

View on GitHub (pinned to 64b1b85502)

Solutions

  1. Check toolkit.authConfigDetails (or toolkit.authScheme) before requesting auth fields, and skip the auth step for NO_AUTH toolkits.
  2. If the toolkit should require auth, verify the slug and upgrade @composio/core — the toolkit's auth metadata may have changed.
  3. Handle ComposioAuthConfigNotFoundError and treat it as 'no auth needed' in your flow.

Example fix

// before
const fields = await composio.toolkits.getAuthConfigCreationFields('no_auth_toolkit');

// after
const toolkit = await composio.toolkits.get({ toolkit: 'no_auth_toolkit' });
if (!toolkit.authConfigDetails?.length) {
  // toolkit needs no auth; skip field collection
} else {
  const fields = await composio.toolkits.getAuthConfigCreationFields('no_auth_toolkit');
}
Defensive patterns

Strategy: validation

Validate before calling

const tk = await composio.toolkits.get({ toolkit: slug });
const needsAuth = !!tk.authConfigDetails?.length;
if (!needsAuth) { /* skip auth fields */ }

Type guard

const hasAuthConfig = (t: Toolkit): boolean =>
  Array.isArray(t.authConfigDetails) && t.authConfigDetails.length > 0;

Try / catch

try {
  return await composio.toolkits.getAuthConfigCreationFields(slug);
} catch (e) {
  if (e instanceof ComposioAuthConfigNotFoundError) return { fields: [] }; // no-auth toolkit
  throw e;
}

Prevention

When it happens

Trigger: Calling getAuthConfigCreationFields(toolkitSlug) or getConnectedAccountInitiationFields(toolkitSlug) for a toolkit that has no auth schemes (e.g. NO_AUTH toolkits like math or web search).

Common situations: Building a generic auth-configuration UI that assumes every toolkit has auth fields; connecting toolkits that need no credentials; backend metadata not yet populated for a newly added toolkit.

Related errors


AI-assisted analysis of ComposioHQ/composio@64b1b85502 (2026-08-28). Data as JSON: /api/errors/2758117cc2ebe700. Report an issue: GitHub.