continuedev/continue · error · Error

Assistant ${options.assistant} not found

Error message

Assistant ${options.assistant} not found

What it means

After fetching the organization's assistants, Continue.from could not find one whose ownerSlug and packageSlug match the requested identifier, so it cannot build the client.

Source

Thrown at packages/continue-sdk/typescript/src/Continue.ts:129

    const { ownerSlug, packageSlug } = decodePackageSlug(options.assistant);
    if (!ownerSlug || !packageSlug) {
      throw new Error(
        `Invalid assistant identifier: ${options.assistant}. Expected format: owner-slug/package-slug`,
      );
    }

    const assistants = await continueClient.listAssistants({
      organizationId: options.organizationId,
      alwaysUseProxy: "true",
    });

    const assistantRes = assistants.find(
      (a) => a.ownerSlug === ownerSlug && a.packageSlug === packageSlug,
    );

    if (!assistantRes) {
      throw new Error(`Assistant ${options.assistant} not found`);
    }

    const assistant = new Assistant(assistantRes.configResult.config);

    const client = createOpenAIClient({
      models: assistant.config.models,
      organizationId: options.organizationId || null,
      apiKey: options.apiKey,
      baseURL: baseURL,
    });

    return {
      api: continueClient,
      client,
      assistant,
    };
  }
}

View on GitHub (pinned to 5522c6f44c)

Solutions

  1. Use listAssistants to print available ownerSlug/packageSlug pairs and copy the exact match
  2. Check you passed the correct organizationId if the assistant is org-scoped
  3. Fix typos in either slug
  4. Use Continue.from({}) without assistant for the default client while you sort access

Example fix

// before
const { api } = await Continue.from({ assistant: 'contnue/recommended' });

// after
const { api } = await Continue.from({ assistant: 'continue/recommended', organizationId: ORG_ID });
Defensive patterns

Strategy: validation

Validate before calling

const list = await client.listAssistants({ organizationId }); const found = list.find(a => `${a.ownerSlug}/${a.packageSlug}` === slug);

Try / catch

try { const { api } = await Continue.from({ assistant }); } catch (e) { if (/not found/.test(e.message)) { console.error(await (await Continue.from({})).api.listAssistants({})); } throw e; }

Prevention

When it happens

Trigger: Continue.from({ assistant: 'owner/pkg' }) succeeds in format but listAssistants (optionally scoped by organizationId) returns no matching entry.

Common situations: Assistant was deleted/renamed, wrong organizationId supplied so it's not visible, typo in one of the slugs, or the assistant is private to another org.

Related errors


AI-assisted analysis of continuedev/continue@5522c6f44c (2026-08-27). Data as JSON: /api/errors/e14bfd473fd1db22. Report an issue: GitHub.