SillyTavern/SillyTavern · error · Error
Connection Manager is not available
Error message
Connection Manager is not available
What it means
Thrown by ConnectionManagerRequestService.sendRequest() when 'connection-manager' is present in context.extensionSettings.disabledExtensions. The Connection Manager is a core extension that owns connection profiles; when disabled, profile-based requests cannot proceed because there is no profile source to read. This is an environment/extension-state guard, not a network error.
Source
Thrown at public/scripts/extensions/shared.js:424
* @param {string} profileId
* @param {string | (import('../custom-request.js').ChatCompletionMessage & {ignoreInstruct?: boolean})[]} prompt
* @param {number} maxTokens
* @param {Object} custom
* @param {boolean?} [custom.stream=false]
* @param {AbortSignal?} [custom.signal]
* @param {boolean?} [custom.extractData=true]
* @param {boolean?} [custom.includePreset=true]
* @param {boolean?} [custom.includeInstruct=true]
* @param {Partial<InstructSettings>?} [custom.instructSettings] Override instruct settings
* @param {Record<string, any>} [overridePayload] - Override payload for the request
* @returns {Promise<import('../custom-request.js').ExtractedData | (() => AsyncGenerator<import('../custom-request.js').StreamResponse>)>} If not streaming, returns extracted data; if streaming, returns a function that creates an AsyncGenerator
*/
static async sendRequest(profileId, prompt, maxTokens, custom = this.defaultSendRequestParams, overridePayload = {}) {
const { stream, signal, extractData, includePreset, includeInstruct, instructSettings } = { ...this.defaultSendRequestParams, ...custom };
const context = SillyTavern.getContext();
if (context.extensionSettings.disabledExtensions.includes('connection-manager')) {
throw new Error('Connection Manager is not available');
}
const profile = this.getProfile(profileId);
const selectedApiMap = this.validateProfile(profile);
try {
switch (selectedApiMap.selected) {
case 'openai': {
if (!selectedApiMap.source) {
throw new Error(`API type ${selectedApiMap.selected} does not support chat completions`);
}
const proxyPreset = proxies.find((p) => p.name === profile.proxy);
const messages = Array.isArray(prompt) ? prompt : [{ role: 'user', content: prompt }];
return await context.ChatCompletionService.processRequest({
stream,
messages,View on GitHub (pinned to 8172dcd0ee)
Solutions
- Re-enable the Connection Manager extension in User Settings > Extensions.
- Before calling sendRequest, guard with getSupportedProfiles() in a try/catch (it throws the same error) or check context.extensionSettings.disabledExtensions directly.
- If the user intentionally disabled it, fall back to direct ChatCompletion/TextCompletion service calls without a profile.
Example fix
// before
const data = await ConnectionManagerRequestService.sendRequest(profileId, prompt, 512);
// after
const ctx = SillyTavern.getContext();
if (ctx.extensionSettings.disabledExtensions.includes('connection-manager')) {
toastr.warning('Enable the Connection Manager extension to use profiles.');
return;
}
const data = await ConnectionManagerRequestService.sendRequest(profileId, prompt, 512); Defensive patterns
Strategy: validation
Validate before calling
function isConnectionManagerEnabled() {
const ctx = SillyTavern.getContext();
return !ctx.extensionSettings.disabledExtensions.includes('connection-manager');
}
if (!isConnectionManagerEnabled()) {
toastr.warning('Enable the Connection Manager extension to use profile-based requests.');
} Type guard
function connectionManagerAvailable(): boolean {
return !SillyTavern.getContext().extensionSettings.disabledExtensions.includes('connection-manager');
} Try / catch
try { return await ConnectionManagerRequestService.sendRequest(id, prompt, 512); }
catch (e) {
if (e.message === 'Connection Manager is not available') { toastr.warning('Enable Connection Manager.'); return null; }
throw e;
} Prevention
- Check disabledExtensions before calling any ConnectionManagerRequestService method.
- Offer getSupportedProfiles() in a try/catch as a feature-detection probe before showing profile-based UI.
When it happens
Trigger: Calling ConnectionManagerRequestService.sendRequest(profileId, ...) while the user (or an admin policy) has disabled the Connection Manager extension. The check at line 423 fires before profile lookup.
Common situations: User disabled Connection Manager in Extensions panel; a migration or reset marked it disabled by default; conflict with a legacy connection extension that auto-disables it; calling the API from an extension that does not first check availability via getSupportedProfiles().
Related errors
- API type ${selectedApiMap.selected} does not support chat co
- API type ${selectedApiMap.selected} does not support text co
- Invalid argument for ${argName} provided. This is not a clos
- vLLM model is not set.
- Custom API URL is not set.
AI-assisted analysis of SillyTavern/SillyTavern@8172dcd0ee (2026-08-13).
Data as JSON: /api/errors/78254feb36919125.
Report an issue: GitHub.