chatboxai/chatbox · warning · FilePreprocessFailure
empty_attachment_content
empty_attachment_content
Error message
empty_attachment_content
What it means
FilePreprocessFailure with code empty_attachment_content, thrown from parseFileWithLocalFallback when the local parser returned no readable text and Chatbox AI fallback is disabled/unavailable. The check uses hasParsedText(result.content); empty or whitespace-only content with no fallback path yields this specific code so the UI can explain that the file has no extractable text.
Source
Thrown at src/renderer/stores/sessionHelpers.ts:421
function shouldFallbackToChatboxAI(options: LocalParserFallbackOptions): boolean {
return (
Boolean(options.forceChatboxAIFallback) || (options.allowChatboxAIFallback !== false && canFallbackToChatboxAI())
)
}
async function parseFileWithLocalFallback(
file: File,
uniqKey: string,
options: LocalParserFallbackOptions = {}
): Promise<{ content: string; storageKey: string; tokenCountMap: Record<string, number>; parserType: string }> {
try {
const result = await parseFileWithLocalParser(file, uniqKey)
if (!hasParsedText(result.content)) {
if (shouldFallbackToChatboxAI(options)) {
return await fallbackToChatboxAIParser(file, uniqKey, 'empty_content')
}
throw new FilePreprocessFailure(
EMPTY_ATTACHMENT_CONTENT_ERROR,
'local_parse',
new Error('Local parser returned empty content')
)
}
return result
} catch (error) {
log.error(`Local parsing failed for "${file.name}":`, error)
// Already classified (e.g. a storage-quota failure from the empty-content cloud
// fallback above) — propagate as-is instead of re-classifying or retrying.
if (error instanceof FilePreprocessFailure) {
throw error
}
// Encrypted or oversized PDFs cannot be recovered by the cloud parser either,
// so surface the specific error directly instead of wasting a fallback upload.
const errorCode = error instanceof Error ? error.message : ''View on GitHub (pinned to 81571269ad)
Solutions
- Enable Chatbox AI cloud fallback so empty local results retry with the cloud OCR-capable parser.
- Inform the user the file has no extractable text and suggest OCR/vision-capable model.
- Pre-screen attachments for known empty-content cases (zero-byte, image-only PDFs).
- Verify canFallbackToChatboxAI() returns true when a license and connectivity are present.
Example fix
// before
if (!hasParsedText(result.content)) {
if (shouldFallbackToChatboxAI(options)) {
return await fallbackToChatboxAIParser(file, uniqKey, 'empty_content')
}
throw new FilePreprocessFailure(EMPTY_ATTACHMENT_CONTENT_ERROR, 'local_parse', new Error('Local parser returned empty content'))
}
// after
if (!hasParsedText(result.content)) {
if (shouldFallbackToChatboxAI(options)) {
return await fallbackToChatboxAIParser(file, uniqKey, 'empty_content')
}
throw new FilePreprocessFailure(EMPTY_ATTACHMENT_CONTENT_ERROR, 'local_parse', new Error('Local parser returned empty content'))
} Defensive patterns
Strategy: fallback
Validate before calling
const result = await parseFileWithLocalParser(file, uniqKey)
if (!hasParsedText(result.content) && !shouldFallbackToChatboxAI(options)) {
// will throw empty_attachment_content; consider enabling fallback
} Type guard
function isEmptyAttachmentFailure(e: unknown): boolean {
return e instanceof Error && (e as { code?: string }).code === 'empty_attachment_content'
} Try / catch
try {
return await parseFileWithLocalFallback(file, uniqKey, options)
} catch (err) {
if (isEmptyAttachmentFailure(err)) {
notifyUser('This file has no extractable text. Try an OCR-capable model or cloud parser.')
return null
}
throw err
} Prevention
- Enable Chatbox AI cloud fallback so empty local results retry remotely.
- Pre-screen image-only PDFs / zero-byte files before parsing.
- Ensure canFallbackToChatboxAI() returns true when a license and connectivity exist.
When it happens
Trigger: Local parse succeeded (isSupported true, key present) but the extracted content is empty/blank: scanned PDF without OCR, image-only PDF, empty file, or a binary file the parser read as zero text. shouldFallbackToChatboxAI(options) is false (fallback disabled or canFallbackToChatboxAI() false).
Common situations: User attaches a scanned document or image-heavy PDF to a model that lacks OCR, an empty file, or cloud fallback turned off (offline, no license, admin-disabled).
Related errors
- local_parser_failed
- file_storage_quota_exceeded
- chatbox_ai_parser_failed
- Found ${limitedPaths.length} skill(s) in ${owner}/${repo} bu
- Failed to publish to VibeDrop (status ${status})
AI-assisted analysis of chatboxai/chatbox@81571269ad (2026-08-12).
Data as JSON: /api/errors/f82f3ca40996511e.
Report an issue: GitHub.