RocketChat/Rocket.Chat · warning
AI search status unavailable
Error message
AI search status unavailable
What it means
The ai-search REST endpoint calls AISearch.status() (license module check + AI_Intelligent_Search_* settings + pipeline/provider config) before deciding whether to run intelligent search. When that status call itself rejects, the handler logs this warning and substitutes a status object with every intelligent-search flag false: the request still succeeds but is served as plain, non-intelligent search with an empty/degraded intelligent section.
Source
Thrown at apps/meteor/server/api/v1/ai-search.ts:258
response: {
200: aiSearchResponseSchema,
400: validateBadRequestErrorResponse,
401: validateUnauthorizedErrorResponse,
},
},
async function action() {
const query = this.queryParams.query.trim();
const requestedIntelligentCount = this.queryParams.intelligentCount ?? AI_SEARCH_PAGE_SIZE;
const intelligentLimit = Math.min(Math.max(Math.floor(requestedIntelligentCount), 1), MAX_INTELLIGENT_SEARCH_RESULTS);
const rid = this.queryParams.rid || undefined;
const rids = parseCommaList(this.queryParams.rids);
const roomNames = parseCommaList(this.queryParams.roomNames);
const fromUsername = this.queryParams.fromUsername || undefined;
const fromUsernames = parseCommaList(this.queryParams.fromUsernames);
const startDate = parseQueryDate(this.queryParams.startDate);
const endDate = parseQueryDate(this.queryParams.endDate);
const aiSearchStatus = await AISearch.status().catch((error) => {
this.logger.warn({ msg: 'AI search status unavailable', err: error });
return {
hasIntelligentSearchLicense: false,
intelligentSearchEnabled: false,
intelligentSearchConfigured: false,
answerGenerationConfigured: false,
};
});
let intelligentResults: AISearchResult[] = [];
if (
aiSearchStatus.hasIntelligentSearchLicense &&
aiSearchStatus.intelligentSearchEnabled &&
aiSearchStatus.intelligentSearchConfigured
) {
try {
intelligentResults = await AISearch.search({
query,
userId: this.userId,View on GitHub (pinned to b2c16d5842)
Solutions
- Inspect the err object in the log entry to see which subsystem (license vs settings) rejected
- Verify the workspace license is active and includes the AI/intelligent-search module
- Verify AI search settings are complete and the search backend is reachable from the app server
- Retry the request once startup/license state settles — the endpoint degrades gracefully, it does not return an error status
Defensive patterns
Strategy: fallback
Validate before calling
// client-side: check status before relying on intelligent results
const res = await fetch('/api/v1/ai-search.search?...');
const { intelligent, meta } = (await res.json()).data;
if (!meta.intelligentSearchEnabled || intelligent.length === 0) {
// degraded mode: fall back to ranking of the normal results
} Try / catch
const aiSearchStatus = await AISearch.status().catch((error) => {
logger.warn({ msg: 'AI search status unavailable', err: error });
return { hasIntelligentSearchLicense: false, intelligentSearchEnabled: false, intelligentSearchConfigured: false, answerGenerationConfigured: false };
}); Prevention
- Keep the license active and AI settings fully configured before enabling AI features for users
- Monitor the server log for this warn to detect license-backend outages early
- Design clients to treat meta.intelligentSearchEnabled=false or empty intelligent arrays as a normal degraded state
When it happens
Trigger: License.hasModule(AI_LICENSE_MODULE) rejecting because the licensing service/bridge is unavailable; the settings service throwing while reading AI_Intelligent_Search_Enabled or provider settings; transient internal errors while composing pipeline configuration during startup or license reload.
Common situations: Hitting the search endpoint while the license is being renewed or the licensing backend is unreachable; workspaces where AI settings are half-configured; calls racing server startup before services initialize.
Related errors
- AI search request failed
- error-action-not-allowed
- error-ai-not-enabled
- error-roomId-param-not-provided
- error-searchText-param-not-provided
AI-assisted analysis of RocketChat/Rocket.Chat@b2c16d5842 (2026-08-18).
Data as JSON: /api/errors/08bf6b306dd287bd.
Report an issue: GitHub.