musistudio/claude-code-router · warning
[export] Failed to include ${file}: ${formatError(error)}
Error message
[export] Failed to include ${file}: ${formatError(error)} What it means
While collecting data-export attachments, reading or stat'ing one candidate file failed and it is skipped with a warning; the export continues without it.
Source
Thrown at packages/electron/src/main/ipc.ts:980
function readDataExportFiles(): Array<{ base64: string; name: string; path: string; sizeBytes: number }> {
const files: Array<{ base64: string; name: string; path: string; sizeBytes: number }> = [];
for (const file of dataExportCandidateFiles()) {
try {
if (!existsSync(file)) {
continue;
}
const stat = statSync(file);
if (!stat.isFile()) {
continue;
}
files.push({
base64: readFileSync(file).toString("base64"),
name: path.basename(file),
path: file,
sizeBytes: stat.size
});
} catch (error) {
console.warn(`[export] Failed to include ${file}: ${formatError(error)}`);
}
}
return files;
}
function dataExportCandidateFiles(): string[] {
return uniqueStrings([
...sqliteDataFiles(APP_CONFIG_DB_FILE),
...LEGACY_APP_CONFIG_DB_FILES.flatMap(sqliteDataFiles),
...LEGACY_API_KEYS_DB_FILES.flatMap(sqliteDataFiles),
...sqliteDataFiles(REQUEST_LOGS_DB_FILE),
...sqliteDataFiles(USAGE_DB_FILE)
]);
}
function sqliteDataFiles(file: string): string[] {
return [file, `${file}-wal`, `${file}-shm`];
}View on GitHub (pinned to 99f24806c6)
Solutions
- Check the file still exists and is readable right before adding it to candidates
- Run export with sufficient permissions
- Exclude rotating/volatile directories from candidates
- Retry the export; transient deletion self-resolves
Defensive patterns
Strategy: validation
Validate before calling
const st = statSync(file); if (!st.isFile() || (st.mode & 0o400) === 0) continue; // then read
Type guard
const isReadableFile = (st: Stats): boolean => st.isFile();
Try / catch
catch (error) { console.warn(`[export] Failed to include ${file}`); } Prevention
- Snapshot candidate file list and re-stat before read
- Skip volatile/rotating dirs
When it happens
Trigger: dataExportCandidateFiles lists files (logs, databases) and one disappears between listing and readFileSync, has no read permission, or is a directory.
Common situations: Log rotation deleting files mid-export, permission-restricted files on macOS/Linux, or a symlink pointing to a missing target.
Related errors
- This browser automation session is observeOnly and cannot mu
- [export] Failed to process exported PNG: ${formatError(error
- [export] Failed to resize exported PNG fallback: ${formatErr
AI-assisted analysis of musistudio/claude-code-router@99f24806c6 (2026-08-27).
Data as JSON: /api/errors/92d72c5f31ea4a56.
Report an issue: GitHub.