actualbudget/actual · error · Error

The destination must not be a subdirectory of the current di

Error message

The destination must not be a subdirectory of the current directory

What it means

Error "The destination must not be a subdirectory of the current directory" thrown in actualbudget/actual.

Source

Thrown at packages/desktop-electron/index.ts:668

ipcMain.on('set-theme', (_event, theme: string) => {
  const obj = { theme };
  if (clientWin) {
    void clientWin.webContents.executeJavaScript(
      `window.__actionsForMenu && window.__actionsForMenu.saveGlobalPrefs({ prefs: ${JSON.stringify(obj)} })`,
    );
  }
});

ipcMain.handle(
  'move-budget-directory',
  async (_event, currentBudgetDirectory: string, newDirectory: string) => {
    try {
      if (!currentBudgetDirectory || !newDirectory) {
        throw new Error('The from and to directories must be provided');
      }

      if (newDirectory.startsWith(currentBudgetDirectory)) {
        throw new Error(
          'The destination must not be a subdirectory of the current directory',
        );
      }

      if (!fs.existsSync(newDirectory)) {
        throw new Error('The destination directory does not exist');
      }

      await cp(currentBudgetDirectory, newDirectory, {
        force: true,
        preserveTimestamps: true,
        recursive: true,
      });
    } catch (error) {
      logMessage(
        'error',
        `There was an error moving your directory:  ${String(error)}`,
      );

View on GitHub (pinned to d4334cb6e6)

When it happens

Trigger: Thrown at packages/desktop-electron/index.ts:668 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of actualbudget/actual@d4334cb6e6 (2026-08-29). Data as JSON: /api/errors/f1803b972e6f026f. Report an issue: GitHub.