{"record":{"id":"a5bbdfe16b7c7faa","repo":"chatboxai/chatbox","slug":"command-safety-assessment-requires-system-message","errorCode":null,"errorMessage":"Command safety assessment requires system message support","messagePattern":"Command safety assessment requires system message support","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"src/renderer/packages/model-calls/command-explanation.ts","lineNumber":117,"sourceCode":"  return assessment.decision === 'approve' && assessment.riskFlags.length === 0\n}\n\nfunction formatCommandAssessment(assessment: CommandAssessment): string {\n  const indicator = isCommandAssessmentSafe(assessment) ? '✅' : '⚠️'\n  return `${assessment.summary}\\n${indicator} ${assessment.reason}`\n}\n\nexport async function generateCommandExplanation(\n  settings: SessionSettings,\n  command: string,\n  userContext: string,\n  onStreamUpdate?: (text: string) => void,\n  signal?: AbortSignal\n): Promise<CommandExplanationResult> {\n  throwIfAborted(signal)\n  const model = await createModel(settings)\n  if (!model.isSupportSystemMessage()) {\n    throw new Error('Command safety assessment requires system message support')\n  }\n  const language = languageNameMap[settingsStore.getState().getSettings().language] || 'English'\n  const messages = buildExplanationMessages(command, userContext, language)\n  const coreMessages = await convertToModelMessages(messages, { modelSupportVision: model.isSupportVision() })\n\n  const result = await model.chat(coreMessages, {\n    signal,\n    tools: commandAssessmentTools,\n    maxSteps: 1,\n  })\n  throwIfAborted(signal)\n  const assessmentCalls =\n    result.contentParts?.filter(\n      (part): part is MessageContentToolCallPart =>\n        part.type === 'tool-call' && part.toolName === COMMAND_ASSESSMENT_TOOL_NAME\n    ) ?? []\n  if (assessmentCalls.length !== 1) {\n    throw new Error('Command safety assessment tool was not called exactly once')","sourceCodeStart":99,"sourceCodeEnd":135,"githubUrl":"https://github.com/chatboxai/chatbox/blob/81571269addb6bafb589a920b2883f1e1e084fd1/src/renderer/packages/model-calls/command-explanation.ts#L99-L135","documentation":"Thrown by generateCommandExplanation() when the selected model reports it does not support system messages (model.isSupportSystemMessage() is false). The command-safety assessment pipeline depends on a system message to set instructions/tool semantics, so it cannot run on models lacking that capability.","triggerScenarios":"Selecting a model provider/variant that does not implement system-message support, then triggering command explanation/safety assessment. The guard is `if (!model.isSupportSystemMessage()) throw ...`.","commonSituations":"User switches to a local or older model that omits system role; a custom OpenAI-compatible endpoint whose model capabilities flag is misconfigured; using a model whose adapter did not advertise system-message support.","solutions":["Switch to a model that supports system messages (most OpenAI/Anthropic/Gemini models do).","If using a custom/OpenAI-compatible provider, ensure its capability flags report system-message support correctly.","Disable the command-explanation feature for models known to lack system support, rather than retrying."],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":"const model = await createModel(settings)\nif (!model.isSupportSystemMessage()) {\n  // disable command-explanation feature for this model; do not call generateCommandExplanation\n}","typeGuard":"function modelSupportsSystemMessages(model: { isSupportSystemMessage(): boolean }): boolean {\n  return model.isSupportSystemMessage()\n}","tryCatchPattern":"try {\n  await generateCommandExplanation(settings, command, ctx)\n} catch (e) {\n  if (e instanceof Error && e.message === 'Command safety assessment requires system message support') {\n    // fall back to running the command without the safety assessment, or pick another model\n  }\n}","preventionTips":["Gate the command-explanation UI on model.isSupportSystemMessage().","Maintain a known-compatible model list for agent/command-safety features.","Show the user which capability is missing when a model is selected."],"tags":["model","capability","agent","command-safety"],"backgroundTag":null,"analyzedSha":"81571269addb6bafb589a920b2883f1e1e084fd1","analyzedAt":"2026-08-12T21:51:44.981Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}